Robot Ball dörrvakt (4 / 4 steg)
Steg 4: Äntligen ladda arduino skiss och justera programmet parametrar
Här är min skiss, jag har en subrutin att köra servo med långsammare hastigheter.
Du kommer att märka att enda studsa koden bara höjer pendel ribban till en viss höjd. Dubbletten studsa rutinmässiga höjer det till en höjd med lägre hastighet så bollen släpper långsammare och sedan flyttar resten av vägen ner till fånga bollen på sin andra bounce.
Ha det så kul!
#include
Servo servo1,
int servangle = 0;
int potPin = 4;
int ledPin = 13. Välj PIN-koden för LED int val = 0; variabel för att lagra värdet kommer från sensorn int
int fördröjningstid = 0; Analog läsa stift const int buttonPin = 2;
void myServo (int curAngle int newAngle, int angleInc, int incDelay, int servoNum)
{om (curAngle < newAngle) {
för (int vinkel = curAngle; vinkel < newAngle; vinkel += angleInc) {
om (servoNum == 1) servo1.write(angle);
om (servoNum == 2) servo2.write(angle);
Delay(incDelay); } }
annars om (curAngle > newAngle) {
för (int vinkel = curAngle; vinkel > newAngle; vinkel-= angleInc) {
om (servoNum == 1) servo1.write(angle);
om (servoNum == 2) servo2.write(angle);
Delay(incDelay); } } }
void setup() {
Serial.BEGIN(9600);
pinMode (ledPin, produktionen);
förklara ledPin som en utgång
pinMode(buttonPin,INPUT);
servo1.attach(11);
Delay(10);
servo1.write(90); Delay(5000);
randomSeed(analogRead(0)); }
void loop() {
Serial.Print ("fördröja val ="); Serial.Print(val); Serial.Print ("vinkel val ="); Serial.println(valPot2); digitalWrite(ledPin,HIGH);
studsa två gånger till vänster myServo(120,73,1,20,1);
vänster delay(500);
myServo(73,65,1,20,1);
vänster delay(2000);
studsa en gång till höger
myServo(65,120,1,20,1);
rätt delay(2000);
studsa en gång till vänster
myServo(120,65,1,20,1);
vänster delay(2000);
studsa en gång till höger
myServo(65,120,1,20,1);
rätt delay(2000);
digitalWrite(ledPin,LOW);
CLI();
}