lucaosswald
06.12.2011, 18:18
Hallo
Ich habe vor einiger Zeit schonmal von meinem Projekt berichtet.
Ich wollte als Maturaarbeit einen Roboter bauen, des sich gleich wie eine Ameise bewegt. Dazu habe ich den Körper der Ameise im Masstab 1:115 vergrössert und in dieser Grösse einen Roboter gebaut. Danach analysierte ich den Schritt der Ameise genau und habe für jedes einzelne der 18 Gelenke eine Funktion aufgestellt, die die genaue Bewegung des Gelenks beschreibt im Verhältnis zur zurückgelegten Distanz des Körpers. Wenn die Ameise einen Schritt macht, bewegt sich ja der Körper nach vorne. Diese Bewegung habe ich in 12 gestoppt und die Winkel in jedem Punkt ausgemessen (mit GeoGebra^^). Auf jeden Fall wollte ich damit klar machen, dass die x-Achse bei allen 18 Funktionsthermen gleich ist.
Mein Problem ist nun, dass ich nur noch 1.5 Wochen Zeit bis zur Abgabe habe, aber der Roboter noch nicht programmiert ist.
Ich habe leider keinerlei Ahnung vom Programmieren und wollte daher fragen, ob mir jemand kurz helfen könnte.
Ich verwende ein Arduino Mega zur Steuerung der Servos.
Die ganz grundlegenden Schritte konnte ich schonmal anschauen und ich habe die Servos schon so getrimmt, dass alle Winkel (Nicht die Servos!) in einer 90° Position sind. Ich kenne also die Abweichung der einzelnen Servos. Hier mal der bisherige Code:
#include <Servo.h> //Definition der Servobibliothek
Servo s11,s12,s13,s21,s22,s23,s31,s32,s33,s41,s42,s43,s5 1,s52,s53,s61,s62,s63;
//Deklaration der Servoobjekten
//Servos werden ports zugeordnet
void setup()
{
s11.attach(25);
s12.attach(23);
s13.attach(27);
s21.attach(37);
s22.attach(35);
s23.attach(39);
s31.attach(22);
s32.attach(26),
s33.attach(24);
s41.attach(49);
s42.attach(53);
s43.attach(51);
s51.attach(34);
s52.attach(38);
s53.attach(36);
s61.attach(52);
s62.attach(48);
s63.attach(50);
}
//Setze alle Servos in 90' Position
void neutral()
{
s11.write(90-2);
s12.write(90-3);
s13.write(90-10);
s21.write(90+4);
s22.write(90-8);
s23.write(90-7);
s31.write(90+4);
s32.write(90-3);
s33.write(90-10);
s41.write(90+4);
s42.write(90+8);
s43.write(90-4);
s51.write(90-2);
s52.write(90+8);
s53.write(90+3);
s61.write(90+7);
s62.write(90+6);
s63.write(90+6);
}
void loop()
{
neutral();
}
Jetzt muss ich wie gesagt noch den Schritt programmieren.
Äusserst nützlich wäre ein Befehl, wo ich alle Funktionen der Servos eingeben könnte, die dann alle simultan mit den Werten von 0-12 durchgegangen werden. Wie geht das am einfachsten?
Lieber Gruss
Luca
Ich habe vor einiger Zeit schonmal von meinem Projekt berichtet.
Ich wollte als Maturaarbeit einen Roboter bauen, des sich gleich wie eine Ameise bewegt. Dazu habe ich den Körper der Ameise im Masstab 1:115 vergrössert und in dieser Grösse einen Roboter gebaut. Danach analysierte ich den Schritt der Ameise genau und habe für jedes einzelne der 18 Gelenke eine Funktion aufgestellt, die die genaue Bewegung des Gelenks beschreibt im Verhältnis zur zurückgelegten Distanz des Körpers. Wenn die Ameise einen Schritt macht, bewegt sich ja der Körper nach vorne. Diese Bewegung habe ich in 12 gestoppt und die Winkel in jedem Punkt ausgemessen (mit GeoGebra^^). Auf jeden Fall wollte ich damit klar machen, dass die x-Achse bei allen 18 Funktionsthermen gleich ist.
Mein Problem ist nun, dass ich nur noch 1.5 Wochen Zeit bis zur Abgabe habe, aber der Roboter noch nicht programmiert ist.
Ich habe leider keinerlei Ahnung vom Programmieren und wollte daher fragen, ob mir jemand kurz helfen könnte.
Ich verwende ein Arduino Mega zur Steuerung der Servos.
Die ganz grundlegenden Schritte konnte ich schonmal anschauen und ich habe die Servos schon so getrimmt, dass alle Winkel (Nicht die Servos!) in einer 90° Position sind. Ich kenne also die Abweichung der einzelnen Servos. Hier mal der bisherige Code:
#include <Servo.h> //Definition der Servobibliothek
Servo s11,s12,s13,s21,s22,s23,s31,s32,s33,s41,s42,s43,s5 1,s52,s53,s61,s62,s63;
//Deklaration der Servoobjekten
//Servos werden ports zugeordnet
void setup()
{
s11.attach(25);
s12.attach(23);
s13.attach(27);
s21.attach(37);
s22.attach(35);
s23.attach(39);
s31.attach(22);
s32.attach(26),
s33.attach(24);
s41.attach(49);
s42.attach(53);
s43.attach(51);
s51.attach(34);
s52.attach(38);
s53.attach(36);
s61.attach(52);
s62.attach(48);
s63.attach(50);
}
//Setze alle Servos in 90' Position
void neutral()
{
s11.write(90-2);
s12.write(90-3);
s13.write(90-10);
s21.write(90+4);
s22.write(90-8);
s23.write(90-7);
s31.write(90+4);
s32.write(90-3);
s33.write(90-10);
s41.write(90+4);
s42.write(90+8);
s43.write(90-4);
s51.write(90-2);
s52.write(90+8);
s53.write(90+3);
s61.write(90+7);
s62.write(90+6);
s63.write(90+6);
}
void loop()
{
neutral();
}
Jetzt muss ich wie gesagt noch den Schritt programmieren.
Äusserst nützlich wäre ein Befehl, wo ich alle Funktionen der Servos eingeben könnte, die dann alle simultan mit den Werten von 0-12 durchgegangen werden. Wie geht das am einfachsten?
Lieber Gruss
Luca