Les 5 - Analoge sensors
Een analoge sensors meet dingen in de wereld die niet alleen maar aan of uit zijn (zoals een knopje), maar bijvoorbeeld de hoeveelheid licht of de temperatuur of de vochtigheid. Ook de joystick is analoog. De D1, D2 ,D3, ... pinnen van de Arduino kunnen alleen digitale signalen meten (aan of uit). De analoge signalen meten we met A0, A1, A2 enz. Deze waarde die we meten kan tussen 0 en 1023 liggen.
Benodigdheden
- Arduino Uno
- Breadboard
- Analoge sensor (zoals een joystick, lichtsensor of vochtigheidssensor)
- Weerstanden (indien nodig voor de sensor)
- Draadjes
Stap 1: Sensor aansluiten
- joystick: Sluit de +5V aan op de 5V van de Arduino, GND naar GND. De analoge signalen van de joystick staan op pin VRx of VRy. Verbind deze met een A pin van de Arduino.
- Lichtsensor: Sluit de VCC van de lichtsensor aan op de 5V van de Arduino, GND naar GND, en de A0 pin (lichtsensor) naar een A pin van de Arduino. Let op een lichtsensor heeft vaak ook een digitale pin D0. Deze gebruiken we hier niet.
- De meeste sensors: Sluit de VCC (of de +) aan op de 5V, GND (of -) naar GND, en de SIG of OUT naar een A pin van de Arduino.
Stap 2: Programma schrijven
- Start de Arduino IDE en open een nieuw programma.
- Declareer de pin: gebruik nu de A(naloge) pinnen
int sensorPin = A0; int waarde= 0;
- Setup-functie:
void setup() { Serial.begin(9600); // Setup de seriële communicatie pinMode(sensorPin, INPUT); // Stel de sensorpin in als input }
- Loop-functie:
void loop() { waarde = analogRead(sensorPin); // Lees de waarde van de sensor Serial.println(waarde); // Print de waarde naar de seriële monitor delay(100); // Wacht 0,1 seconde voor de volgende lezing }
Stap 3: Waarden lezen
Als het programma draait, lijkt er niks te gebeuren. Dit komt omdat we nog geen output hebben. Hoe je wel kunt zien of er iets gebeurd, is via de seriële monitor in de Arduino IDE. Deze vind je onder Tools. Je zult waarden zien tussen 0 en 1023, die door je sensor worden uitgelezen. Deze waarden veranderen als de joystick, lichtintensiteit of vochtigheid verandert.
Stap 4: Iets doen met de waarden
- Als je iets wil laten gebeuren afhankelijk van de waarde zul je iets met die waarde moeten doen. Bijvoorbeeld een led aansturen als de joystick naar links gaat:
- let op dat je wel de lepPin op de gebruikelijk manier aanmaakt een aansluit.
void loop() { waarde = analogRead(sensorPin); // Lees de waarde van de sensor // Als de waarde groter is dan 500 if (waarde > 500 ) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }
Tips
- Niet alle sensors werken hetzelfde. Zoek de sensor op op internet als niet duidelijk is hoe je het aan moet sluiten/
- Probeer eens bij verschillende standen verschilende LED's te laten oplichten, bijvoorbeeld links of rechts met de joystick.
- Je kunt de waarde ook gebruiken om bijvoorbeeld de helderheid van een LED te regelen of de stand van een servomotor te bepalen.
- Je kunt ook rekenen met de waarde.