Это изображение имеет пустой атрибут alt; его имя файла - image-17.png

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.

⚙️ 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.

Это изображение имеет пустой атрибут alt; его имя файла - image.png

Это изображение имеет пустой атрибут alt; его имя файла - image-1.png

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

Это изображение имеет пустой атрибут alt; его имя файла - image-6.png

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

FunktsioonKirjeldus
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)