Hi Leute,
ich habe mir neulich einen Inkrementalgeber zugelegt. Für den Anfang wollte ich ein kleines Programm schreiben, womit ich mit dem Inkrementalgeber die Blinkfrequenz variieren kann. Nunja den Inkrementalgeber kann ich auslesen, aber beim Blinken wird es Interessant! Die LED blinkt zwar, hört aber nach kurzer Zeit damit auf. Ich kann mir nicht ganz erklären warum. Aber vil. ist es ja nur ein ganz einfacher Logikfehler von mir.
Naja hier der Code: (geht bestimmt noch eleganter zu lösen)
Code:
int LED_1=5;
int tmp=0;
unsigned long timer_1=0;
unsigned long timer_2=0;
unsigned long time_on=50; //Anzeit der LED in Millisekunden
unsigned long time_off=50; //Auszeit der LED in Millisekunden
void setup()
{
__pinMode(LED_1, OUTPUT);
}
void loop()
{
__if(tmp==0) //Wenn Blinkvorgang beendet, von forn bginnen
__{
____digitalWrite(LED_1, HIGH); //LED anschalten
____timer_1=millis(); //erste Zeit nehmen
____tmp=1;//dauerhaftes Zeitnehmen verhindern
__}
__if(millis() == (timer_1+time_on)) //wenn die vorher genommene Zeit PLUS der Anzeit mit der derzeitigen Zeit übereinstimmt...
__{
____digitalWrite(LED_1, LOW); //...schalte LED aus...
____timer_2=millis(); //...und nehme Zeit 2
__}
__if(millis() == (timer_2+time_off)) //Wenn Auszeit abgelaufen ist, beginne von forn
__{
____tmp=0;
__}
}
Habt Ihr einen Lösungsansatz für mich? millis() braucht ja glaube so an die 70Tage bis es auf Null zurückfällt, daran kann es also nicht liegen...
Viele Grüße, Green
Lesezeichen