Ich bin momentan dabei einen Sprungkraft-Trainer nach einem neuen Trainingsprinzip zu bauen.
Dazu springt der Teilnehmer über 5 Poolnudeln, welche über einen langen Winkel an einem Schrittmotor befestigt sind.
Durch die Motoren wird die Höhe und der Winkel des zu überwindenden Sprungs (Poolnudel) geregelt.
Das Ganze möchte ich über den Arduino steuern. Es gibt einige vordefinierte Programme, bei denen ich festlege in welche Position die Motoren fahren sollen bzw. ein Zufalls-Programm.
Weiter soll das Ganze auch Manuel einstellbar sein.
Erste Tests mit einem Treiber Baustein habe ich schon mit Erfolg gemacht.
So soll das im groben aussehen:
Wäre das soweit umsetzbar?
Hättet ihr evtl. Tipps auf was ich beim Programmieren achten sollte?
Ich habe zwar früher mal eine Programmiersprache gelernt, aber das ist schon lange her und ich denk ich muss mir da die Parts aus einzelnen Projekten ableiten
Endlich mal jemand, der ein Projekt mit brauchbaren Diagrammen beschreiben kann
Probleme sehe ich keine, zumindest keine grundsätzlichen. Der Teufel steckt dann aber im Detail, und ich vermute mal, daß da noch viele Features hinzukommen werden - der Appetit kommt beim Essen
Willst Du mit dem mechanischen Aufbau anfangen, oder mit der Programmierung?
Ja vermutlich wird währenddessen noch etwas dazu wachsen
Ich habe zum test schon einen Motor und einen treiber besorgt, da ich testen wollte, ob der Schrittmotor meinen Anforderungen gewachsen ist.
Daher habe ich nur ein Testprogramm für den Motor
Da ich noch Teile für die Hardware besorgen bzw. bestellen muss. Hätte ich jetzt etwas mit Software angefangen und dann wenn die Hardware da ist es quasi sychron gemacht
das hab ich jetzt als Test bis jetz:
// Programm für Differenziellen Sprungtrainer //
// Masterarbeit SOSE Johannes Guthenberg Universität Mainz//
// Pins den Variabeln zuordnen //
int pinDir = 12; // pin definieren als Richtung als Digital Pin12 //
int pinStep = 11; // pin definieren als Richtung als Digital Pin11 //
// Ein und Ausgänge definieren //
void setup()
{
pinMode(pinDir, OUTPUT); // pin definieren als Richtung als Ausgang rechts=high, links=low //
pinMode(pinStep, OUTPUT); // pin definieren als Schritt als Ausgang Schritt=high //
}
// Programmschleife //
void loop()
{
drehen(150, 6000); // Variable Drehen als Step auf Pin 11 (Anzahl der Schritte & + =rechts, -=links, Geschwindigkeit: große Zahl=langsam, kleine Zahl=schnell) //
delay(3000); // Verzögerung in Milisekunden //
drehen(-150, 6000);
delay(3000);
}
// Funktionen definieren //
void drehen(int schritte, int tempo) // Funktionen drehen beinhaltet Variabeln Schritte und Tempo //
{
if (schritte > 0) // Wenn Schritte größer 0 //
digitalWrite(pinDir, HIGH); // Schreibe Pin Richtung = High //
else
digitalWrite(pinDir, LOW); // Wenn Schritte < 0; schreibe Pin Richtung = LOW //
schritte = abs(schritte);
for (int i = 0; i < schritte; i++) // Schritt Schleife i=0 Zähle pro Schritt + //
{
digitalWrite(pinStep, HIGH); // schreibe Pin Schritt=high //
delayMicroseconds(tempo); // warte zeit zum schritt machn //
digitalWrite(pinStep, LOW); // schreibe Pin Schritt=low //
delayMicroseconds(tempo); // warte zeit //
}
}
Code bitte in code tags </> posten. Du kannst das nachträglich noch mit Edit More ändern (Code markieren und </> anklicken).
Ich möchte Dich nicht von der Verwendung von delay() abhalten, Dein Projekt funktioniert auch mit. Es wird nur etwas unschön, wenn die Schrittmotoren nicht gleichzeitig betrieben werden können. Andererseits schont das die Stromversorgung...