Guten Tag! Ich bin noch ein ziemlicher Anfänger in Sachen Microcontroller und schäme mich fast eine so banale Frage überhaupt zu stellen. Ich habe mir ein Arduino Board bestellt und habe nun dazu eine Frage. Ich habe eine Tonabfolge programmiert und möchte nun diese per Tasten druck abbrechen. Da aber der Zustand des Buttons am Anfang meiner Hauptschleife abgefragt wird, muss ich praktisch den Taster die ganze Zeit gedrückt halten, bis meine Schleife von vorn beginnt, damit der Befehl "noTone" ausgeführt werden kann. Ich aber möchte, dass der "Sound" sofort beendet wird. Nun habe ich mich etwas informiert und bin auf den Begriff "Interrupt" gestoßen. Doch auch nach längerem recherchieren habe ich noch nicht die genaue Aufbauweise und wie ich diesen Befehl in meinen Sketch einbauen kann durchschaut. Daher wäre ich Euch sehr verbunden, wenn ihr mir etwas auf die Sprünge helfen könntet. Vielen Dank im voraus Gruß Julian
eine pffigere Programmierung in der Hauptschleifer erreicht das Ziel auch. Du hast bestimmt mit delay gearbeitet. Lass die weg und arbeite mit einem Timertakt und einigen If Abfragen
Vielen Dank für Deine Antwort! Doch ist es nicht einfacher und schneller ohne die vielen If Schleifen? Außerdem habe ich oben genannt,dass ich mich noch nicht so gut auskenne, daher wäre es sehr nett, wenn du mir sagen könntest was ein "Timertakt" ist und wie man ihn einsetzt :-) Vielen Dank!
Mit dem Thema bist du schon mitten in der Programmierung für Fortgeschrittene. Ein grundsätzlicher Weg ist: 1. Du benutzt einen Timer Interrupt, der alle x Millisekunden die Taste abfragt und das Ergebnis in einer Hilfsvariable speichert. Im Grunde funktioniert das wiehier im AVR-GCC-Tutorial im Timer-Aschnitt beschrieben. 2. Das regelmäßig ausgeführte Hauptprogramm (loop also), schaut in der Hilfsvariable nach und reagiert entsprechend. Die Hilfsvariable muss allerdings volatile gekennzeichnet sein. Warum steht im Artikel über die Interrupts. Um das Thema Prellen/Entprellen bei Tasten zu entschärfen, kannst du die Routine in 1. entsprechend schreiben. Also z.B. ändert sich die Hilfsvariable erst, wenn x-mal hintereinander der gleiche Tastenwert anliegt. Näheres zum Entprellen steht im gleichnamigen Artikel. Beim Aufsetzen eines Timers in der Arduino Umgebung muss man beachten, dass für eigene Zwecke nur TIMER1 und TIMER2 benutzbar sind, denn TIMER0 ist der Systemtimer des Arduino. Näheres dazu in http://wiki.mediazone.co.nz/Arduino+Timer+Interrupts
>If Schleifen
uuuh, iiiih, es gibt keine IF-Schleifen, nur Abfragen ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.