Az előző részben az eredeti gyári Arduino Sensor Kit 10, különálló moduljával ismerkedtünk meg, egy-egy példaprogram segítségével. A következőkben a szenzorok és beavatkozók (aktuátorok) kombinációira nézünk példákat.
Fényérzékelő – LED – potméter kombináció
Az Arduino Sensor Kit „Light” modulja alkalmas a környezeti megvilágítás mértékének mérésére, a modul kimenete analóg jel (A3). A szenzort kombinálhatjuk a készlet LED moduljával, így pl. egy alkonykapcsoló működését tudjuk modellezni. Ha az összeállítást kiegészítjük egy potenciométerrel, akkor a kapcsolás küszöbértéke akár a program futása közben is beállítható!
Az alapprogram:
int light_sensor = A3; void setup() { Serial.begin(9600); } void loop() { int raw_light = analogRead(light_sensor); int light = map(raw_light, 0, 1023, 0, 100); Serial.print("Light level: "); Serial.println(light); delay(1000); }
A program az A3-as analóg csatornán beolvassa a fényszenzor aktuális értékét, majd beírja a „raw_light” nevű változóba. Az így kapott érték a 0 – 1023 tartományba esik. Ezt az értéket a „map” parancs segítségével 0 – 100 közötti tartományba konvertálja át. A fényerősség mértékét az Eszközök > Soros monitor menüpont segítségével tudjuk ellenőrizni.
Bővített program – 1.
Az alapprogramot kiegészítettük egy LED lámpával, ami az Arduino 6-os, digitális kimenetére csatlakozik. Amennyiben a külső fényerősség egy előre megadott érték alá esik, a LED automatikusan bekapcsol. A határértéket úgy kell megválasztani, hogy az illeszkedjen a fényszenzor 0 -100 közé konvertált értékéhez.
#define LED 6 int light_sensor = A3; void setup() { Serial.begin(9600); pinMode(LED,OUTPUT); } void loop() { int raw_light = analogRead(light_sensor); int light = map(raw_light, 0, 1023, 0, 100); Serial.print("Light level: "); Serial.println(light); if (light < 20) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } delay(10); }
Bővített program – 2.
Az előző program segítségével könnyen tudjuk LED lámpánkat kapcsolgatni a külső fényerősség függvényében, azonban nehézséget jelent, hogy amennyiben módosítani szeretnénk a kapcsolási szintet, akkor ezt csak a programsoron belüli módosítással, majd a program újbóli feltöltésével és futtatásával tudjuk megtenni. Sokkal rugalmasabb lenne a program, ha a küszöbértéket akár futás közben is tudnánk módosítani. Erre ad megoldást a program második verziója:
#define LED 6 int light_sensor = A3; int potentiometer = A0; void setup() { Serial.begin(9600); pinMode(LED,OUTPUT); pinMode(potentiometer, INPUT); } void loop() { int raw_light = analogRead(light_sensor); int light = map(raw_light, 0, 1023, 0, 100); int sensor_value = analogRead(potentiometer); int value = map(sensor_value, 0, 1023, 0, 100); Serial.print("Light level: "); Serial.println(light); Serial.print("Potmeter level: "); Serial.println(value); if (light < value) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } delay(10); }
Ebben a változatban az Arduino Sensor Kit harmadik modulját is „bevetjük”, az analóg értéket szolgáltató potmétert. A modul fogja a világításkapcsoló „referencia” értékét szolgáltatni, azaz segítségével be tudjuk állítani a LED lámpa kapcsolási szintjét. A program működése nagyon egyszerű, a fényszenzor értékét a raw_light, a potenciométer értékét pedig a sensor_value változóba töltjük. Mindkét értéket 0 – 100 tartományba konvertáljuk, majd összehasonlítjuk. Az összehasonlítás eredményének függvényében kapcsoljuk ki vagy be a LED-et.
Ezzel a megoldással a határérték futás közben állítható, így könnyű mindig az aktuális fényerőhöz „hangolni” a kapcsolási szintet.
A cikkben felhasznált anyagok forrása: https://sensorkit.arduino.cc/
A fentiekben bemutatott Arduino Sensor Kit megvásárolható a MálnaPC Webshopjában!
A cikk folytatása: http://www.malnasuli.hu/arduino/arduino-sensor-kit-4-resz/