ich finde den fehler nicht !
hier erstmal mein programm :
#define STEPS_COUNT 8
int stepsOn1[STEPS_COUNT] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};
int stepsOn2[STEPS_COUNT] = {HIGH, LOW, HIGH, LOW, HIGH, LOW, HIGH, LOW};
int stepsOn3[STEPS_COUNT] = {HIGH, LOW, LOW, LOW, HIGH, LOW, LOW, LOW};
int stepsOn4[STEPS_COUNT] = {HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW};
int stepsOn5[STEPS_COUNT] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};
int stepsOn6[STEPS_COUNT] = {HIGH, LOW, HIGH, LOW, HIGH, LOW, HIGH, LOW};
int stepsOn7[STEPS_COUNT] = {HIGH, LOW, LOW, LOW, HIGH, LOW, LOW, LOW};
int stepsOn8[STEPS_COUNT] = {HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW};
int stepsOff[STEPS_COUNT] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW};
int stepCounter = 0;
bool firstRun = true;
long previousMillis = 0;
long interval = 100;
int clockIn = 3;
int greenLed = 12;
//--------------------------------------------------------------------------
void setup(){
pinMode(greenLed, OUTPUT);
pinMode(clockIn, INPUT);
}
//--------------------------------------------------------------------------
void loop(){
if(digitalRead(clockIn) == HIGH && firstRun) {
previousMillis = millis();
digitalWrite(greenLed, stepsOn1[stepCounter]);
firstRun = false;
}
if((millis() - previousMillis > interval) && !firstRun) {
//previousMillis = millis();
digitalWrite(greenLed, stepsOff[stepCounter]);}
if(digitalRead(clockIn) == LOW){
firstRun = true;
}
stepCounter = (++stepCounter);
if(stepCounter >= 8) {
delay(2000);
stepCounter = 0;
}
}
an clockIn=3 hängt ein NE555 der mir die clock macht.
doch leider funktioniert das ganze nicht so wie es soll.
meine greenLed leuchtet im 2 sekunden-takt.
also durch meine delay(2000).
ich gehe mal davon aus das meine bedingungen nicht richtig sind und :
if(digitalRead(clockIn) == LOW){
firstRun = true;
}
nicht zum richtigen zeitpunkt angenommen wird.
ich möchet das die erste if bedingung ausgeführt wird und greenLed leuchtet.
durch die zweite if bedingung wird sie wieder ausgeschaltet und soll dann warten bis die clock ein low-signal gibt um den nächsten schritt durchzuführen.
wo ist mein denkfehler ?
ich hoffe, ihr könnt mir auf die sprünge helfen.
danke schon mal im voraus !