Stap 3: De Code
#include < ServoTimer1.h >
/*
- "Spuiten". Jonathan Robson, februari 2009.
*
- Een PIR activeert een servo & pomp. Servo beweegt haar arm naar een willekeurige positie tussen 60 en
- 120 graden, branden een pomp voor halve seconde en rentabiliteit wilt centreren (90 graden). Cyclus wordt herhaald
- 3 keer met willekeurige tussenpozen tussen de helft en 3 seconden dan wacht om verdere beweging detecteren.
- Schakeling op basis van http://itp.nyu.edu/physcomp/Tutorials/HighCurrentLoads
- PIR code aangepast van http://www.liquidware.org/view.php?id=63
- Willekeurige code aangepast van www.arduino.cc/en/Tutorial/Blink & www.arduino.cc/en/Reference/Random
- Servo code aangepast van http://www.ladyada.net/make/mshield/use.html
*/
int transistorPin = 8; transistor basis aangesloten op pin 8
ServoTimer1 servo1; Hiermee definieert u de servo
lange randOff = 0; Een variabele initialiseren voor de OFF tijd tussen de opnamen
lange randNumber; Initialiseren van een variabele voor servo positie hoek en de vertraging tussen de opnamen
VOID Setup
{
servo1.attach(10); Servo op pin 10
pinMode (8, OUTPUT); de transistor pin 8 stellen als uitvoerapparaat voor pomp
pinMode (5, INPUT); de PIR pin 5 ingesteld als input
digitalWrite (8, laag); LAAG definieert als beweging
randomSeed (analogRead (0)); randomize
}
int pinin = 0;
lange countint = 0;
void loop
{
pinin = digitalRead(5); leest de PIR-sensor
terwijl (pinin == 0)
{
pinin = digitalRead(5);
}
servo1.write(90); sets servo wilt centreren
randOff = willekeurige (500, 3000); genereren uit de tijd tussen 1/2 en 3 seconden
delay(randOff); wacht op een willekeurige tijd terwijl OFF
servo1.write (randNumber = willekeurige (60, 120)); Servo naar willekeurige positie binnen 30 graden van center
delay(400); geeft servo tijd om er te komen
digitalWrite (transistorPin, hoge); de pomp draait op
delay(500); branden pomp voor 1/2 seconden
digitalWrite (transistorPin, laag); bochten pomp uit
servo1.write(90); servo terugverplaatst naar centrum
randOff = willekeurige (500, 3000); genereren nieuwe OFF tijd tussen 1/2 en 3 seconden en herhaal
delay(randOff);
servo1.write (randNumber = willekeurige (60, 120));
delay(400);
digitalWrite (transistorPin, hoge);
delay(500);
digitalWrite (transistorPin, laag);
servo1.write(90);
randOff = willekeurige (500, 3000); genereren uit de tijd tussen 1/2 en 3 seconden en herhaal
delay(randOff);
servo1.write (randNumber = willekeurige (60, 120));
delay(400);
digitalWrite (transistorPin, hoge);
delay(500);
digitalWrite (transistorPin, laag);
servo1.write(90);
delay(3000); geeft de PIR-tijd om te "regelen" vóór het opnieuw lezen
}