Stap 4: Kinderen wakker
Kunnen we dit met relatief eenvoudige schakelingen met behulp van de populaire Arduino. Kunt u enkele goede tutorials op ladyada.org of arduino.cc. De code is een mix tussen de fundamentele lichtsensor detectie en de eenvoudige servo-beweging. Het vindt u hieronder. Een opmerking over de onderstaande code. We hebben twee verschillende formaat servo's, om wat voor reden die het verkeer van deze verschilt dus een gemodificeerde bereik voor de kleinere servo nodig om te worden gebruikt. Het belangrijkste is dat de servo beweegt van horizontaal naar verticaal. Dit kan betekenen dat u wilt spelen met de waarden in de code of de huidige positie van de servo arm.
Demo:
Code:
#include < Servo.h > Servo spullen lichte spullen VOID Setup Graaf = 0; void loop
#include < stdio.h >
Servo myservo; maken van servo-object om te bepalen van een servo
maximaal acht servo-objecten kan worden gemaakt
Servo smallservo;
int pos = 0; variabele op te slaan van de servo positie
int wakeUp = 0; variabele te zeggen als kind omhoog of niet 0 moet: 1 down: up
int val = 0; variabele de waarde afkomstig van de sensor opslaan
int count;
{
Serial.begin(9600);
Servo spullen
myservo.attach(9); de servo op pin 9 hecht aan de servo-object
smallservo.attach(13);
POS = 110;
lichte spullen
pinMode (A2, INPUT); de LDR declareren als een INPUT
}
{
Graaf ++;
gaan zitten in bed
if(wakeUp == 1)
{
voor (pos < 179, pos; pos += 1) / / gaat van 0 graden tot 180 graden
{/ / in stappen van 1 graad
myservo.write(POS); servo naar positie in de variabele 'pos' vertellen
smallservo.write(POS-70);
delay(15); wacht 15ms voor de servo te bereiken de positie
}
}
vast
if(wakeUp == 0)
{
voor (pos; pos > = 110; pos-= 1) / / gaat van 180 graden tot 0 graden
{
myservo.write(POS); servo naar positie in de variabele 'pos' vertellen
smallservo.write(POS-70);
delay(15); wacht 15ms voor de servo te bereiken de positie
}
}
lichtsensor spullen
Val = analogRead(A2);
Serial.Print ("licht waarde =");
Serial.println(val);
Als (val > 800) //change gebaseerd op ambient lichtniveaus
{
wakeUp = 1;
}
anders
{
wakeUp = 0;
}
delay(1000);
}