Digitaal in duidelijke taal


[Arduino] LED Strip met bewegingssensor

In de artikel leg ik uit hoe je met een Arduino, LED strip en een bewegingssensor automatisch licht aan kan zetten als je in de buurt loopt.

Arduino Motion sensor

Onderdelen

 

Aansluiten

Voor de LED strip is een spanning nodig van 12 volt, terwijl de Arduino maximaal 5 volt nodig heeft. Om dit te realiseren, kies ik ervoor om een 7805-spanningsregelaar te gebruiken om van 12 volt 5 volt te maken. De 7805 heeft een input, ground en output pin. Aan de kant van de input zetten we 12 volt, ground verbinden we met ground van de 12 volt-adapter. Tussen ground en output staat nu 5 volt. Om zeker te zijn van een stabiele spanning, plaats ik tussen input en ground, en tussen output en ground een condensator. In de datasheet van de spanningsregelaar vind je welke condensator het meest geschikt is. 

Van de Arduino Pro Micro gebruiken we de volgende pinnen:
- Pin 2 voor het outputsignaal van de sensor
- Pin 3 om de LEDstrip aan te sturen
- 1 GND pin voor de GND van het circuit
- 1 VCC pin om de Arduino van spanning te voorzien.

Verbind de base van de transistor met een weerstand met Pin 2 van de Arduino. Verbind de collector met de cathode (-) van de LED strip, en verbind de emitter met GND. Tot slot verbind je de 12v van de adapter met de anode (+) van de LED strip.

Als alles aangesloten is, zal het er zo uit moeten zien:
Arduino bewegingsmelder  

Code

De volgende code kun je als basis gebruiken om de Arduino als bewegingsmelder een LED strip aan te laten sturen. Verbind de Arduino Pro Micro met de computer, en upload de code.
 


int ledPin = 3;
int motionPin = 2;
int interval = 10000; // 10 seconden
unsigned long prevMillis = 0;
void setup() {
  pinMode(ledPin, OUTPUT);      // stel de ledPin in als output pin
  pinMode(motionPin, INPUT);     // stel de motionPin in als input pin
 
  Serial.begin(9600);
}
 
void loop(){
  int val = digitalRead(motionPin);  // lees de waarde van de sensor
  unsigned long currentMillis = millis();
  if (val == HIGH) {            // is de waarde van de sensor hoog?
    prevMillis = currentMillis; // dan 'reset' de timer
    digitalWrite(ledPin, HIGH); // zet de ledPin hoog, zodat de LED strip aan gaat
  }

  if ((millis()-prevMillis) >= interval){ // als er 10 seconden zijn verstreken
    digitalWrite(ledPin, LOW); // zet dan de ledPin laag, zodat de LED strip uit gaat.
  }

}