Játék a fénnyel

|

Egy fényszenzor beépítése bizony számos új funkciót megnyit az Arduino-programozók számára, cikkünkben bemutatjuk, merre érdemes elindulnod, ha ezt az apró kiegészítőt szeretnéd a projektjeidben szerepeltetni.

A futtatást követően már láthatod, is, hogy amint egy kis árnyékot tartasz a szenzorodnak a lámpád felvillan. Természetesen ezt egy kicsit finomíthatod, méghozzá oly módon, hogy az átadott értéket a változásnak megfelelően százalékosítva küldöd tovább, így elérheted, hogy egy bizonyos sötétség felett bekapcsol a lámpa és minél sötétebb lesz a szenzor környezete annál élénkebben világít majd a készülékhez csatlakoztatott LED. Ehhez szerencsére nem kell túlzottan komoly módosításokat végrehajtani a már kész kódon, mindössze annyi a teendő, hogy a LED-lámpát egy olyan portra kötöd, melynek áramerőssége változtatható (tehát nem csak a HIGH és a LOW értékek kezelésére képes), a 9-es pin pedig tökéletesen megfelel erre a célra. Ha ezt megtetted, már csak a kódot kell kicsit kozmetikáznod, hogy elkészüljön a működő prototípusod. Elsőként szabadulj meg a loop feltételeitől, a helyükre pedig biggyeszd be a analogWrite(9, 256 - (A / 4)); kódrészletet, az analóg kimenetre ugyanis 0 és 255 közötti értékeket küldhetsz, mely ugye a fényszenzor értékeinek pontosan a negyedét adja.

Természetesen a megfelelő íráshoz a címkézésnél se felejtsd el átírni a használt pin megnevezését 13-ról 9-re. Ezt követően már működik is a szabályozható világítás melyet oly módon még finomíthatsz, hogy egy if-else ágban a fényszenzor 512-es értékétől felfelé kikapcsolod az áramellátást, ebben az esetben a végső számításnál csak 2-vel ossz le, így egy sokkal hatékonyabb és lényegesen energiatakarékosabb eszköz lesz a jutalmad.

Zenéljünk fénnyel

Természetesen, ha szeretnél a LED-kapcsolgatáson túllépni erre is lehetőséget kapsz a fényszenzor széleskörű felhasználhatóságának köszönhetően, hisz egy kis ügyeskedéssel akár dallamokká is konvertálhatod a fényintenzitás változását. Az előző áramkört csupán annyival kell módosítanod ehhez, hogy a LED-et kicseréled egy buzzerre és már kész is a kapcsolás, így rá is térhetsz a szoftveres oldal megvalósítására. Az alapkódodból távolítsd el az analogRead függvényt, a többi funkciót hagyhatod a helyén.

A setup() előtti deklarációs részben vegyél fel egy int változót fenyertek és egy long típusút frekvencia néven, ezekre a kódod további részében szükséged lesz. A setupon belül módosításra szerencsére nem lesz szükség, így azonnal áttérhetsz a loop() belsejébe, ahol a frekvencia = (A * 2500) / 1023; sorral bővítsd a függvényt, mellyel a beolvasott fényértéket konvertálhatod át hangokká. Persze ahhoz, hogy ennek valódi hatását is észleld szükség lesz egy segédfüggvényre, így a loop() után készíts el egy void visszatérési értékű hang függvényt, melynek indítási feltételei között mindenképp add meg a buzzer pinjét, a használni kívánt frekvenciát, valamint a lejátszás hosszát ( void hang(int hasznaltPin, long frekvencia, long hossz) ). A függvény belsejében ezután begépelheted a long kesleltetes = 1000000/frekvencia/2; valamint a long ismetlesSzama = frekvencia * hossz/ 1000; sorokat, majd amint ezzel elkészültél, indíts egy for-ciklust, aminek a belsejében az ismétlések számának megfelelően ki és be kapcsolgatod majd a buzzert a digitalWrite(hasznaltPin,HIGH); és ezen függvénynek a LOW értékkel megadott változatával, a kapcsolgatások közé pedig egy kis késleltetésnyi ideig tartó delay() függvényt is helyezz el. Ezek után már csupán annyi a dolgunk, hogy visszatérsz a loop belsejébe, ahol a hang(4, frekvencia, 10); módon meghívod a frissen megírt függvényt és már működik is a házilag elkészített teremined.

Oldalak: 1 2

Úgy tűnik, AdBlockert használsz, amivel megakadályozod a reklámok megjelenítését. Amennyiben szeretnéd támogatni a munkánkat, kérjük add hozzá az oldalt a kivételek listájához, vagy támogass minket közvetlenül! További információért kattints!

Engedélyezi, hogy a https://www.helloworldonline.hu értesítéseket küldjön Önnek a kiemelt hírekről? Az értesítések bármikor kikapcsolhatók a böngésző beállításaiban.