Build an automatic EagLED night light
Use two thresholds and remembered state to keep a light stable near the switching point.
Use two thresholds and remembered state to keep a light stable near the switching point.
Designed for the intact EagLED v1.2 with buzzer. Start with USB power; no cutting or sewing is required.
Step 1 — Prepare the intact EagLED
Use an intact black EagLED v1.2 with buzzer, a micro-USB data cable and a computer. The LEDs, button and light sensor are already connected by PCB traces. You do not need jumper wires, a breadboard, external resistors or a separate Arduino.
Keep the board uncut for this project. Place it on a dry, non-conductive surface. Leave the battery socket empty, connect USB and move the main board switch to ON. Move the separate switch beside the buzzer to OFF for quiet LED and sensor experiments.
The 3D view follows this starter program and its controls. It illustrates the mechanism; it does not execute changes made in the code editor or measure a connected board.
Step 2 — Explore the result in 3D
Lower the model reading below 300: both eyes turn on. Raise it above 450: both turn off. In between, they keep the previous state. Drag to orbit, inspect a named component, and use Top or Underside to follow the real board layout.
Step 3 — Program your EagLED
The English IDE below opens with Little Bird EagLED and Arduino C++ selected. Read the English instructions beside the supplied program, then press Verify to compile it for this board.
To program your physical board, download the same sketch below and open it in Arduino IDE. Install the Little Bird AVR board package, choose Little Bird EagLED and its USB port, then Verify and Upload. Follow the EagLED setup guide if this is your first upload. Upload replaces the factory light pattern.
EagLED uses an ATmega32U4 at 8 MHz. Do not choose Uno or a 16 MHz Leonardo profile. Its USB port can change while the bootloader is active. If upload fails, check the selected port and retry after pressing the centre board’s reset button. The triangular project button is not reset. Close any browser serial connection before uploading from Arduino IDE.
Step 4 — Keep a copy of the complete program
const byte LIGHT_PIN = A9;
const byte LEFT_EYE = 3;
const byte RIGHT_EYE = 10;
const int DARK_BELOW = 300;
const int BRIGHT_ABOVE = 450;
bool eyesOn = false;
void setup() {
pinMode(LEFT_EYE, OUTPUT);
pinMode(RIGHT_EYE, OUTPUT);
Serial.begin(9600);
}
void loop() {
int light = analogRead(LIGHT_PIN);
if (light < DARK_BELOW) eyesOn = true;
else if (light > BRIGHT_ABOVE) eyesOn = false;
digitalWrite(LEFT_EYE, eyesOn ? HIGH : LOW);
digitalWrite(RIGHT_EYE, eyesOn ? HIGH : LOW);
Serial.print("light:"); Serial.print(light);
Serial.print(",eyes:"); Serial.println(eyesOn ? 1 : 0);
delay(50);
}
This is the same complete Arduino C++ program used by the English IDE. Copy it or download the .ino file.
Step 5 — Understand the program
This is hysteresis: different thresholds for turning on and turning off. eyesOn is stored outside loop(), so it remembers the last decision. Between the thresholds, neither assignment runs.
if (light < DARK_BELOW) eyesOn = true;
else if (light > BRIGHT_ABOVE) eyesOn = false;The strict comparisons mean exactly 300 and exactly 450 also retain the previous state. The two output commands always update both eyes. Thresholds are ADC counts, not percentages; calibrate them using your actual covered and uncovered readings.
Step 6 — Work through one case
| Reading | Previous eyesOn | New eyesOn | Reason |
|---|---|---|---|
| 650 | false | false | Above 450 |
| 250 | false | true | Below 300 |
| 375 | true | true | Neither condition |
| 500 | true | false | Above 450 |
| 375 | false | false | Neither condition |
Step 7 — Test it on your board
Lower the model reading below 300: both eyes turn on. Raise it above 450: both turn off. In between, they keep the previous state.
Check the physical output after uploading. Successful compilation confirms syntax and board compatibility; the 3D illustration cannot confirm your board’s USB connection or electrical operation.
Step 8 — See readings from your real EagLED
After upload, open the serial connection here. The labelled values come from your actual board. A9 readings are 10-bit ADC counts (0–1023), not lux; voltage uses an approximate 3.3 V reference.
Step 9 — Predict, change and compare
Predict the result of 250 → 375 → 500 → 375 before moving the slider. Then use your physical covered/uncovered readings to choose DARK_BELOW and BRIGHT_ABOVE between those levels, with DARK_BELOW smaller. Keep the board position fixed and slowly move the same card ten times. Record whether the eyes flicker near either threshold.
Check your reasoning after trying it
The states are on → on → off → off. The repeated 375 has different results because history matters. Two separated thresholds reduce chattering from small reading fluctuations; they cannot repair a disconnected sensor.
Step 10 — Find and fix a problem
Always on or always off: inspect real serial counts before choosing thresholds. Flicker: keep a reasonable gap, and check that light from the eyes or your moving hand is not changing the sensor unexpectedly.
Nothing responds: check the main switch, the power indicator and a known data-capable USB cable. Confirm the EagLED board profile and USB port. If the board has already been snipped apart, its original connections are broken: follow a separate sewable wiring project before using this intact-board sketch.
Step 11 — Keep exploring
Continue through the EagLED experiments or open the full board explorer. The original EagLED schematic and manufacturing files document the pin connections.
Parts List
Required Parts (1)
Keep the board intact. Also bring a micro-USB data cable and computer. No additional sensor, LED, Arduino or breadboard is required.
x1
$34.35
In stockProject Summary
1 part total
Unavailable items will be skipped