Les 6 - Digitale sensors
Digitale sensors meet dingen in de wereld die wel of niet zo zijn. Wel beweging of geen beweging, knopje ingedrukt of niet. Ze kunnen dus niet meten hoeveel beweging of hoe hard je drukt op een knopje. Sommige sensors kunnen allebei. Bijvoorbeeld de lichtsensor heeft een D(igitale) pin voor wel of geen licht maar ook een A(naloge) pin de hoeveelheid licht tussen 0 en 1000. De D1, D2 ,D3, ... pinnen van de Arduino kunnen digitale signalen meten (aan of uit). Voor analoge signalen zijn er A0, A1, A2 enz.
Benodigdheden
- Arduino Uno
- Breadboard
- Digitale sensor (zoals een bewegingssensor, aanraaksensor of knopje)
- Weerstanden (indien nodig voor de sensor)
- Draadjes
Stap 1: Sensor aansluiten
- Bewegingssensor (PIR): Sluit de +5V van de sensor aan op de 5V van de Arduino, GND naar GND, en de OUT-pin naar een D pin van de Arduino.
-
Knopje: Een knopje is eigenlijk ook een soort sensor. Je gebruikt twee draadjes. Eén draadje voor het signaal OUT en de tweede voor GND (VCC op het knopje). Je moet dan INPUT_PULLUP gebruiken (in plaats van INPUT) anders werkt het niet.
-
De meeste sensors: Sluit de VCC (of de +)aan op de 5V, GND (of -)naar GND, en de SIG of OUT naar een D pin van de Arduino.
Stap 2: Programma schrijven
- Start de Arduino IDE en open een nieuw programma.
- Stel de variabelen in
int sensorPin = 2; // gebruik 2 plaats van D2 int waarde = 0; // voorlopig even 0
- Setup-functie:
Met INPUT zet je de pin als ingang voor sensors. Gebruik INPUT_PULLUP voor knopjes en andere sensors die maar twee draadjes hebben.
void setup() { Serial.begin(9600); // Setup de seriële communicatie pinMode(sensorPin, INPUT); // Stel de sensorpin als input }
- Loop-functie:
void loop() { waarde = digitalRead(sensorPin); // Lees de staat van de sensor Serial.println(waarde); // Print de staat 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 1 of 0 zien wat overeenkomt met aan of uit van de sensor
Tips
- Met de digitale waarde kun je iets doen, zoals een LED aan- of uitzetten:
void loop() { waarde = digitalRead(sensorPin); if (waarde == HIGH) // HIGH is hetzelfde als 1 en LOW is hetzelfde als 0 { digitalWrite(ledPin, HIGH); // Zet LED aan bij detectie } else { digitalWrite(ledPin, LOW); // Zet LED uit bij geen detectie } }
- Experimenteer met verschillende digitale sensors en de acties die je kunt ondernemen gebaseerd op hun uitvoer.