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:
|
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!