9. Arduino sensoren

algemeen: sensorwaarde instellen voor Arduinogebruik

Je wilt dat je sensor op een bepaald moment pas wordt in- of uitgeschakeld. Hoe stel je die specifieke drempelwaarde van de betreffende sensor in?

Het instellen van een sensor drempelwaarde:

Uitgangspunt : functionele sensor die werkt tussen 0 en 5 V
Probleem        : deze sensor moet op een door ons zelf gekozen waarde worden ingeschakeld..
Voorbeeld       : Een lichtsensor werkt overdag niet en als het donker wordt schakelt de arduino via de lichtsensor een lamp aan.

 
code:

// technasium Jacob Roelandslyceum 12-12-14

//1e gedeelte van het programma: geheugen reserveren in de microcontroller (met het commando int). 

int SensePin = A0; // er wordt werkgeheugen gereserveerd voor data afkomstig uit analoge poort A0 
int waarde; // dit werkgeheugen is 2 bytes oftewel 16 bits groot 
int ledpin = 13; // dit is een waarde tussen de 32767 en de -32768 bits http://arduino.cc/en/Reference/int

// tweede gedeelte van het programma
// het definiëren van de poorten

/* poorten kunnen ingangen of uitgangen zijn, poorten kunnen analoog of digitaal zijn.
// 1. "digitaal": zowel als "in-" of als een "output".  
*/ 2. "analoog" : idem.

void setup()

{
Serial.begin(9600); //we maken het mogelijk in via de PC seriele communicatie aan te gaan met de Arduino

pinMode (ledpin,OUTPUT); // we instrueren de microcontroller om het poortje dat we "ledpin" hebben genoemd - dat is poortje 13 - als een 'output' (uitgang) te functioneren.  
}

//derde gedeelte van het programma

void loop()

{
analogRead (SensePin); // het analoge signaal wordt ingelezen via poortje A0, dit is 'analoog poortje nummer 0'. 
// De analoge waarde (deze varieert tussen 0 en 5 V) wordt vervolgens omgezet (door een z.g. AD convertor) naar een digitale waarde.
// Deze digitale weergave - in ons geval hebben we gekozen voor de waarde 500 - kan de spanning over een sensor of weerstand weergeven als een 10 bits waarde (maximaal 1024).
// De 10 bits digitale waarde wordt opgedeeld in 1023 spanningsgebiedjes tussen de 0 en 5 V. Deze 1023 gebiedjes worden opgesplitst in spanningsgebiedjes van 5/1024 = 4,9 mV. 
// Vooorbeeld: Spanning Arduino = 5V,  AD omzetting is zoals gezegd in dit geval 10 bits = 2^10 = 1024. => 5/1024 = 4,9 mV. De digitale getalswaarde in de seriele monitor = 500, dus de spanning bedraagt 500 x 4,9 mV = 2,45 V 

waarde = analogRead (SensePin); // de variable 'waarde' neem de ingelezen (sensor) spanningswaarde over van analoge poort A0. 

Serial.println(waarde); //de waarde van de variabele 'waarde' wordt geprint in een apart venster, de z.g. seriele monitor, deze kun je zichtbaar maken via de knop rechtsboven in de vorm van het vergrootglas.

if (waarde < 500) digitalWrite (ledpin,HIGH);  // als de digitale waarde beneden de waarde 500 blijft (2,45 V) wordt poortje 13 "hoog", dat wil zeggen: het LEDje op poortje 13 gaat branden.

else digitalWrite(ledpin,LOW); // boven de waarde 500 blijft of gaat de LED uit.

if (waarde < 500) delay (2500); //als de digitale waarde 500 niet wordt overschreden blijft het LEDje van poortje 13 branden gedurende de tijdsuur van 2,5 seconden voordat een nieuwe waarde wordt ingelezen die deze toetand kan veranderen.
else delay (0); // 
}