Arduino animatörerna-gör din awesome kostymer mer awesome! (7 / 15 steg)
Steg 7: Lägga till en servo
Bygger på föregående exempel nu lägger vi till en servo som knyts till en andra tryckknapp. Detta använder Arduino Servo biblioteket för att styra servo position. Genom att ändra kan värdet inom parentes efter servo1.write kod du styra hur långt servo flyttar.
Kopiera och klistra in denna skiss på din Arduino fönster-
/*
* Exempel 3
* Detta exempel kommer att blinka två lysdioder och sedan tona en annan LED när Knapp1 är pressade och släppt
* och ett servo kommer att flytta efter button2 är pressade och släppt
* Honus 2010
* Modifierad från Adafruit omväxlande växlingskoden, http://www.adafruit.com
*/
#include "Servo.h" / / include servo biblioteket
Servo servo1; skapar en instans av objektet servo att styra en servo
int servoPin1 = 9; kontroll stift för servo
int ledPin1 = 8; kontroll stift för LED
int ledPin2 = 7.
int ledPin3 = 11;
int buttonPin1 = 14. knappen är ansluten till stift 14 (analoga 0 stift)
int buttonPin2 = 15. knappen är ansluten till pin 15 (analog 1 stift)
int värde1; variabel för att läsa pin status
int värde2;
int buttonState1; variabel för att hålla den sista knapp staten
int buttonState2;
void setup() {
servo1.attach(servoPin1); tillmäter objektet servo servo på pin 9
pinMode (buttonPin1, ingång); ställa in knappen pin som indata
pinMode (buttonPin2, ingång);
buttonState1 = digitalRead(buttonPin1); Läs det ursprungliga tillståndet
buttonState2 = digitalRead(buttonPin2); Läs det ursprungliga tillståndet
pinMode (ledPin1, produktionen); Anger den LED stiftet som utdata
pinMode (ledPin2, produktionen);
}
void loop() {
servo1.write(20);
värde1 = digitalRead(buttonPin1); Läs indatavärde och lagra den i val
om (värde1! = buttonState1) {/ / knappen staten har förändrats!
om (värde1 == låg) {/ / kolla om knappen trycks
Serial.println ("knappen bara tryckte");
digitalWrite (ledPin1, hög); Anger den LED pin HIGH (vänder det på)
Delay(500); vänta 500 millisekunder
digitalWrite (ledPin2, hög);
Delay(500);
digitalWrite (ledPin1, låg); Anger den LED stiftet låg (stänger av)
Delay(500);
digitalWrite (ledPin2, låg);
Delay(500);
tona in från min till max i steg om 5 poäng:
för (int fadeValue = 0; fadeValue < = 255; fadeValue += 5) {
anger värdet (varierar från 0 till 255):
analogWrite (ledPin3, fadeValue);
vänta 30 millisekunder att se ljusreglering effekten
Delay(40);
}
tona ut från max till min i steg om 5 poäng:
för (int fadeValue = 255; fadeValue > = 0; fadeValue-=5) {
anger värdet (varierar från 0 till 255):
analogWrite (ledPin3, fadeValue);
vänta 30 millisekunder att se ljusreglering effekten
Delay(40);
}
} annat {/ / knappen trycks - inte -...
digitalWrite (ledPin1, låg); stänga av lampan
digitalWrite (ledPin2, låg);
}
}
värde2 = digitalRead(buttonPin2); Läs indatavärde och lagra den i val 2
om (värde2! = buttonState2) {/ / knappen staten har förändrats!
om (värde2 == låg) {/ / kolla om knappen trycks
servo1.write(160); rotera servo till 160 grader
Delay(3000); vänta 3 sekunder
servo1.write(20); rotera till 20 grader
} annat {/ / knappen trycks - inte -...
servo1.write(20);
}
}
buttonState1 = värde1; spara den nya staten i våra variabel
buttonState2 = värde2;
}