Fényérzékelő 

A fény erősségét mérjük egy analóg bemenetre csatlakoztatott fény érzékeny ellenállással (LDR), a kimeneten a 8db ledünk adja a visszajelzést a mért értékről.

Szükséges alkatrészek:

  • Arduino Uno

  • Usb kábel

  • Próbapanel

  • Összekötő vezetékek

  • 8db 5mm led

  • 8db 270ohm-os ellenállás

  • 74HC595 shift regiszter

  • Fény érzékeny ellenállás

  • 1db 1kohm-os ellenállás

Az előző kapcsolásban az analóg bemenetre egy potit csatlakoztattunk, most ezt cseréljük ki a
fény érzékeny és egy 1kohmos ellenállásból álló feszültségosztóra.

Ez így fog kinézni:

Nagy vonalakban a fény megváltoztatja (csökkenti) az LDR ellenállását, mivel csökken az
ellenállása ezért csökken a rajta eső feszültség nagysága is,így több feszültség jut az A0-as lábra.

Nézzük a kapcsolást:

A kód:

/*
Adafruit Arduino - Lesson 9. Light sensing
*/
int lightPin = 0; // LDR 0-as analóg lábhoz rendelve
int latchPin = 5;
int clockPin = 6; // shift regiszter pinjei
int dataPin = 4;

int leds = 0;

void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT); // kimenetek beállítása
pinMode(clockPin, OUTPUT);
}

void loop()
{
int reading = analogRead(lightPin);// reading változóba kerül az LDR digitalizált értéke
int numLEDSLit = reading / 57; //1023 / 9 / 2 , 57-el leosztott érték (max 18)
if (numLEDSLit > 8) numLEDSLit = 8; //ha a numLEDS vált értéke 8 nál több akkor 8
leds = 0; // indulási érték, nem világít led
for (int i = 0; i < numLEDSLit; i++) // ha i kisebb mint numLEDS értéke akkor i-t növeljük
{
leds = leds + (1 << i); // beállítja leds változó i-edik bitjét
}
updateShiftRegister();
}

void updateShiftRegister()
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, leds); // kiíratás a ledekre
digitalWrite(latchPin, HIGH);
}


Beolvassa az LDR digitalizált értékét ami lehet 0-1023 között bármilyen egész, ezt az értéket
elosztja 57-el így 0-18 közti érték jön létre.
Ellenőrzi a változót ha nagyobb nyolcnál akkor 8-al teszi egyenlővé, ez a feszültség osztás miatt van, teljes tápfeszültség nem fog a bemenetre jutni csak egy része, ezért a 18 érték .
A feszültségosztással max. 8-10 egységig jut a beolvasott érték, a teljes táp feszültségből.
Ezt szabályozzuk le 8-ra (mivel a kimenetünk 8 bites), majd feltöltjük az értéket a leds változóba,
végül kiíratjuk a ledekre.


További jó munkát!