Nya animatronic ögon: Rock på! (14 / 21 steg)
Steg 14: Arduino skiss
Skissen är mycket enkel. Steg i blocket När rörelsedetektorn är hög, för att fastställa händelseförloppet som ögat kommer att göra svar till att upptäcka rörelse. Det skulle kunna använda vissa TLC, eftersom det är den första C-program som jag har skrivit.
Skiss till blinka prop ögon när någon närmar sig.
Beteende kan ändras beroende på hur länge de stannar
Testversion blinkar LED
#include
void Open_Eyes();
void Close_Eyes();
void Blink_Eyes();
Servo myservo; skapa objekt för att styra en servo servo
int motionPin = 3; analoga pin används för att ansluta rörelsedetektorn
int motionVal; variabel att läsa värdet från det analoga stiftet
Servo är kopplad på pin 9
int ServoPin = 9;
Stift 13 har en lysdiod ansluten på de flesta Arduino styrelser.
ge den ett namn:
int ledde = 13.
Flagga för tidigare tillstånd
booleska wasHIGH = false;
void setup() {
Serial.BEGIN(9600);
initiera servo på "ServoPin"
myservo.attach(ServoPin); tillmäter objektet servo servo på definierade stift
initiera digital PIN-koden som en utgång.
pinMode ledde (, OUTPUT);
digitalWrite (ledde, låg); Inaktivera LED genom att spänningen låg
Att rörelsedetektorn att värma upp.
Delay(20000);
Börja med slutna ögon
Close_Eyes();
}
void loop() {
motionVal=digitalRead(motionPin);
booleska motion = (motionVal == 1);
om (motion) {
Open_Eyes();
Delay(2000);
Blink_Eyes();
Blink_Eyes();
Delay(3000);
Blink_Eyes();
Delay(15000);
Blink_Eyes();
Delay(15000);
wasHIGH = sant;
digitalWrite(led,HIGH);
}
motionVal=digitalRead(motionPin);
om (! motion) {
om (wasHIGH) {
Close_Eyes();
wasHIGH = false;
}
digitalWrite(led,LOW);
}
Delay(200);
}
void Close_Eyes() {
för (int pos = 179; pos > = 1; pos-= 2) {/ / går från 180 grader till 0 grader
myservo.write(POS); berätta servo gå för att placera i variabel "pos"
Delay(3);
}
}
void Open_Eyes() {
för (int pos = 0; pos < 180; pos += 2) {/ / går från 0 grader till 179 grader
myservo.write(POS); berätta servo gå för att placera i variabel "pos"
Delay(3); Waits 1ms för servo att nå ställning
}
}
void Blink_Eyes() {
Close_Eyes();
Open_Eyes();
Delay(10);
}