Zeitgeber_01.ino 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include <MobaTools.h>
  2. /* Demo: Zeitverzögerungen ohne delay-befehl
  3. * Der 'eggtimer' arbeitet im Prinzip wie ein Kurzzeitwecker in der
  4. * Küche: Man zieht ihn auf eine bestimmte Zeit auf, und dann läuft
  5. * er bis 0 zurück. Im Gegensatz zum Küchenwecker klingelt er aber nicht.
  6. * Man muss zyklisch nachschauen, ob er abgelaufen ist. Das passt aber
  7. * perfekt zum prinzip des 'loop', also einer Endlosschleife, in der man
  8. * zyklisch abfragt.
  9. * Aufrufe:
  10. * EggTimer.setTime( long Laufzeit ); setzt die Zeit in ms
  11. * bool = EggTimer.running(); == true solange die Zeit noch läuft,
  12. * == false wenn abgelaufen
  13. *
  14. * Im Gegensatz zum Verfahren mit delay() lassen sich damit mehrere
  15. * unabhängige und asynchrone Taktzeiten realisieren
  16. * In dieser Demo blinken 2 Led mit unterschiedlichen Taktraten
  17. */
  18. const int led1P = 5;
  19. const int led2P = 6;
  20. EggTimer Blinkzeit1;
  21. EggTimer Blinkzeit2;
  22. void setup() {
  23. pinMode(led1P, OUTPUT);
  24. pinMode(led2P, OUTPUT);
  25. }
  26. void loop() {
  27. // -------- Blinken der 1. Led ------------------
  28. // diese Led blinkt mit unsymetrischem Taktverhältnis
  29. if ( Blinkzeit1.running()== false ) {
  30. // Blinkzeit abgelaufen, Ausgang toggeln und
  31. // Zeit neu aufziehen
  32. if ( digitalRead( led1P ) == HIGH ) {
  33. digitalWrite( led1P, LOW );
  34. Blinkzeit1.setTime( 600 );
  35. } else {
  36. digitalWrite( led1P, HIGH );
  37. Blinkzeit1.setTime( 300 );
  38. }
  39. }
  40. // -------- Blinken der 2. Led ------------------
  41. // Diese Led blinkt symetrisch
  42. if ( Blinkzeit2.running() == false ) {
  43. // Blinkzeit abgelaufen, Ausgang toggeln und
  44. // Zeit neu aufziehen
  45. if ( digitalRead( led2P ) == HIGH ) {
  46. digitalWrite( led2P, LOW);
  47. } else {
  48. digitalWrite( led2P, HIGH);
  49. }
  50. Blinkzeit2.setTime( 633 );
  51. }
  52. }