Dự án có sẵn · Arduino Uno R3

Đèn ngủ với Arduino Uno

Một đèn sáng dần lên khi chân cảm biến chuyển sang tối, với một nút nhấn đóng vai cảm biến ánh sáng. Toàn bộ mạch, gồm một Arduino Uno và 5 linh kiện khác, chạy ngay trong trình duyệt của bạn với firmware bên dưới; mở nó trong trình soạn thảo để đổi cách nối dây hoặc code rồi chạy lại.

Đang dạy học? Giao bài này cho lớp của bạn chỉ với một cú nhấp.

Cơ bản Chạy trong trình duyệt của bạn. Miễn phí, không cần tài khoản.

Linh kiện bán lẻ khoảng $32. Trên Mokxi thì miễn phí.

Đèn ngủ · Arduino Uno R3live0.000 s 0.00x
Giữ nút nhấn
Chính mạch đó, đang chạy ở đây trên trình mô phỏng. Nhấn những gì nhấn được; nhấp vào chỗ khác để mở trong trình soạn thảo.

Code

Firmware y như khi trình soạn thảo mở ra. Sửa một dòng ở đó và nhấn Chạy: nó được biên dịch ngay trong trình duyệt.

sketch.ino · Arduino Uno R3
// Night light: the lamp fades up when it goes dark and down when it is light.
//
//   pin 2  the light sensor, to GND, internal pull-up
//   pin 9  the lamp, through 220 ohm to GND
//   pin 8  the indicator, through 220 ohm to GND
//
// The sensor here is a pushbutton, standing in for the light-dependent
// resistor a real night light has. Mokxi has an LDR part, but a button is
// easier to hold, and the two behave the same way as far as the sketch is
// concerned: the pin is high while there is light and low while there is not.
// Hold the button and the room is dark.
//
// The lamp is on pin 9, which is one of the ATmega328P's PWM outputs, so
// analogWrite can give it any brightness from 0 to 255. It walks there rather
// than jumping: a night light that snaps on is a torch, and the ramp is what
// makes it a night light. Eight counts every twenty milliseconds is about six
// tenths of a second end to end.
//
// The indicator on pin 8 is a plain digital output and says what the sensor is
// reading right now, so you can see the input and the output disagree while
// the lamp is still on its way.

const int SENSOR = 2;
const int LAMP = 9;
const int INDICATOR = 8;

const int STEP = 8;
const int FULL = 255;

int level = 0;

static bool dark() { return digitalRead(SENSOR) == LOW; }

void setup() {
  pinMode(SENSOR, INPUT_PULLUP);
  pinMode(LAMP, OUTPUT);
  pinMode(INDICATOR, OUTPUT);
  analogWrite(LAMP, 0);
  Serial.begin(115200);
  Serial.println("Mokxi Arduino Uno: night light");
  Serial.println("the button stands in for a light sensor: hold it for dark");
}

void loop() {
  bool night = dark();
  digitalWrite(INDICATOR, night ? HIGH : LOW);

  int want = night ? FULL : 0;
  if (level < want) {
    level += STEP;
    if (level > want) {
      level = want;
    }
  } else if (level > want) {
    level -= STEP;
    if (level < want) {
      level = want;
    }
  }
  analogWrite(LAMP, level);

  static int said = -1;
  if (level == want && level != said) {
    said = level;
    Serial.print(night ? "dark: lamp at " : "light: lamp at ");
    Serial.println(level);
  }

  delay(20);
}

Danh sách linh kiện

7 linh kiện, cộng thêm dây cắm. Bán lẻ khoảng $32; trên Mokxi thì miễn phí.

Cách nối dây

6 mối nối, từng chân một, đọc ra từ chính mạch. Mỗi dòng là một nhóm chân được nối với nhau, bằng dây cắm hoặc một dải trên breadboard.

  • GND: Arduino Uno R3 chân GND; Nút nhấn chân 2a; LED, vàng chân C; LED, trắng chân C
  • Arduino Uno R3 chân 9; Điện trở, 220 Ω (1) chân 1
  • Arduino Uno R3 chân 8; Điện trở, 220 Ω (2) chân 1
  • Arduino Uno R3 chân 2; Nút nhấn chân 1a
  • Điện trở, 220 Ω (1) chân 2; LED, vàng chân A
  • Điện trở, 220 Ω (2) chân 2; LED, trắng chân A

Sửa và giữ lại

Mở trong trình soạn thảo, đổi mạch hoặc code, và giữ phiên bản của bạn trong một tài khoản miễn phí.