Skip to content
2026.01.24.
  • F
  • X
  • LinkedIn
  • YouTube
  • Instagram
  • GitHub
TavIR

TavIR

Mikrokontroller világ

  • TavIR Tudástár
  • TavIR WebShop
  • TavIR Fórum
  • Hírek
  • Könyvek
    • Egyszerű elektronika – Kezdőlap
    • ESP8266/ESP32
    • Tippek
      • Tippek-trükkök (AVR)
      • Tippek-trükkök (ESP8266/ESP32)
  • +Gyorstippek
  • +Mélyvíz
  • +Témakereső
  • Kapcsolat
  • Főoldal
  • Cikk
  • Fényérzékelés fotoellenállással és környezeti megvilágításszabályzás
  • Cikk
  • Gyorstippek

Fényérzékelés fotoellenállással és környezeti megvilágításszabályzás

Robert 2025.01.22.
Egy modern okosotthon külső világítása Arduino alapú automatikus fényvezérléssel, amely érzékelők és mikrokontroller segítségével működik.

Az Arduino és a fotoellenállás (LDR) segítségével egyszerűen és hatékonyan mérhetjük a környezeti fényviszonyokat. Ez a cikk részletesen bemutatja, hogyan építhetsz egy fényérzékelő rendszert, amely automatikusan kapcsolja a világítást, figyelembe véve a hiszterézis és a fényerő-szabályozás alapelveit. Ha dugdosós panelnél gyorsabb és stabilabb megoldásra van szükséged – a fotoellenállás modul kerül képbe – amely megkönnyíti az Arduino-val való munkát. Részletes áramköri rajzokkal, Arduino programkódokkal és magyarázatokkal vezetlek végig az automatikus világításvezérlés lépésein.

A cikkben egy fejlett világításvezérlő rendszert is bemutatok, amely nem csupán a fényviszonyokhoz igazodik, hanem fokozatosan növeli a LED fényerejét és a Serial Plotter segítségével valós időben is elemezhető. És még 1-2 megoldási trükk is terítékre kerül.

Tartalomjegyzék

Toggle
  • Fotoellenállás modul használata – az egyszerűbb és gyorsabb megoldás
    • A fotoellenállás modul előnyei
    • A fotoellenállás modul bekötése Arduino laphoz
  • Fényérzékelés Arduinoval – Automatikus esti világítás fényérzékelővel
    • Áramköri összeállítás
    • Arduino programkód – Fényerő vezérlése félhomályban és sötétben
  • Egyszerű ki-/bekapcsolásra redukált program
    • Mikor és miért lehet hasznos a ki-bekapcsolós világításvezérlés?
    • De hogyan működik a ki-bekapcsolós világításvezérlő?
  • PIR bővítéssel készített világítás
    • …mi az a PIR mozgásérzékelő és hogyan működik?
    • Működési logika
    • Miért hasznos ez a rendszer?
  • Összegzés
    • Milyen további fejlesztési lehetőségek vannak?

Fotoellenállás modul használata – az egyszerűbb és gyorsabb megoldás

A fotoellenállás (LDR) egy rendkívül hasznos eszköz a fényintenzitás mérésére, de a hagyományos áramköri összeállítás – amely különálló fotoellenállást és járulékos ellenállást igényel – olykor időigényes és hibalehetőségekkel erősen terhelt megoldásra vezet. Ha gyorsabb, kompaktabb és könnyebben kezelhető megoldást keresel, akkor léteznek fotoellenállás modulok, amelyek egy egyszerűbb csatlakozási lehetőséget kínálnak. Ezek gyárilag tartalmazzák a fotoellenállást és a szükséges kiegészítő ellenállást valamint egy nyáklapra szerelt csatlakozósort, amelynek segítségével gyorsan és precízen illeszthetők az Arduino rendszerhez. A használatukkal elkerülhető a különálló alkatrészekkel való bajlódás, így különösen ajánlottak gyors prototípus-fejlesztéshez, oktatási célokra, vagy ha megbízható és stabil megoldásra van szükség.

Fényérzékelő modul, amely egy fotoellenállást (LDR) és egy ellenállást tartalmaz, három kivezetéssel az áramkörhöz való csatlakoztatáshoz.
Fényérzékelő modul, amely egy fotoellenállást (LDR) és egy ellenállást tartalmaz, három kivezetéssel az áramkörhöz való csatlakoztatáshoz. (KY-018 típusszám)

A fotoellenállás modul előnyei

  1. Gyors és egyszerű csatlakozás: A modul három kivezetéssel rendelkezik – GND (GND – föld) / VCC (+ – tápfeszültség) /  OUT (S – kimenet) –, amelyeket közvetlenül az Arduino megfelelő csatlakozóihoz lehet kötni, megkönnyítve a bekötést és az áramköri tervezést.
  2. Stabil és megbízható működés: A gyárilag kalibrált ellenállások és precíz forrasztási pontok biztosítják a pontos működést és minimalizálják az áramköri zajokat vagy bekötési hibákat.
  3. Időtakarékosság: Mivel az összes szükséges alkatrész egyetlen modulon található, a hagyományos vezetékes vagy breadboard-os összeállítással szemben jelentős időt takaríthatsz meg.
  4. Hibamentes megoldás kezdők számára: Az előre gyártott modulok kiküszöbölik az alkatrészválasztásból vagy pontatlan/helytelen bekötésből adódó hibalehetőségeket.

A fotoellenállás modul bekötése Arduino laphoz

A modul használata rendkívül egyszerű, mindössze három vezeték szükséges a csatlakoztatásához:

  1. VCC (tápfeszültség): Kösd az Arduino 5V kimenetére.
  2. GND (földelés): Csatlakoztasd az Arduino GND lábához.
  3. OUT (kimenet): Kösd az Arduino A1 analóg bemenetére, ahol az érzékelt fényintenzitás alapján feszültségmérés történik.
Egy Arduino Uno mikrokontrollerhez csatlakoztatott fényérzékelő modul, amely egy fotoellenállást (LDR) tartalmaz. A kábelek a tápellátást (5V és GND) és az analóg bemenetet (A1) kötik össze az érzékelő modullal.
Egy Arduino Uno mikrokontrollerhez csatlakoztatott fényérzékelő modul, amely egy fotoellenállást (LDR) tartalmaz. A kábelek a tápellátást (5V és GND) és az analóg bemenetet (A1) kötik össze az érzékelő modullal.

Az előző cikkben (ami a →Fényérzékelés fotoellenállással oldalon található) – az ott leírt programkódok ezzel a moduláris fotoellenállással is használhatóak.

Fényérzékelés Arduinoval – Automatikus esti világítás fényérzékelővel

Az intelligens világításvezérlés egy rendkívül hasznos alkalmazása a fényérzékelésnek. Ebben a fejezetben megvalósítunk egy olyan megoldást, amely egy fotoellenállás segítségével vezérli egy LED fényerejét az esti és félhomályos órákban. A rendszer a következő funkciókat fogja ellátni:

  • Automatikus világítás kapcsolás: A LED bekapcsol, ha a környezet fényszintje egy beállított érték alá csökken.
  • Hiszterézis alkalmazása: Megakadályozza a villogást a határérték közelében.
  • Fényerő fokozatos növelése: A környezet sötétségi szintjétől függően fokozatosan növekszik a LED fényereje.
  • Paraméterezhetőség: A küszöbértékek és az érzékenység a kód elején módosíthatóak.

Áramköri összeállítás

A projekt elkészítéséhez a következőkre lesz szükséged:

Arduino UNO alappanel→ Arduino Uno alaplap: Ez fogja kezelni az érzékelőt.
Egy piros színű Keyes LED modul, amely egy nagy fényerejű fehér LED-et tartalmaz, valamint két csatlakozót és néhány SMD alkatrészt.→ LED modul (3W fehér): A megvilágítást adó részegység
Fényérzékelő modul fotoellenállással és három kivezetéssel.→ Fotoellenállás modul: A szenzorkészletek részeként is elérhető.
Egy háromeres szervo hosszabbító kábel, amely piros, fekete és sárga vezetékekből áll, mindkét végén hárompines csatlakozóval.→ Dupont összekötő kábelek (apa-apa/apa-anya/anya-anya).
Fehér prototípus panel (breadboard) piros és kék tápsínek jelölésével→ Breadboard – a könnyű csatlakoztatáshoz.

Bekötési lépések

  1. Ha a közvetlen kábelezés nm járható út, akkor a BreadBoard is használható a könnyebb megépítéshez.
  2. A fotoellenállás-modult csatlakoztasd az Arduino 5V és GND tápfeszültségéhez.
  3. A fotoellenállás modul szenzorkimenetét (az LDR és ellenállásközös pontja) csatlakoztasd az A1 analóg bemenetre.
  4. A LED modult csatlakoztasd az Arduino 5V és GND tápfeszültségéhez
  5. A LED modul vezérlését kösd az Arduino egyik PWM kimenetére (itt: D9 kivezetés).
Egy Arduino Uno mikrokontroller kapcsolási rajza, amelyhez egy fotoellenállás és egy LED modul csatlakozik különböző színű vezetékekkel.
Egy Arduino Uno mikrokontroller kapcsolási rajza, amelyhez egy fotoellenállás és egy LED modul csatlakozik különböző színű vezetékekkel.

Tipp: Ha a fotoellenállás modult közvetlenül az A1-S , A2-5V, A3-GND kivezetésekre helyezzük, akkor az A2 és A3 kivezetéseket egyszerű digitális kimenetekként a GND és a +5V feszültségre állíthatjuk – így megúszható a kábelezés és a modul tápellátását biztosítjuk.

Arduino programkód – Fényerő vezérlése félhomályban és sötétben

Az alábbi program automatikusan vezérli a LED fényerejét a környezeti fényviszonyoknak megfelelően.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// --- Beállítható paraméterek ---
#define DARK_THRESHOLD 230      // A sötétben mért fotoellenállás analóg értéke (PWM = 255)
#define TURN_OFF_THRESHOLD 840  // A világosban mért fotoellenállás értéke (PWM = 0)
#define LED_PIN 9               // LED kimeneti láb (PWM)
#define LDR_PIN A1              // Fotóellenállás bemeneti láb
#define DELAY_TIME 100          // Mérési ciklus késleltetés (ms)
 
void setup() {
  pinMode(LED_PIN, OUTPUT);     // LED kimenet beállítása
  Serial.begin(9600);           // Soros kommunikáció indítása
}
 
void loop() {
  int lightValue = analogRead(LDR_PIN);  // Fényintenzitás beolvasása
  int brightness = 0;           // LED alapértelmezett fényereje
 
  // A LED fényerejének skálázása a sötét és világos határértékek között
  brightness = map(lightValue, TURN_OFF_THRESHOLD, DARK_THRESHOLD, 0, 255);
  brightness = constrain(brightness, 0, 255);  // Határok között tartás
 
  analogWrite(LED_PIN, brightness);  // LED fényerejének beállítása
 
  // Soros monitor kiírás a teszteléshez
  Serial.print("Feny:"); Serial.print(lightValue);
  Serial.print("\tLED:"); Serial.print(brightness);
  Serial.print("\tMin:"); Serial.print(TURN_OFF_THRESHOLD);
  Serial.print("\tMax:"); Serial.println(DARK_THRESHOLD);
 
  delay(DELAY_TIME);            // Mérési ciklus késleltetése
}

Rövid működési összefoglaló

1. Beolvassa a fényintenzitást a fotoellenállásról (analogRead()).
2. A LED fényerejét beállítja a mért fényérték alapján:

  • Sötétben (DARK_THRESHOLD) → LED teljes fényerő (PWM = 255)
  • Világosban (TURN_OFF_THRESHOLD) → LED kikapcsol (PWM = 0)
  • Köztes értékeknél → A LED fényereje arányosan változik.

3. A map() függvény átalakítja az analóg beolvasott értéket 0-255 PWM tartományba.
4. A constrain() biztosítja, hogy a PWM értékek mindig a 0-255 tartományban maradjanak.
5. A LED aktuális fényerejét az analogWrite() állítja be.
6. A soros monitor kiírja az aktuális fényértéket és a LED állapotát.

Tipp: ha a programot feltöltjuk az Arduino lapra, akkor
– letakarva a fényérzékelő ellenállást a soros monitoron leolvashatjuk a minimum analóg értéket (DARK_THRESHOLD)
– elvéve a kezünket és a ellenállást fényt kapva a soros vonalon a határértéket olvashatjuk le, ahol a LED-nek már nem kell világítania (TURN_OFF_THRESHOLD)

Ha a DARK_THRESHOLD és a TURN_OFF_THRESHOLD értékeket ~10-15 értékkel csökkentjük, akkor biztosabb kapcsolási / billenési értékeket állíthatunk be.

A beállított billenési értékek és a mért megvilágításérték és a LED adatai.
A beállított billenési értékek és a mért megvilágításérték és a LED adatai.

A programhoz tartozó adatok vizualizálhatók az Arduino Serial Plotter funkciójával. Ehhez egyszerűen nyisd meg az Eszközök → Soros plotter menüpontot… Az eredmény valami hasonló lesz: ha a fényérzékelőt kitakarod illetve megvilágítod.
Ha a beállítás után a programot újrafordítjuk és feltöltjük, akkor a →Serial Plotter segítségével nagyon jól követhető a program működése.

A nyers adatok grafikonon ábrázolva...
A nyers adatok grafikonon ábrázolva…

Egy Arduino Uno mikrokontroller kapcsolási rajza, amelyhez egy fotoellenállás és egy LED modul csatlakozik különböző színű vezetékekkel.

Egyszerű ki-/bekapcsolásra redukált program

A világításvezérlés egyik legfontosabb kérdése, hogy a rendszer miként reagál a környezeti fényviszonyok változásaira. A mostani cél egy olyan automatizált megoldás, amely sötétben azonnal bekapcsol, viszont világosban nem kapcsol ki rögtön, hanem kivár egy beállított időtartamot, hogy elkerülje a felesleges ki-bekapcsolásokat. Ez a logika különösen hasznos lehet kültéri világítás esetén, ahol egy rövid fényvillanás – például egy autó fényszórója vagy egy felhők közül előbújó napsugár – nem indokolja a lámpák azonnali kikapcsolását. Ugyanakkor a rendszer képes azonnal reagálni a sötétedésre, így a világítás pontosan akkor kapcsol be, amikor arra valóban szükség van.

Mikor és miért lehet hasznos a ki-bekapcsolós világításvezérlés?

Az előző fejezetben bemutatott PWM-alapú fényerőszabályozás olyan helyzetekben hasznos, amikor fokozatos átmenetet szeretnénk elérni a világítás fényerejében. Ez jó megoldás lehet például beltéri hangulatvilágításhoz vagy olyan alkalmazásokhoz, ahol a LED-ek fokozatos halványítása és felerősítése vizuálisan kellemesebb. Ezzel szemben a ki-bekapcsolós megoldás egy egyszerűbb, de sok esetben hatékonyabb világításvezérlési logika. Az alábbi esetekben kifejezetten előnyös:

Kültéri világítás automatizálása

  • A LED azonnal bekapcsol, ha besötétedik – nincs lassú átmenet, azonnali reakció van.
  • Ha a fényviszonyok gyorsan változnak (például egy felhő elhalad a hold előtt, vagy egy autó fényszórója megvilágítja a szenzort), a lámpa nem kapcsol ki rögtön, hanem kivárja, hogy a világosság tartósan fennáll-e.

Biztonsági világítás és vészhelyzeti fények

  • Egy áramszünet vagy hirtelen fényviszony-változás esetén a világítás azonnal aktiválódik.
  • Nem kell attól tartani, hogy egy rövid világos impulzus (például egy mozgás közbeni fényvisszaverődés) kikapcsolja a fényt.

Garázs- és bejárati világítások

  • Ha valaki este beáll az autóval a garázsba, a fény azonnal felkapcsol, így biztosítja a megfelelő látási viszonyokat.
  • A rendszer nem kapcsolja le rögtön a világítást, ha az autó reflektora egy pillanatra megvilágítja a szenzort – ehelyett kivárja, hogy valóban világos marad-e a környezet.

De hogyan működik a ki-bekapcsolós világításvezérlő?

A rendszer működésének alapját – még mindig – egy fotoellenállás (LDR) adja, amely folyamatosan figyeli a környezeti fényviszonyokat.

  1. Ha a mért fényintenzitás egy adott határérték (DARK_THRESHOLD) alá csökken, a LED azonnal bekapcsol.
  2. Ha a mért fényérték egy másik határérték (TURN_OFF_THRESHOLD) fölé emelkedik, akkor a rendszer nem kapcsolja ki azonnal a fényt, hanem indít egy időzítőt.
  3. Ha a világos állapot folyamatosan fennáll egy beállított időtartamig (pl. 5 másodpercig), a LED kikapcsol.
  4. Ha közben a fényérték visszacsökken a sötét tartományba, az időzítő újraindul, és a fény továbbra is égve marad.

A logika célja az, hogy a világítás ne kapcsoljon le egy-egy rövid fényvillanás miatt, hanem csak akkor, ha valóban tartósan világos van.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// --- Beállítható paraméterek ---
#define DARK_THRESHOLD 270         // A sötétben mért fotoellenállás értéke (LED bekapcsolás)
#define TURN_OFF_THRESHOLD 800     // A világosban mért fotoellenállás értéke (LED kikapcsolási küszöb)
#define LED_PIN 9                  // LED vagy relévezérlő kimenet
#define LDR_PIN A1                 // Fotoellenállás bemeneti láb
#define DELAY_TIME 100             // Mérési ciklus késleltetés (ms)
#define LIGHT_STABLE_TIME 5000     // Kikapcsolási idő (5 másodperc világos után)
 
unsigned long lightStartTime = 0;  // A világos környezet kezdő időpontja
bool ledState = false;             // LED állapota (bekapcsolva/kikapcsolva)
 
void setup() {
  pinMode(LED_PIN, OUTPUT);        // LED kimenet beállítása
  Serial.begin(9600);              // Soros kommunikáció indítása
}
 
void loop() {
  int lightValue = analogRead(LDR_PIN);  // Fényintenzitás beolvasása
  
  // Ha sötét van, azonnal kapcsoljon be a LED
  if (lightValue <= DARK_THRESHOLD) {
    ledState = true;               // Bekapcsolás
    lightStartTime = millis();     // Időzítő újraindítása
  }
  
  // Ha világos van, számolja az időt és csak akkor kapcsoljon ki, ha 5 másodpercnél tovább világos
  else if (lightValue >= TURN_OFF_THRESHOLD) {
    if (lightStartTime == 0) {     // Ha először észlel világosságot, jegyezze meg az időpontot
      lightStartTime = millis();
    }
    if (millis() - lightStartTime >= LIGHT_STABLE_TIME) {  // Ha folyamatosan világos 5 másodpercig
      ledState = false;            // Kikapcsolás
    }
  } else {
    lightStartTime = millis();     // Ha a fényviszony változik, időzítő újraindítása
  }
 
  // LED állapotának frissítése
  digitalWrite(LED_PIN, ledState ? HIGH : LOW);
 
  // Soros monitor kiírás a teszteléshez
  Serial.print("Feny:"); Serial.print(lightValue);
  Serial.print("\tLED:"); Serial.print(ledState ? "ON" : "OFF");
  Serial.print("\tMin:"); Serial.print(TURN_OFF_THRESHOLD);
  Serial.print("\tMax:"); Serial.println(DARK_THRESHOLD);
 
  delay(DELAY_TIME);               // Mérési ciklus késleltetése
}

A kód könnyen testre szabható az adott környezet fényviszonyaihoz, és relé segítségével nagyobb teljesítményű fényforrásokat is vezérelhet. Az energiatakarékos működés és a megbízható kapcsolási logika miatt kiválóan alkalmazható kültéri és beltéri világítási rendszerek automatizálására. De ne is álljunk meg ennél a pontnál! Fejlesszük tovább:

Mozgásérzékelővel kombinálható kültéri fényforrások

  • A ki-bekapcsolási logika jól kombinálható egy mozgásérzékelővel, amely akkor aktiválja a világítást, ha valaki közeledik.
  • Ha a környezeti fény megfelelő, a rendszer nem kapcsol feleslegesen.

PIR bővítéssel készített világítás

Az alábbi mintarendszer egy PIR mozgásérzékelővel (SR501) és egy fotoellenállással (LDR) kiegészített világításvezérlő, amely sötétben észlelt mozgás esetén kapcsolja be a LED-et, és mozgás megszűnése után egy meghatározott ideig világítva marad. A világítás nem kapcsol ki rögtön a mozgás megszűnése után, hanem csak késleltetés letelte végén. De …

…mi az a PIR mozgásérzékelő és hogyan működik?

A PIR (Passzív Infravörös) mozgásérzékelő egy olyan eszköz, amely az emberi test által kibocsátott infravörös sugárzást érzékeli, és ezt használja mozgásdetektálásra. Az SR501 típusú PIR szenzor az egyik leggyakrabban alkalmazott változat, amely olcsó, megbízható és egyszerűen használható. A szenzor működése két fő komponensre épül: egy pyroelektromos érzékelőre, amely érzékeli az infravörös sugárzást, valamint egy Fresnel-lencsére, amely a környezetből érkező IR sugarakat a detektorra fókuszálja. Amikor egy ember vagy más hőforrás elhalad a szenzor látóterében, az infravörös sugárzás mintázata megváltozik, ezt a PIR érzékelő észleli, és magas (HIGH) jelszintet küld az Arduino számára. A PIR érzékelők nem aktívan bocsátanak ki jeleket, hanem csak a környezet hősugárzását figyelik, így rendkívül energiatakarékosak. Az SR501 típust gyakran használják biztonsági rendszerekhez, automatikus világításvezérléshez és okosotthon alkalmazásokhoz. A szenzor érzékenysége és az aktiválási idő késleltetése potméterekkel állítható (vagy fixen beállított változat is elérhető), így a felhasználási igényekhez igazítható.

Egy Arduino Uno mikrokontroller áramköri kapcsolási rajza, amelyhez egy PIR mozgásérzékelő és egy fotoellenállás és egy LED modul csatlakozik különböző színű vezetékekkel.
A képen egy Arduino Uno látható, amelyhez egy PIR mozgásérzékelő és egy LED modul és egy megvilágításmérő modul van csatlakoztatva. A kapcsolások különböző színű vezetékekkel történnek a megfelelő tápfeszültség (VCC), föld (GND) és jel (S) vezetékek használatával.

 

Ez a megfigyelő-szenzor különösen hasznos olyan helyzetekben, ahol csak mozgás esetén szeretnénk aktiválni egy rendszert, például világítást, riasztót vagy ajtónyitó mechanizmust. Az Arduino-val való integrációja egyszerű, mindössze egy digitális bemenetre van szükség, amely figyeli a PIR jeleit és a megfelelő reakciót váltja ki. Itt is ezt használjuk ki.

Működési logika

Az előző programunkat egészítjük ki…

  1. Ha besötétedik (DARK_THRESHOLD alatt) és mozgás van a PIR előtt, a LED azonnal bekapcsol.
  2. Ha a PIR mozgást érzékel, a LED végig ég és az időzítés újraindul minden mozgásérzékeléskor.
  3. Ha nincs mozgás és továbbra is sötét van, a LED a PIR utolsó érzékelése után egy meghatározott időtartamig égve marad, majd kikapcsol.
  4. Ha a fényerő eléri a TURN_OFF_THRESHOLD értéket (tartós világos állapot), a LED kikapcsol, és a PIR nem kapcsolja újra a világítást.
  5. A PIR csak sötétben aktív! Ha világos van, a mozgásérzékelés figyelmen kívül marad.

Mindezeket a kódunkba be is építjük (azaz az előzőt kiegészítjük):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// --- Beállítható paraméterek ---
#define DARK_THRESHOLD 270         // A sötétben mért fotoellenállás értéke (LED bekapcsolás)
#define TURN_OFF_THRESHOLD 800     // A világosban mért fotoellenállás értéke (LED kikapcsolási küszöb)
#define LED_PIN 9                  // LED vagy relévezérlő kimenet
#define LDR_PIN A1                 // Fotoellenállás bemeneti láb
#define PIR_PIN 11                 // PIR mozgásérzékelő bemenet (SR501)
#define DELAY_TIME 100             // Mérési ciklus késleltetés (ms)
#define LIGHT_STABLE_TIME 5000     // Kikapcsolási idő világos környezetben (ms) - 5 másodperc
#define PIR_STABLE_TIME 20000      // PIR mozgás utáni LED kikapcsolási idő (4x hosszabb)
 
// Időzítés változók
unsigned long lightStartTime = 0;   // A világos környezet kezdő időpontja
unsigned long motionEndTime = 0;    // Utolsó mozgás érzékelés időpontja
bool ledState = false;              // LED állapota (bekapcsolva/kikapcsolva)
 
void setup() {
  pinMode(LED_PIN, OUTPUT);         // LED kimenet beállítása
  pinMode(PIR_PIN, INPUT);          // PIR mozgásérzékelő bemenet
  Serial.begin(9600);               // Soros kommunikáció indítása
}
 
void loop() {
  int lightValue = analogRead(LDR_PIN);  // Fényintenzitás beolvasása
  bool motionDetected = digitalRead(PIR_PIN); // PIR mozgásérzékelő állapota
 
  // Ha sötét van és mozgás van, azonnal kapcsoljon be a LED
  if (lightValue <= DARK_THRESHOLD && motionDetected) {
    ledState = true;                // LED bekapcsol
    motionEndTime = millis() + PIR_STABLE_TIME; // Utolsó mozgás utáni időzítés
    lightStartTime = millis();      // Fény időzítés újraindítása
  }
 
  // Ha világos van, akkor időzítve kikapcsol
  else if (lightValue >= TURN_OFF_THRESHOLD) {
    if (lightStartTime == 0) {      // Ha először észlel világosságot, jegyezze meg az időpontot
      lightStartTime = millis();
    }
    if (millis() - lightStartTime >= LIGHT_STABLE_TIME) {  // Ha folyamatosan világos van 5 másodpercig
      ledState = false;             // Kikapcsolás
    }
  }
 
  // Ha mozgás megszűnt, de továbbra is sötét van, akkor várakozik a PIR_STABLE_TIME idejéig
  if (!motionDetected && millis() > motionEndTime && lightValue <= DARK_THRESHOLD) {
    ledState = false; // Kikapcsolás mozgás után 4x késleltetéssel
  }
 
  // Ha világos van, akkor a PIR mozgásérzékelést figyelmen kívül hagyja
  if (lightValue >= TURN_OFF_THRESHOLD) {
    motionEndTime = millis(); // Mozgásérzékelés újraindítása
  }
 
  // LED állapotának frissítése
  digitalWrite(LED_PIN, ledState ? HIGH : LOW);
 
  // Soros monitor kiírás a teszteléshez
  Serial.print("Feny: "); Serial.print(lightValue);
  Serial.print("\tPIR: "); Serial.print(motionDetected ? "Mozgás" : "Nincs mozgás");
  Serial.print("\tLED: "); Serial.print(ledState ? "ON" : "OFF");
  Serial.print("\tMin: "); Serial.print(TURN_OFF_THRESHOLD);
  Serial.print("\tMax: "); Serial.println(DARK_THRESHOLD);
 
  delay(DELAY_TIME);                // Mérési ciklus késleltetése
}

És a könnyebb (?) megértéshez a működési logika sem árt – áttekinthetőbben:

FényviszonyMozgás (PIR)LED állapotMegjegyzés
SötétVan mozgásBekapcsolAzonnali reakció
SötétMozgás megszűnikMarad bekapcsolvaPIR utolsó érzékelése után még ég
SötétNincs mozgásKikapcsol késleltetésselPIR után még 4x hosszabb ideig ég
VilágosVan mozgásNem kapcsol beA PIR ilyenkor nem aktív
VilágosNincs mozgásKikapcsol késleltetésselCsak ha stabilan világos
Rövid világos időVan mozgásMarad bekapcsolvaFényingadozás nem kapcsolja le
Sötét és világos gyorsan váltNincs mozgásLED marad égveNem reagál pillanatnyi fényváltozásra

Miért hasznos ez a rendszer?

  • Csak akkor kapcsol be, ha szükséges → Ha világos van, a mozgásérzékelés inaktív.
  • Nem kapcsol ki egy pillanatnyi fényváltozás miatt → Megakadályozza a villogást.
  • Mozgás után késleltetve kapcsol ki → Nem alszik ki rögtön, hanem marad égve.
  • Energiatakarékos → Csak sötétben és mozgás esetén kapcsol be.
  • Könnyen testre szabható → Az érzékelési küszöbök és az időzítés módosíthatók.

Összegzés

A bemutatott Arduino-alapú világításvezérlő rendszer egy egyszerű, de hatékony megoldás a fényviszonyok és a mozgás alapján történő világításvezérlésre. A rendszer egyesíti a fotoellenállás (LDR) és a PIR szenzor előnyeit, biztosítva ezzel az intelligens energiahasználatot és a pontos vezérlést. A projekt könnyen elkészíthető akár kezdők számára is, és egy remek kiindulópont a világításvezérlési rendszerek fejlesztéséhez. A kód egyszerűen módosítható, hogy az adott környezethez igazodjon, és az áramkör könnyen bővíthető további érzékelőkkel vagy vezérlési lehetőségekkel.

Ha szeretnél egy automatizált, intelligens világításvezérlő rendszert építeni az otthonodba vagy a kertedbe, ez a projekt egy kiváló alap!

Milyen további fejlesztési lehetőségek vannak?

Az itt bemutatott rendszerek egyszerűen továbbfejleszthetők és bővíthetők, például:

  • Távoli vezérlés Wi-Fi-n vagy Bluetooth-on keresztül – Egy ESP8266 vagy ESP32 modul segítségével az adatokat akár egy okostelefonra is küldhetjük, és távolról kapcsolhatjuk be vagy ki a világítást.
  • Időzített világításvezérlés – A rendszer kiegészíthető egy RTC (valós idejű óra) modullal, így például csak este 6 után aktiválódik a világítás.
  • Energiafogyasztás optimalizálás – A LED-ek fényereje naplemente után automatikusan növekedhet, majd az éjszaka közepén csökkenhet, hogy még energiatakarékosabb legyen a rendszer.
  • További érzékelők integrálása – Hőmérséklet- és páratartalom-érzékelőkkel kombinálva okos kültéri vagy beltéri világítási rendszert építhetünk.
  • Mozgásérzékelő integrálása – Csak mozgás esetén aktiválja a világítást.
  • Időzítés funkció – Csak bizonyos órákban kapcsoljon be a fény.
  • Wi-Fi vezérlés – Az adatok távoli eléréséhez ESP32 modul használata.
  • LCD kijelző – A fényértékek valós idejű kijelzéséhez.

 

Források:

A cikkhez kapcsolódóan az alábbi hasznos linkeket ajánlom figyelmedbe:

  • Fényérzékelés fotoellenállással [TavIR]
  • Automatikus világításvezérlés Arduino-val [TavIR]
  • AnalogReadSerial – Arduino Tutorial [Arduino.cc]
  • How to Use a PIR Motion Sensor With Arduino [Instructables]

 

Post navigation

Előző Fényérzékelés fotoellenállással
Következő L9110S motorvezérlő és ventilátormodul

Kapcsolódó anyagok

Arduino IDE 2.3.7: mit hoz a frissítés, mik az előnyök és mik a buktatók? Egy laptop képernyőjén az „Update Successful 2.3.7” felirat látható, előtérben egy Arduino UNO panel és egy digitális lakat ikon, biztonsági frissítésre utalva. Az Arduino IDE 2.3.7 frissítésének vizuális megjelenítése.
  • Cikk

Arduino IDE 2.3.7: mit hoz a frissítés, mik az előnyök és mik a buktatók?

2025.12.13.
Tokiótól a Szilícium-völgyig: a 4004 kalandos útja 4004 processzor és a tervek
  • Cikk
  • Mélyvíz

Tokiótól a Szilícium-völgyig: a 4004 kalandos útja

2025.11.27.
Az első mikroprocesszor bemutatkozik: az Intel 4004 eredeti reklámja (1971) Intel 4004 – első mikroprocesszor hirdetés (1971)
  • Cikk

Az első mikroprocesszor bemutatkozik: az Intel 4004 eredeti reklámja (1971)

2025.11.14.

Hírlevél

Hogy az újdonságokról első kézből értesülj:
→ Feliratkozás a Hírlevélre

Ingyenes tanfolyam

60 nap alatt Arduino - az ingyenes tanfolyam
→ Kattints ide és iratkozz fel!
60 nap alatt Arduino

Szeretnél egy lépéssel a többiek előtt járni?

Ne hagyd ki a legújabb tanfolyamokat, amik még csak most bontogatják szárnyaikat.

Legyél te az első! Tanfolyamok

Alkatrész-tár

→ TavIR WebShop
→ Tanulókészletek

Témakörök

  • Cikk (54)
  • Hír (38)
  • Könyv (35)
    • Egyszerű elektronika tippek (18)
    • ESP8266/ESP32 (1)
    • Mélyvíz (9)
    • Mit ne használjunk Arduino projektekben? (6)
  • OmegaFlux (2)
  • Tippek (59)
    • Gyorstippek (20)
    • Tippek-trükkök (AVR) (21)
    • Tippek-trükkök (ESP8266/ESP32) (5)

Fórum

Hiba történt: a hírcsatorna nem elérhető. Később próbálkozzunk újra.

TavIR WebShop

→ Tovább a TavIR WebShopba
Galvanikusan leválasztott RS-485 modul automata irányváltással (Modbus, Fieldbus, MAX485)
Galvanikusan leválasztott RS-485 modul automata irányváltással (Modbus, Fieldbus, MAX485)

A galvanikusan leválasztott TTL–RS485 átalakító modul olyan soros kommunikációs illesztő, [...]

S50/Mifare (1k) átlátszó RFID cimke (írható, ISO14443A/UID)
S50/Mifare (1k) átlátszó RFID cimke (írható, ISO14443A/UID)

A MIFARE S50 kompatibilis átlátszó RFID matrica egy passzív, öntapadó [...]

NFC RFID matrica (NTAG215)
NFC RFID matrica (NTAG215)

Az NTAG215 átlátszó NFC RFID matrica egy passzív, öntapadó kivitelű [...]

HELTEC - HTIT-Tracker (868MHz, 0,96&quot; TFT, LoRa, ESP32S3, Bluetooth, WIFI, GNSS/GPS)
HELTEC - HTIT-Tracker  (868MHz, 0,96&quot; TFT, LoRa, ESP32S3, Bluetooth, WIFI, GNSS/GPS)

A Heltec Wireless Tracker egy integrált vezeték nélküli kommunikációs és [...]

ESP32-C5 WiFi/BT-BLE/ZigBee modul alappanel (ESP32-C5-DevKitC1-N16R8, 2.4/5Ghz)
ESP32-C5 WiFi/BT-BLE/ZigBee modul alappanel (ESP32-C5-DevKitC1-N16R8, 2.4/5Ghz)

Az ESP32-C5 WiFi 6 fejlesztőpanel olyan projektekhez illeszkedik jól, ahol [...]

DS18B20 digitális hőmérséklet-érzékelő termináladapter
DS18B20 digitális hőmérséklet-érzékelő termináladapter

A DS18B20 terminál adapter egy műszaki csatlakoztató egység a DS18B20 [...]

OV2640 2MPixel kamera (standard, 69fok)
OV2640 2MPixel kamera   (standard, 69fok)

Az OV2640 2MPixel kamera egy kompakt kamera modul , amely [...]

ESP32-C5 WiFi/BT-BLE/ZigBee modul alappanel (ESP32-C5-DevKitC1-N4, 2.4/5Ghz)
ESP32-C5 WiFi/BT-BLE/ZigBee modul alappanel (ESP32-C5-DevKitC1-N4, 2.4/5Ghz)

Az ESP32-C5 fejlesztőpanel egy ESP32-C5-N4 MCU-alapú fejlesztőlapon alapuló megoldás, amely [...]

ESP/D1 mini - LED-mátrix shield (8x8 RGB LED, WS2812)
ESP/D1 mini - LED-mátrix shield (8x8 RGB LED, WS2812)

A D1 mini 8x8 RGB LED mátrix shield egy kompakt [...]

JST-PH 2.0 csatlakozó 4 pin, 20cm kábel szerelt apa (2mm, lengő, male)
JST-PH 2.0 csatlakozó 4 pin, 20cm kábel szerelt apa (2mm, lengő, male)

A JST-PH 2.0 csatlakozó 4 pin, szerelt kábeles apa kivitelben [...]

JST-PH 2.0 csatlakozó 4 pin, 20cm kábel szerelt anya (2mm, lengő, female)
JST-PH 2.0 csatlakozó 4 pin, 20cm kábel szerelt anya (2mm, lengő, female)

A JST-PH 2.0 csatlakozó 4 pin, szerelt kábeles anya kivitelben [...]

JST-GH 1.25 csatlakozó 4 pin, szerelt apa (20cm, 1.25mm, micro, lengő)
JST-GH 1.25 csatlakozó 4 pin, szerelt apa (20cm, 1.25mm, micro, lengő)

A JST-GH 1.25 csatlakozó 4 pin, szerelt kábeles apa kivitelben [...]

  • Tovább a TavIR Fórumra...

Címkék

alappanel Arduino Arduino nap Arduino nap 2023 art AVR billentyűzet biztosíték bootloader darlington dióda eeprom egyszerű elektronika elem ellenállás ESP flash Forrasztás ft232 hőmérő i2c i2clcd infravörös IoT ISP JTAG kijelző LCD lm35 mikrokontroller MOSFET motor pcb PWM páratartalom Relé RTC telepítés tmp36 tranzisztor Történelem ultrahang Uno Zener óra

Archívum

  • 2026. január (2)
  • 2025. december (2)
  • 2025. november (2)
  • 2025. október (3)
  • 2025. augusztus (3)
  • 2025. július (7)
  • 2025. június (4)
  • 2025. május (6)
  • 2025. április (5)
  • 2025. március (4)
  • 2025. február (1)
  • 2025. január (6)
  • 2024. december (5)
  • 2024. november (5)
  • 2024. október (6)
  • 2024. szeptember (5)
  • 2024. augusztus (4)
  • 2024. július (3)
  • 2024. június (1)
  • 2024. május (3)
  • 2024. március (1)
  • 2024. február (2)
  • 2024. január (1)
  • 2023. december (5)
  • 2023. szeptember (2)
  • 2023. augusztus (6)
  • 2023. július (2)
  • 2023. június (1)
  • 2023. május (1)
  • 2023. április (10)
  • 2023. február (1)
  • 2022. szeptember (2)
  • 2022. július (1)
  • 2022. május (6)
  • 2022. április (1)
  • 2022. március (2)
  • 2022. január (3)
  • 2021. december (1)
  • 2021. november (4)
  • 2021. október (2)
  • 2021. szeptember (1)
  • 2021. július (1)
  • 2021. május (2)
  • 2021. április (1)
  • 2021. március (2)
  • 2020. szeptember (1)

Eddig nem olvasott...

Arduino a CES 2026-on: UNO Q, ami két világot köt össze Egy kiállításon látható Arduino fejlesztőpanel csatlakoztatva egy számítógéphez, amelyen az Edge Impulse gépi tanulási platform fut, valós idejű objektumfelismeréssel.
  • Hír

Arduino a CES 2026-on: UNO Q, ami két világot köt össze

2026.01.10.
CES 2026 – fókuszban az Espressif Systems újdonságai CES 2026 technológiai kiállítás standján IoT és AI modulokat bemutató M5Stack termékek, Espressif Wi-Fi 6E, BLE 5.4, AI és érzékelési funkciókkal. Jövőálló hardver AI-vezérelt megoldásokhoz.
  • Hír

CES 2026 – fókuszban az Espressif Systems újdonságai

2026.01.09.
MSZ 12‑31:2017 – Szabvány az év legszebb protokolljához: szilveszter és újév Szilveszteri koccintás
  • Hír

MSZ 12‑31:2017 – Szabvány az év legszebb protokolljához: szilveszter és újév

2025.12.31.
Arduino IDE 2.3.7: mit hoz a frissítés, mik az előnyök és mik a buktatók? Egy laptop képernyőjén az „Update Successful 2.3.7” felirat látható, előtérben egy Arduino UNO panel és egy digitális lakat ikon, biztonsági frissítésre utalva. Az Arduino IDE 2.3.7 frissítésének vizuális megjelenítése.
  • Cikk

Arduino IDE 2.3.7: mit hoz a frissítés, mik az előnyök és mik a buktatók?

2025.12.13.

Információk

Cégadatok-impresszum | Használati feltételek
Adatvédelmi irányelvek | Kapcsolat

Elérhetőség

Ügyfélszolgálat: +36 (20) 99-23-781
E-mail: avr (kukac)tavir (pont) hu
Iroda/telephely: 1181 Budapest, Szélmalom utca 13.
Copyright © TavIR Minden jog fenntartva | DarkNews by AF themes.
TavIR
Manage your privacy

To provide the best experiences, we and our partners use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us and our partners to process personal data such as browsing behavior or unique IDs on this site and show (non-) personalized ads. Not consenting or withdrawing consent, may adversely affect certain features and functions.

Click below to consent to the above or make granular choices. Your choices will be applied to this site only. You can change your settings at any time, including withdrawing your consent, by using the toggles on the Cookie Policy, or by clicking on the manage consent button at the bottom of the screen.

Funkcionális Always active
A technikai tárolás vagy hozzáférés szigorúan szükséges az előfizető vagy felhasználó által kifejezetten kért konkrét szolgáltatás használatának lehetővé tételének jogos céljához, vagy kizárólag a közlés elektronikus hírközlő hálózaton keresztüli továbbításának céljához.
Beállítások
A technikai tárolás vagy hozzáférés a jogos célból szükséges, hogy olyan beállításokat tároljunk, amelyeket az előfizető vagy a felhasználó nem kért.
Statisztika
Kizárólag statisztikai célokra használt technikai tároló vagy hozzáférés. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
A technikai tárolás vagy hozzáférés felhasználói profilok létrehozásához szükséges hirdetések küldéséhez, illetve a felhasználó nyomon követéséhez egy vagy több weboldalon hasonló marketingcélokból.
Statistics

Marketing

Features
Always active

Always active
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
Manage options
{title} {title} {title}