Stap 5: Test / controle
De eenvoudigste methode voor het beheren van de talcapults is handmatig met via RC auto-elektronica, maar er zijn tal van andere methoden die kunnen worden gebruikt om de talcapult.Hier is sommige arduino-code die ik gebruikt heb om te bepalen van twee talcapults, gebruikt het IR-sensoren zoals het type als beschreven in mijn instructable duino-tag.
Code:
(Niet mijn beste werken, maar u kunnen geven ideeën)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include
Servo servo1; maken van servo-object om te bepalen van een servo
Servo servo2;
int pos = 90; variabele op te slaan van de servo positie
int pos2 = 90; 2de servo
int grenzen = 90;
int sensor = 5;
int sensor2 = 4;
int inputPin = 12;
int actieve = 0;
int geleid = 2;
int val = 0;
int whichServo = 0;
int route [10];
int i = 0;
VOID Setup
{
Serial.begin(9600);
servo1.attach(9); de servo op pin 9 hecht aan de servo-object
servo2.attach(8);
pinMode (sensor, INPUT);
pinMode (sensor2, INPUT);
pinMode (inputPin, INPUT);
pinMode led (, uitvoer);
digitalWrite (inputPin, hoge);
Serial.println("Ready");
}
void loop {}
Val = digitalRead(inputPin);
Als (val == LOW) {}
if(Active == 1) {}
actieve = 0;
delay(300);
Val = hoog;
route [0] = 90;
route [1] = 120;
route [2] = 120;
route [3] = 120;
route [4] = 120;
route [5] = 120;
route [6] = 120;
route [7] = 120;
route [8] = 120;
route [9] = 120;
servoroute1();
servoroute2();
Serial.println("Safe");
}
else {}
actieve = 1;
delay(300);
Val = hoog;
route [0] = 120;
route [1] = 120;
route [2] = 120;
route [3] = 120;
route [4] = 120;
route [5] = 120;
route [6] = 120;
route [7] = 120;
route [8] = 120;
route [9] = 90;
servoroute1();
servoroute2();
Serial.println("Active");
}
}
Als (digitalRead(sensor) == LOW & & actieve == 1) {}
whichServo = 2;
Als (digitalRead(sensor2) == HIGH) {}
whichServo = 1;
}
Serial.Print ("HIT. Brand servo: ");
Serial.println(whichServo);
fireTalcapult();
delay(30);
}
servo1.write(POS); servo naar positie in de variabele 'pos' vertellen
servo2.write(pos2);
Als (actieve == 1) {}
digitalWrite (led, hoog);
Serial.println("active1");
}
else {}
digitalWrite (led, laag);
Serial.println("safe1");
}
}
ongeldig fireTalcapult() {}
Serial.println("Fire");
Subroutine voor vloeiende beweging van een servo over een complexe route
route [0] = 20;
route [1] = 120;
route [2] = 130;
route [3] = 100;
route [4] = 90;
route [5] = 90;
route [6] = 90;
route [7] = 90;
route [8] = 90;
route [9] = 90;
if(whichServo == 1) {}
Snelle eerste sprong
POS = route [0];
servo1.write(POS);
delay(300);
Zorgt voor vloeiende beweging
servoroute1();
}
if(whichServo == 2) {}
Snelle eerste sprong
pos2 = route [0];
servo2.write(pos2);
delay(300);
Zorgt voor vloeiende beweging
servoroute2();
}
}
ongeldig servoroute1() {}
terwijl (ik < 10) {}
Als (pos > route[i]) {}
POS = pos - 1;
}
Als (pos < route[i]) {}
POS = pos + 1;
}
Als (pos == route[i]) {}
i = i + 1;
}
servo1.write(POS);
delay(10);
}
Ik = 0;
}
ongeldig servoroute2() {}
terwijl (ik < 10) {}
Als (pos2 > route[i]) {}
pos2 = pos2 - 1;
}
Als (pos2 < route[i]) {}
pos2 = pos2 + 1;
}
Als (pos2 == route[i]) {}
i = i + 1;
}
servo2.write(pos2);
delay(10);
}
Ik = 0;
}