Zusammenfassung
Dies war ein Bot, den wir verwendeten, um Workshops über die Verwendung eines Arduino zur Steuerung eines Gehroboters zu unterrichten.
Der Roboter bewegte sich nur vorwärts und rückwärts, zeigte den Benutzern aber, wie man einen Joystick, einen Stromschalter, Batterien und Servos an einen Arduino anschließt und dann alles so programmiert, dass es funktioniert.
Anweisungen
//
// Code für einen 3D-gedruckten Roboter
// Erfahren Sie mehr unter:http://www.instructables.com/id/3D-Printed-Robot/
// Dieser Code ist in der Public Domain.
//
//Füge die Servo-Bibliothek hinzu
einbeziehen
//Erstelle zwei Servo-Instanzen
Servo meinServo;
Servo myservo1;
int frontPin = 9;
int backPin = 10;
//Ändere diese Zahlen, bis die Servos zentriert sind!!!!
//In der Theorie ist 90 das perfekte Zentrum, aber es ist normalerweise höher oder niedriger.
int FrontBalanced = 91;
int BackCentered = 102;
int Winkel = 25;
//Variablen zur Kompensation des hinteren Gleichgewichtszentrums, wenn sich das vordere verschiebt
int backRight = BackCentered - 10;
int backLeft = BackCentered + 10;
int xPin = A4;
int yPin = A5;
const int FRONT = 1;
const int BACK = 2;
const int LINKS = 3;
const int RIGHT = 4;
//Richten Sie die Anfangsbedingungen der Servos ein und warten Sie 2 Sekunden.
void setup()
{
myservo1.attach(frontPin);
myservo.attach(backPin);
myservo1.write(FrontBalanced);
myservo.write(BackCentered);
// delay(5000);
Serial.begin(9600);
)
void frontLeg(int x) {
myservo1.write(x);
)
void backLeg(int x) {
myservo.write(x);
)
void loop()
{
int x = analogRead(xPin);
int y = analogRead(yPin);
Serial.print("x :");
Serial.println(x);
Serial.print("y :");
Serial.println(y);
int direction = 0;
wenn (x > 700) {
Richtung = ZURÜCK;
} else if (x < 300) {
Richtung = VORNE;
)
// wenn (y > 700) {
// Richtung = RECHTS;
// } else if (y < 300) {
// Richtung = LINKS;
// }
switch (Richtung) {
Gehäuse VORNE:
front();
Pause;
Hülle RÜCKSEITE:
zurück();
Pause;
Fall LINKS:
left();
Pause;
Gehäuse RECHTS:
Rechts();
Pause;
Standard:
Straight();
Pause;
)
Verzögerung(1);
)
//Gehfunktion
void front(){
FrontLeg(FrontBalanced + Winkel);
delay(50);
Hinterbein (Hinterzentriert - Winkel);
Verzögerung(200);
frontLeg(FrontBalanced - Winkel);
delay(50);
BackLeg(BackCentered + Winkel);
Verzögerung(200);
)
void zurück().
Hinterbein (Hinterzentriert - Winkel);
delay(50);
FrontLeg(FrontBalanced + Winkel);
Verzögerung(200);
BackLeg(BackCentered + Winkel);
delay(50);
frontLeg(FrontBalanced - Winkel);
Verzögerung(200);
)
//Gehfunktion
void left(){
frontLeg(FrontBalanced + Winkel - 5);
delay(100);
Hinterbein (Hinterzentriert - Winkel);
delay(300);
frontLeg(FrontBalanced - Winkel - 5);
delay(100);
BackLeg(BackCentered + Winkel);
delay(300);
)
//Gehfunktion
void right(){
frontLeg(FrontBalanced + Winkel + 5);
delay(100);
Hinterbein (Hinterzentriert - Winkel);
delay(300);
frontLeg(FrontBalanced - Winkel + 5);
delay(100);
BackLeg(BackCentered + Winkel);
delay(300);
)
void straight() {
FrontLeg(FrontBalanced);
BackLeg(BackCentered);
)
태그
모델 소스
