18. Detektor stmievania pomocou Arduino
Cieľom cvičenia je zostrojiť a naprogramovať detektor stmievania, ktorý dokáže rozpoznať pokles intenzity svetla v čase, nie iba stav „svetlo / tma“.
Žiak sa naučí:
- pracovať s analógovým senzorom,
- čítať hodnoty zo senzora pomocou Arduino,
- rozlišovať medzi okamžitou hodnotou a zmenou v čase,
- pochopiť princíp jednoduchého trendového detektora.
🧰 Použité súčiastky
- Arduino UNO
- Modul fotorezistora (LDR – Photoresistor sensor) zo sady Keyestudio KS0068
- Prepojovacie vodiče
- (voliteľne) LED dióda – alebo vstavaná LED na pine 13
🔍 Použitý senzor
Použitý je modul s fotorezistorom (LDR), ktorý mení svoj odpor v závislosti od intenzity dopadajúceho svetla.
Modul obsahuje:
- fotorezistor (LDR),
- komparátor LM393,
- analógový výstup AO,
- digitálny výstup DO (v tomto cvičení nepoužívame).
🔌 Zapojenie
Zapojenie vykonajte podľa tabuľky:
| Modul LDR | Arduino UNO |
|---|---|
| VCC | 5V |
| GND | GND |
| AO | A0 |
Poznámka: Digitálny výstup DO zatiaľ nezapájame.
🧪 Úloha 1: Meranie intenzity svetla
Najskôr si overíme, že senzor funguje a správne reaguje na zmenu svetla.
Program – čítanie analógovej hodnoty
const int LDR = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int light = analogRead(LDR);
Serial.println(light);
delay(200);
}
Postup:
- Nahraj program do Arduino.
- Otvor Serial Monitor.
- Sleduj hodnoty pri:
- zakrytí senzora rukou,
- osvetlení mobilom,
- postupnom tienení.
Pozorovanie:
- viac svetla → vyššia hodnota,
- menej svetla → nižšia hodnota.
🧠 Úloha 2: Detekcia stmievania
V tejto úlohe budeme sledovať zmenu hodnoty v čase a rozpoznať, že svetlo klesá.
Program – detektor stmievania
const int LDR = A0;
const int LED = 13;
int lastValue = 0;
unsigned long lastTime = 0;
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
lastValue = analogRead(LDR);
lastTime = millis();
}
void loop() {
int current = analogRead(LDR);
unsigned long now = millis();
int delta = current - lastValue;
if (delta < -30 && (now - lastTime) < 1000) {
digitalWrite(LED, HIGH);
Serial.println("STMIAVANIE");
} else {
digitalWrite(LED, LOW);
}
lastValue = current;
lastTime = now;
delay(200);
}
💡 Vysvetlenie princípu
Program:
- porovnáva aktuálnu hodnotu s predchádzajúcou hodnotou,
- sleduje, či hodnota klesá dostatočne rýchlo,
- reaguje iba na zmenu, nie na samotnú tmu.
➡️ LED sa rozsvieti len vtedy, keď dochádza k stmievania.
🧠 Dôležitá myšlienka
Detektor stmievania nerozhoduje podľa jednej hodnoty, ale podľa správania signálu v čase.
⭐ Rozšírenie (pre rýchlejších žiakov)
- Použiť výstup DO a nastaviť prah pomocou trimra.
- Vypísať hodnoty do Serial Plotter a zobraziť graf.
- Porovnať detekciu stmievania s jednoduchým prahovým detektorom.
❓ Kontrolné otázky
- Aký je rozdiel medzi analógovým a digitálnym výstupom senzora?
- Prečo nestačí sledovať iba jednu hodnotu svetla?
- Kde sa podobný princíp používa v technickej praxi?
1) Schéma zapojenia (LDR modul → Arduino UNO)
Spoje:
- VCC (modul) → 5V (Arduino)
- GND (modul) → GND (Arduino)
- AO (modul) → A0 (Arduino)
Voliteľne (indikácia na breadboarde):
- LED + rezistor (220–330 Ω):
- D8 (Arduino) → rezistor 220–330 Ω → anóda LED (dlhá noha)
- katóda LED (krátka noha) → GND
(môžeš použiť aj vstavanú LED na D13 a tento krok vynechať)
2) ASCII „schéma“ pre ovy.sk (ľahko kopírovateľná)
Arduino UNO Breadboard / Modul LDR
----------- --------------------------
5V ----------------> VCC (LDR modul)
GND ----------------> GND (LDR modul)
A0 ----------------> AO (LDR modul)
(Voliteľne LED)
D8 --> [220Ω] --> |>| --> GND
LED
3) Postup zapojenia na breadboard (krok za krokom)
A) Napájacie lišty breadboardu
- Arduino 5V pripoj na + lištu breadboardu (červená).
- Arduino GND pripoj na – lištu breadboardu (modrá).
B) LDR modul
- Zasuň LDR modul do breadboardu tak, aby tri piny boli v troch rôznych riadkoch (nie v jednej spojenej lište).
- Prepoj:
- pin VCC z modulu na + lištu,
- pin GND z modulu na – lištu,
- pin AO z modulu na riadok, z ktorého ide vodič do A0 na Arduine.
C) Voliteľná LED na breadboarde
- Vlož LED do breadboardu (dlhá noha = anóda).
- Daj rezistor 220–330 Ω do série:
- D8 → rezistor → anóda LED
- katóda LED → – lišta (GND)
4) Najčastejšie chyby (aby si ich hneď odchytil)
- Modul je zasunutý tak, že piny sú v jednej rade → potom je VCC spojené s GND a nič nefunguje.
- Zamenené AO/DO → musí byť AO do A0.
- LED otočená opačne → nesvieti (dlhá noha má ísť cez rezistor na pin).
5) Krátky test (bez zmeny kódu)
Po zapojení spusti predchádzajúci program a v Serial Monitore:
- zakry senzor → hodnota klesne,
- zasvieť mobilom → hodnota stúpne.


