Für meine Abschlussprüfung möchte ich gerne mit einem Arduino Mega 2560 einen Schrittmotor ansteuern.
Ich habe dazu einen Pololu treiber mit dem Arduino verbunden.
Der Pololu hat 3 Eingänge (Step,Enable und Direction)
Jetzt habe ich folgende Void Funktion geschrieben:
int A_IST = 0;
int A_state = 0;
int A_SOLL = 0;
int A_speed = 4;
int A_way = 0;
int A_tick = 0;
void move_A(int A_deg){
// State 0 / Setzten des SOLL Wertes , Berechnen des Wegs || Init
if(A_state == 0){
A_SOLL = A_deg;
// Direction Auswahl
A_way = A_SOLL - A_IST;
// Negativer Weg
if ( A_way < 0){
A_way = A_IST - A_SOLL;
digitalWrite(A_dir_pin,LOW);
A_state = 2;
}
// Positiver Weg
else{
digitalWrite(A_dir_pin,HIGH);
A_state = 1;
}
}
// State 1 /
if(A_state == 1){
if(A_IST < A_SOLL){
Serial.println(A_IST);
if (A_tick < 2){
digitalWrite(A_step_pin,HIGH);
}
else{
digitalWrite(A_step_pin,LOW);
if (A_tick >= A_speed){
A_IST = A_IST + 1;
A_tick = 0;
}
}
A_tick = A_tick + 1;
}
}
Leider dreht sich der Motor zu langsam . Aber die Variable: A_speed kann ich nicht noch tiefer setzen. Ich suche jetzt eine Funktion die einen Impuls an einen Ausgang sendet und in der man die Länge des Impuls sowie die Pausenzeit angeben kann .
Ich hätte auch gern mal ein paar tipps wie man die Funktion kürzer fassen könnte und übersichtlicher gestaltet.
MFG UEBE