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/