Stap 3: Wire planken, schakelaar en servo's en programma
Schema ziet u hoe Verbind elektrische onderdelen.
(Oeps! De 1 k-weerstand moet gaan op de grond zijkant van switch, niet aan de kant van het signaal.)
Hier is de code:
#include servo.h
Servo servo1 servo2, servo3; int potPin = 2; Selecteer de invoer pin voor de potentiometer int servangle = 0; Servo hoek variabele int potPin = 4; Selecteer de invoer pin voor de potentiometer int soundPin = 4; Selecteer de invoer pin voor de potentiometer int ledPin = 13; Selecteer de pin voor de LED int val = 0; variabele voor het opslaan van de waarde afkomstig van de sensor int valPot2 = 0;
int valInc = 4; int currAngle = 0; int newAngle = 0; int delayTime = 0; Analoge Lees pinnen const int buttonPin = 2; int buttonState = 0; variabele voor het lezen van de drukknop status void myServo (int curAngle, int newAngle, int angleInc, int incDelay, int servoNum) {als (curAngle < newAngle) {voor (int hoek = curAngle; hoek < newAngle; hoek += angleInc) {als (servoNum == 1) servo1.write(angle); als (servoNum == 2) servo2.write(angle); delay(incDelay);}} anders als (curAngle > newAngle) {voor (int hoek = curAngle; hoek > newAngle; hoek-= angleInc) {als (servoNum == 1) servo1.write(angle); als (servoNum == 2) servo2.write(angle); delay(incDelay);}}}
void setup {Serial.begin(9600); pinMode (ledPin, OUTPUT); / / verklaren van de ledPin als uitgang / / pinMode(buttonPin,INPUT), pinMode (buttonPin, INPUT); pinMode (soundPin, OUTPUT); servo1.attach(9); delay(10); myServo(90,75,1,10,1); servo2.attach(11); delay(10); myServo(90,90,1,10,2); delay(2000);}
VOID signOftheCross() {digitalWrite(soundPin,HIGH); delay(2000); digitalWrite(soundPin,LOW); / / myServo(50,75,1,15,1); myServo(90,75,1,10,1); delay(500); myServo(90,120,1,15,2); delay(1000); myServo(120,70,1,15,2); delay(1000); myServo(70,90,1,15,2); / / delay(500); myServo(80,40,1,15,1); delay(100); myServo(50,105,1,15,1);} void loop {/ / Serial.print ("buttonpin ="); Serial.println(digitalRead(buttonPin)); Val = 1000; Serial.Print ("val uitstellen ="); Ser buttonState = digitalRead(buttonPin);
Als (buttonState == HIGH) {/ / LED inschakelen: digitalWrite (ledPin, hoge); delay(3000); signOftheCross(); delay(1000);} anders {/ / LED uitzetten: digitalWrite (ledPin, laag);}
cli(); delay(5000); }