Guten Tag,
ich sitze gerade an einem Sketch, der einen Schrittmotor immer um einen Schritt bewegen soll. Während der Stillstandphase soll ein Relais schalten und eine LED anschalten (LED nur zur Pribe für mein eigentliches Projekt). Allerdings schaltet das Relais am Anfang nur einmal, die LED bleibt an. Der Schrittmotor macht wie gewollt seine Schritte.
Mit einem anderen Sketch funktioniert das Relais, die Verkabelung ist also korrekt. Es muss ein Fehler in meinem Code vorliegen. Vielleicht kann mir jemand sagen, wo der Fehler liegt. Ich finde ihn bis jetzt nicht.
Danke
Gruß
int DIR=4;
int PUL=5;
int ENA=6;
int Schritte;
float w;
int relais=8;
int SchrittmotorStatus;
int KontrollLED=10;
void setup(){
Serial.begin(9600);
pinMode(DIR,OUTPUT); //Direction
pinMode(PUL,OUTPUT); //Puls
pinMode(ENA,OUTPUT); //Enable
pinMode(relais,OUTPUT);
pinMode(KontrollLED,OUTPUT); // Leuchtet während des gesamten Messvorganges
digitalWrite(ENA,LOW);
}
void Schrittmotor (){
digitalWrite(PUL,HIGH);
delay(500);
digitalWrite(PUL,LOW);
delay(500);
}
void Relais(){
SchrittmotorStatus = digitalRead(PUL);
if (SchrittmotorStatus == LOW)
digitalWrite(relais, HIGH);
else
digitalWrite(relais, LOW);
}
void KontrollLampe(){
if(Schritte<201){
digitalWrite(KontrollLED,HIGH);
}
else{
digitalWrite(KontrollLED,LOW);
}
}
void loop()
{
digitalWrite(DIR,LOW); //Drehung im Uhrzeigersinn
for(Schritte= 1, w=1.8; Schritte <201; Schritte++, w+=1.8) //Schleife: 200Schritte/360° Drehung
{
KontrollLampe ();
Schrittmotor();
Relais();
Serial.print("Schritt: ");
Serial.print(Schritte);
Serial.print(" Winkel: ");
Serial.print(w);
Serial.println("°");
}
}