Lülitada LED sisse ainult siis, kui on vajutatud ainult üks nupp. Kui mõlemad või kumbki pole vajutatud – LED on väljas.
Funktsioonide selgitus:
🔧 setup()
- pinMode(…) määrab iga pordi töörežiimi:
- INPUT – loeme nupu väärtust.
- OUTPUT – saadame LED-le pinget.
🔁 loop()
- digitalRead(…) – kontrollib, kas nupp on vajutatud (LOW) või mitte (HIGH).
- Tingimus: cppCopyEditif (((button1State == LOW) || (button2State == LOW)) && !((button1State == LOW) && (button2State == LOW))) Объяснение:
- LED süttib, kui:
- üks nupp on vajutatud (LOW)
- mõlemad ei ole korraga vajutatud
- Kui mõlemad on vajutatud või kumbki ei ole vajutatud, LED kustub.
- LED süttib, kui:
⚙️ Töö põhimõte:
Kui kumbki pole vajutatud – LED jääb välja.
Kui vajutada ükskõik kumba nuppu eraldi – LED süttib.
Kui vajutada mõlemad korraga – LED jääb välja.
Fototakisti muudab oma takistust sõltuvalt valgusest:
Valgus → madalam takistus → kõrgem pinge A0.
Pimedas → suurem takistus → madalam pinge A0-l.
analoogRead(sensorPin) loeb valguse taset (0-1023).
map() + constrain() teisendab need väärtused vahemikku 0-255, et reguleerida LED-i heledust.
analoogWrite(ledPin, lightLevel) annab LED-i heleduse reguleerimiseks pulsilaiusega moduleeritud (PWM) signaali.
✅ manualTune()
Seadistab käsitsi valgustuse vahemiku:
vahemikus 300 (tume) kuni 800 (hele) → vahemikku 0-255.
autoTune() (ei kasutata, kuid saab lubada)
Reguleerib automaatselt tundlikkust, kasutades kõrgeid ja madalaid muutujaid.
Valgustugevus (väärtus vahemikus 0-1023) prinditakse iga sekundi tagant.
Näete, kuidas valgus muutub, kui liigutate oma kätt üle anduri.
Öölamp
const int ledPin = 9;
const int ldrPin = A0;
const int buttonPin = 2;
bool lightOn = false;
bool lastButtonState = HIGH;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
bool buttonState = digitalRead(buttonPin);
// Обработка нажатия (переключение состояния)
if (lastButtonState == HIGH && buttonState == LOW) {
lightOn = !lightOn;
delay(200); // антидребезг
}
lastButtonState = buttonState;
if (lightOn) {
int ldrValue = analogRead(ldrPin); // 0 (темно) до 1023 (ярко)
int brightness = map(ldrValue, 150, 0, 0, 255); // инвертируем
analogWrite(ledPin, brightness);
} else {
analogWrite(ledPin, 0);
}
}
Ühendusskeem:
LED:
- Anood (pikem jalg) → läbi takisti → pin 9 Arduino-l
- Katood → GND
Fotoresistor:
- Üks jalg → 5V
- Teine jalg → A0 ja läbi 10 kΩ takisti → GND
Nupp:
- Üks jalg → GND
- Teine jalg → pin 2 (kasutatakse INPUT_PULLUP režiimi)
Eesmärk:
See funktsioon kordub pidevalt. See kontrollib nupu olekut, muudab LED-i tööolekut ja reguleerib selle heledust vastavalt valguse tasemele.
Kasutatud funktsioonide kirjeldus
| Funktsioon | Kirjeldus |
| pinMode(pin, mode) | Määrab pinni töörežiimi: INPUT, OUTPUT või INPUT_PULLUP |
| digitalRead(pin) | Loeb digitaalse pinni väärtust (HIGH või LOW) |
| analogRead(pin) | Loeb analoogsignaali (väärtus vahemikus 0–1023) |
| analogWrite(pin, val) | Kirjutab PWM-signaali (väärtus 0–255) LED-i heledusreguleerimiseks |
| delay(ms) | Peatab programmi määratud ajaks (millisekundites) |
| map(val, in_min, in_max, out_min, out_max) | Kaardistab ühe väärtuse teise vahemikku (nt andurist LED-i heleduseks) |

