Go Down

Topic: Sequenz ohne delay() / synchronisation (Read 1 time) previous topic - next topic

a.xul

hallo,

auch auf die gefahr hin, dass das thema irgendwo schon behandelt wurde und ich mich zum doesbaddel mache, frage ich mal nach:

eine sequenz mit delay() funktioniert ohne probleme. so weit bin ich schon gekommen.

jetzt moechte ich gerne, dass wenn der input "HIGH" ist, die erste LED mit "HIGH" geschrieben wird. beim naechsten intervall soll dann die 2. LED mit "HIGH" geschrieben werden. das weitersteppen funktioniert in meinem programm nur per zufall bzw. mit einer zu schnellen geschwindigkeit.

die variable wird erst mit einem input "LOW" inkrementiert... gerne haette ich eine loesung, bei der ein zwischenwert von HIGH zu LOW den wert inkrementiert.

hier mein quellcode:

Quote
int inPin12 =  12;

int state = LOW;
int count = 0;

void setup()  
{                
 pinMode(0, OUTPUT);    
 pinMode(1, OUTPUT);
 pinMode(2, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);    
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
 pinMode(7, OUTPUT);
 pinMode(inPin12, INPUT);
}

void loop()                    
{
 state = digitalRead(inPin12);

 if (state == HIGH)
 {
   digitalWrite(count, HIGH);
 }
 else
 {
 digitalWrite(count, LOW);
 count++;
 }
 
 if (count >= 8)
 {
   count = 0;
}
}


ueber eine hilfestellung bin ich sehr dankbar.

syntec

Hallo,

ich weiß jetzt noch nicht so richtig was du meinst und willst.
Wenn du in bestimmten Zeitabschnitten eine Aktion auslösen willst, dann kannst du ganz gut einen Timer verwenden http://www.arduino.cc/playground/Main/MsTimer2

Wenn du mehrer Aktionen zu verschiedenen Zeitpunkten durchführen möchtest, dann kannst du den Timer dazu verwenden, eine Funktion aufzurufen, in der Zähler hochgezählt werden.
Den Wert des Zählers kannst du mit einer if-Anweisung abfragen und eine Aktion durchführen lassen. Somit kannst du beliebige Aktionen zu verschiedenen Zeitpunkten (mehrere counter) ausführen.

Beachte, dass die Zähler nach einer Aktion wieder auf Null gesetzt werden müssen.

LC_Data

Gerade die "hohe" Geschwindigkeit gekoppelt mit Unregelmäßigkeit lässt darauf schliessen das Du vielleicht gar kein Software- sondern ein Hardwareproblem hast.

Thema Tastenprellen....

Ist das im Bereich des möglichen ??
Es gibt 10 Gruppen von Menschen:
Die einen können binär zählen, die anderen nicht.

a.xul

hallo,

sorry wenn etwas unverstaendlich.

hardwareproblem ist es nicht, da bei einem HIGH am input eine LED ja durchgaengig leuchtet.

bei einem LOW am input inkrementiert mein programm den counter permanent. das ist das problem.

ich moechte, dass das inkrementieren des counters beim dem tastendruck erfolgt.

1. tastendruck = 0
2. tastendruck = 1
2. tastendruck = 2
etc

verstaendlicher?  :-[

LC_Data

Da ich selbst absoluter Anfänger bin ist mein Ratschlag eher naiver Natur sollte aber das Problem lösen können:

http://arduino.cc/en/Reference/If

damit sollte eine Lösung möglich sein.

Es bessere Antwort bekommst Du bestimmt von den Code-Königen
Es gibt 10 Gruppen von Menschen:
Die einen können binär zählen, die anderen nicht.

Go Up