
A fény mindennapi életünk szerves része – elég, ha csak a napfelkeltére vagy az automatikusan kapcsolódó közvilágításra gondolunk. De hogyan érzékelik az eszközök a fényt? A válasz egyszerűbb, mint gondolnád: egy kis elektronikai alkatrész, a fotoellenállás (LDR – Light Dependent Resistor) segítségével.
Ezek a kis alkatrészek képesek érzékelni a környezeti megvilágítást és ezt az információt felhasználva vezérelhetjük például az okos otthonunk világítását vagy akár egy egyszerű időjárás-figyelőt is készíthetünk velük. Ebben a cikkben megnézzük, hogyan építhetünk egy fényérzékelő rendszert Arduinóval, és hogyan használhatjuk ki a fotoellenállás képességeit egy kis kódolás segítségével.
A fotoellenállás működése – miért olyan különleges?
A fotoellenállás egy olyan egyszerű, mégis zseniális eszköz – amely a fény intenzitásának megfelelően módosítja az ellenállását. Egyszerűen fogalmazva: minél több fény éri az érzékelőt, annál kisebb lesz az ellenállása. Ez a tulajdonsága teszi lehetővé, hogy analóg jelként az Arduinoval könnyedén értelmezhessük.
- Sötét állapotban – kevés foton éri az eszközt, kevés szabad elektron van a rendszerben, így az ellenállás magas.
- Világos állapotban – a beeső fény megnöveli a szabad elektronok számát, az ellenállás lecsökken.
Ezt a tulajdonságot kihasználva pontosan mérhetjük a környezeti fény erősségét.
A fotoellenállás működése különböző fényviszonyok között:

(Forrás: GL5537 fotoellenállás adatlap)
Ez a változás lehetővé teszi, hogy a fotoellenállást fényérzékelőként használjuk. Azonban a mikrokontrollerünk csak feszültséget tud mérni, nem pedig közvetlenül az ellenállást.
Spektrális érzékenység – Milyen fényre reagál a fotoellenállás?
A fotoellenállások leginkább a látható fény tartományában (400-700 nm) működnek hatékonyan. Az ultraibolya és infravörös tartományban azonban már jelentősen csökken az érzékenységük A tipikus fotoellenállás anyaga CdS (azaz kadmium-szulfid).

(Forrás: https://eepower.com/resistor-guide/)
Mire kell figyelni?
- Beltéri alkalmazásoknál fontos, hogy az érzékelő pontosan kövesse a mesterséges fények változásait.
- Kültéri alkalmazások esetén az érzékenység csökkenhet az IR tartományban, így árnyékolásra lehet szükség.
Áramköri összeállítás – Hogyan kösd be a fotoellenállást?
Most nézzük meg, hogyan csatlakoztassuk a fotoellenállást az Arduinóhoz. Egy egyszerű feszültségosztó áramkört fogunk használni, amely lehetővé teszi az érzékelt fényintenzitás analóg jelek formájában történő leolvasását.
Szükséges eszközök és alkatrészek
A projekt elkészítéséhez a következőkre lesz szükséged:
![]() | → Arduino Uno alaplap: Ez fogja kezelni az érzékelőt. |
![]() | → Fotoellenállás: A fényérzékelő szenzor maga. |
![]() | → Fotoellenállás modul: A szenzorkészletek részeként is elérhető. |
![]() | → 10 kOhm ellenállás. |
![]() | → Breadboard és jumper kábelek (anya-apa / apa-apa): A könnyű csatlakoztatáshoz. |
Lépések a mérési elrendezés összeállításához
- A fotoellenállás egyik végét csatlakoztasd az Arduino 5V-os kimenetéhez.
- A másik végét kösd a 10 kΩ-os ellenálláson keresztül a földhöz (GND).
- Az ellenállás és a fotoellenállás közös pontját csatlakoztasd az A1 analóg bemeneti pinhez.
Ez “reptében” összeépítve az alábbiakként fog kinézni:

Kicsit áttekinthetőbben a Breadboard-on:

A feszültségosztó működése
A feszültségosztó lényege, hogy a fotoellenállás és a 10kOhm ellenállás egy leosztott feszültséget hoz létre a közös pontján, amelyet így már az Arduino képes kiolvasni és értelmezni.
A feszültség kiszámításának képlete:

Az alábbi ábrán szemléltetve (az R2 helyett fotoellenállás van nálunk!):

Miért van szükség feszültségosztóra a fotoellenállás esetében?
Az Arduino csak 0 és 5V közötti feszültségeket tud mérni az analóg bemeneteken (például az A1 pinen). Mivel a fotoellenállás csak az ellenállását változtatja, nem képes közvetlenül feszültséget generálni. Itt jön képbe a feszültségosztó, amely lehetővé teszi, hogy a fotoellenállás ellenállásának változása átalakuljon mérhető feszültséggé.

A feszültségosztó áramkör két ellenállásból áll:
- Fotoellenállás (LDR) – R2
- Fix 10 kΩ-os ellenállás – R1
Ezeket soros kapcsolásban helyezzük el, és a közös ponton mérjük a feszültséget az Arduinóval (Vki). Ez a kimeneti feszültség az Arduino A1 analóg bemenetére kerül, ahol az értéket kiolvashatjuk és kiértékelhetjük – a korábbi bekötési ábrákon látható bekötési módon.
Arduino programkód – Alap fényintenzitás mérés
Miután az áramkört összeállítottuk, próbáljuk ki az alábbi programot, amely kiolvassa az analóg értékeket és kiírja őket a soros monitorra.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | int sensorPin = A1; // fotoellenállás az A1 pinre kötve int sensorValue = 0; // Az érzékelt fényintenzitás értéke void setup() { Serial.begin(9600); // Soros kommunikáció elindítása } void loop() { sensorValue = analogRead(sensorPin); // Az analóg bemenet értékének kiolvasása float voltage = sensorValue * (5.0 / 1023.0); // Átalakítás feszültség értékké Serial.print("Feszültség: "); Serial.println(voltage); // Az érték kiírása delay(500); // 500 ms várakozás a következő mérésig } |
Kódmagyarázat:
- Az
analogRead(sensorPin)
függvény kiolvassa az A0 lábra érkező feszültséget. - A 0-1023 közötti mért értéket átalakítjuk 0-5V közötti tartományba.
- A
Serial.println()
kiírja az eredményt a soros monitorra. - A
delay(500)
várakozás beállításával másodpercenként 2 mérést végzünk.

Adatok megjelenítése az Arduino Serial Plotter segítségével
Az újabb Arduino verziókban található Serial Plotter lehetővé teszi az adatok valós idejű grafikus megjelenítését. (Segítség a beállításhoz és a működéshez: →Soros plotter (diagram) az Arduino 1.x alatt) Az alábbi kódot használhatod az adatok vizuális elemzésére.
1 2 3 4 5 6 7 8 9 10 11 12 13 | int sensorPin = A1; // fotoellenállás csatlakozási pontja int sensorValue = 0; // Az érzékelt érték void setup() { Serial.begin(9600); // Soros kommunikáció indítása } void loop() { sensorValue = analogRead(sensorPin); // Érték olvasása az A0 pinről Serial.print("Fényintenzitás: "); Serial.println(sensorValue); // Kiíratás a Serial Plotterre delay(100); // Gyorsabb adatfrissítés a grafikonhoz } |
Megjelenítés lépései az Arduino Serial Plotteren:
- Töltsd fel a fenti kódot az Arduinóra.
- Nyisd meg az Eszközök > Soros plotter menüpontot az Arduino keretrendszerben.
- Figyeld a grafikonon az értékek változását a fényviszonyok hatására.

Zárszó és további lépések
Ezzel a projekttel könnyedén mérheted a környezeti fényviszonyokat és alkalmazhatod azokat számtalan célra, például automatikusan vezérelheted a világítást egy relével. Ha szeretnéd tovább bővíteni a rendszert, próbálkozz LCD kijelző vagy hangjelzés hozzáadásával! Vagy akár automatikus fényerő-szabályozást is építhetsz.
Források
- Light Sensing [Arduino Project Hub]
- Ambient Light Sensor Using Photo Resistor and LED Lights! [Arduino Project Hub]
- Light Sensor (Photoresistor) With Arduino in Tinkercad [Instructables]
- Soros plotter (diagram) az Arduino 1.x alatt [TavIR]