Taster schaltet Led

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Taster schaltet Led

      Guten Tag Forum,
      ich brauche hilfe diese Kleine Prg. muss erweitert ich habe keine schimmer wie,
      ich mochte mit eine Taster eine Led einschalter 10 mal Blinken und dann aus, hilft mir bitte jemand? ich danke euch in voraus.
      Antonio

      $regfile = "attiny13.dat"
      $crystal = 1200000
      $swstack = 10

      Config Pinb.3 = Input
      Taste Alias Pinb.3 PIN... nicht port... fuer EINGABE
      Portb.3 = 1

      Waitms 10 'Pullup-Widerstand

      Config Portb.0 = Output 'Portb.0 als Ausgabe
      Led Alias Portb.0 'Definition von Aliasnamen


      Do

      Debounce Taste , 0 , Umschalten , Sub 'Abfragen, ob Taste neu gedrueckt wurde und entprellen

      Loop '
      End

      Umschalten:
      Toggle Led
      Retu
      Teilen dein Wissen, so erlagst du zu Unsterblichkeit
    • Wenn es nur blinken soll kannst du das so machen

      BASCOM-Quellcode

      1. $regfile = "attiny13.dat"
      2. $crystal = 1200000
      3. $swstack = 10
      4. Config Pinb.3 = Input
      5. Taste Alias Pinb.3 'PIN... nicht port... fuer EINGABE
      6. Portb.3 = 1 'Pullup-Widerstand
      7. Waitms 10 'Brauchst du nicht an der Stelle
      8. Config Portb.0 = Output 'Portb.0 als Ausgabe
      9. Led Alias Portb.0 'Definition von Aliasnamen
      10. Dim Taster_flag As Bit , Count As Byte
      11. Taster_flag = 0
      12. Count = 0
      13. Do
      14. Debounce Taste , 0 , Umschalten , Sub 'Abfragen, ob Taste neu gedrueckt wurde und entprellen
      15. If Count > 10 Then
      16. Taster_flag = 0
      17. Count = 0
      18. End If
      19. If Taster_flag = 1 And Count <= 10 then
      20. Toggle Led
      21. Wait 1
      22. Incr Count
      23. End If
      24. Loop '
      25. End
      26. Umschalten:
      27. Taster_flag = 1
      28. Return
      Alles anzeigen
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von djmsc ()

    • Hatte den Code mal eben getestet und musste den Zähler noch etwas abändern.

      BASCOM-Quellcode

      1. $regfile = "attiny13.dat"
      2. $crystal = 1200000
      3. $swstack = 10
      4. Config Pinb.3 = Input
      5. Taste Alias Pinb.3 'PIN... nicht port... fuer EINGABE
      6. Portb.3 = 1 'Pullup-Widerstand
      7. 'Waitms 10 'Brauchst du nicht an der Stelle
      8. Config Portb.0 = Output 'Portb.0 als Ausgabe
      9. Led Alias Portb.0 'Definition von Aliasnamen
      10. Dim Taster_flag As Bit , Count As Byte
      11. Taster_flag = 0
      12. Count = 0
      13. Do
      14. Debounce Taste , 0 , Umschalten , Sub 'Abfragen, ob Taste neu gedrueckt wurde und entprellen
      15. If Count >= 20 Then
      16. Taster_flag = 0
      17. Count = 0
      18. End If
      19. If Taster_flag = 1 And Count <= 19 then
      20. Toggle Led
      21. Wait 1
      22. Incr Count
      23. End If
      24. Loop '
      25. End
      26. Umschalten:
      27. Taster_flag = 1
      28. Return
      Alles anzeigen
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Nachdem ich mich mit Antonio über sein Programm unterhalten habe ist in der Ausführung ein Fehler entstanden (Missverständniss).
      Antonio möchte das die LED nach Tastendruck an geht und 10 Sekunden lang leuchtet und das man mit dem Taster die LED auch wieder ausschalten kann.

      BASCOM-Quellcode

      1. $regfile = "attiny13.dat"
      2. $crystal = 1200000
      3. $swstack = 10
      4. Config Pinb.0 = Input
      5. Taste Alias Pinb.0 'PIN... nicht port... fuer EINGABE
      6. Portb.0 = 1 'Pullup-Widerstand
      7. Config Portc.0 = Output 'Portb.0 als Ausgabe
      8. Led Alias Portc.0 'Definition von Aliasnamen
      9. Const Timer0_preload = 22
      10. Config Timer0 = Timer, Prescale = 1024
      11. Timer0 = Timer0_preload
      12. On Timer0 Isr_timer0
      13. Enable Interrupts
      14. Dim Taster_flag As Bit , Count As Byte , Sekunden As Byte
      15. Const An_zeit = 10
      16. Taster_flag = 0
      17. Count = 0
      18. Do
      19. Debounce Taste , 0 , Umschalten , Sub 'Abfragen, ob Taste neu gedrueckt wurde und entprellen
      20. If Sekunden = An_zeit Then
      21. Disable Timer0
      22. Sekunden = 0
      23. Count = 0
      24. Taster_flag = 0
      25. Reset Led
      26. End If
      27. Loop
      28. End
      29. Umschalten:
      30. Toggle Taster_flag
      31. If Taster_flag = 0 Then
      32. Disable Timer0
      33. Count = 0
      34. Sekunden = 0
      35. Reset Led
      36. Else
      37. Enable Timer0
      38. Set Led
      39. End If
      40. Return
      41. Isr_timer0:
      42. If Count = 32 Then
      43. Count = 0
      44. Incr Sekunden
      45. End If
      46. Incr Count
      47. Return
      Alles anzeigen
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Hallo Mario Danke dir sehr für das Prg. dennoch zeigt mir diese fehler warum und was kann ich dagegen tun. Danke


      Error : 41 Line : 9 Variable can not be used with SET [DDRC] , in File : C:\attiny13\mario taster.bas
      Error : 40 Line : 33 Variable can not be used with RESET [PORTC] , in File : C:\attiny13\mario taster.bas
      Error : 7 Line : 33 IF THEN expected [ 33] , in File : C:\attiny13\mario taster.bas
      Error : 123 Line : 33 END IF expected , in File : C:\attiny13\mario taster.bas
      Teilen dein Wissen, so erlagst du zu Unsterblichkeit
    • Sorry da ist noch ein Teil von meinem µC mit drin gewesen :(

      Hier also der richtige Code:

      BASCOM-Quellcode

      1. $regfile = "attiny13.dat"
      2. $crystal = 1200000
      3. $hwstack = 10
      4. $swstack = 10
      5. $framesize = 32
      6. Config Pinb.3 = Input
      7. Taste Alias Pinb.3 'PIN... nicht port... fuer EINGABE
      8. Portb.3 = 1 'Pullup-Widerstand
      9. 'Waitms 10 'Brauchst du nicht an der Stelle
      10. Config Portb.0 = Output 'Portb.0 als Ausgabe
      11. Led Alias Portb.0 'Definition von Aliasnamen
      12. Const Timer0_preload = 22
      13. Config Timer0 = Timer, Prescale = 1024
      14. Timer0 = Timer0_preload
      15. On Timer0 Isr_timer0
      16. Enable Interrupts
      17. Dim Taster_flag As Bit , Count As Byte , Sekunden As Byte
      18. Const An_zeit = 10 'hier kannst du die Zeit einstellen
      19. Taster_flag = 0
      20. Count = 0
      21. Do
      22. Debounce Taste , 0 , Umschalten , Sub 'Abfragen, ob Taste neu gedrueckt wurde und entprellen
      23. If Sekunden = An_zeit Then
      24. Disable Timer0
      25. Sekunden = 0
      26. Count = 0
      27. Taster_flag = 0
      28. Reset Led
      29. End If
      30. Loop
      31. End
      32. Umschalten:
      33. Toggle Taster_flag
      34. If Taster_flag = 0 Then
      35. Disable Timer0
      36. Count = 0
      37. Sekunden = 0
      38. Reset Led
      39. Else
      40. Enable Timer0
      41. Set Led
      42. End If
      43. Return
      44. Isr_timer0:
      45. If Count = 32 Then
      46. Count = 0
      47. Incr Sekunden
      48. End If
      49. Incr Count
      50. Return
      Alles anzeigen
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Hallo Mario,
      habe das Program ausprobiert und es kommt beim kompilieren die Fehlermeldung das die Zeile "Timer0 = TimerTimer0_preload" unbekannt ist. Aber es geht auch ohne diese zeile.
      Könntest du mir vielleicht helfen einen zweiten Taster und eine 2. LED in das Program einzufügen??Es sollte so sein, dass unabhängig welcher Taster gedrückt wurde er durch einen der beiden Taster auch wieder gelöscht werden kann. Oder mir einen Tipp geben wie ich das anstellen kann.
      Erstmal vielen Dank im Voraus
      Grüße aus kassel
      Hans
    • Hallo Hans,

      ein Zeile "Timer0 = TimerTimer0_preload" sehe ich nirgends im Programm, scheint ein Schreibfehler in Deinem Programm zu sein. :rolleyes:

      Und was den Rest betrifft:
      Beschreibe bitte exakt, was Dein Programm (ganz genau) am Ende machen soll, also welcher Taster, welches Verhalten bei welcher LED auslösen soll.
      Ansonsten müssten wir raten (was weder für Dich noch für uns zielführend wäre).
    • Hallo,
      Sorry Schreibfehler in der Mitteilung. Die Programmzeile heißt“Timer0 = Timer0_preload“.
      Wir haben einen Treppenlift bei dem man zum Betätigen den Taster dauerhaft drücken muss sonst fährt er nicht. Das Programm sollte 2 Taster und 2 Leuchtdioden steuern können, so wie das Programm jetzt von Djmsc es jetzt mit jeweils einem Taster und einer Diode kann. Der Ausgang für die LED steuert dann den Taster im Lift für die eingestellte Zeit und der Lift läuft ohne festhalten des Tasters, entweder bis zum Ende oder bis zum erneuten Tastendruck der Tasten up oder down.
      Grüße Hans
    • Hallo,
      Das Programm soll einen Treppenlift steuern. Momentan ist es so, dass du die Tasten festhalten musst, damit der Lift fährt. Da meine Handmuskeln stark abgebaut sind, ist es für mich sehr anstrengend. Mit dem oben beschriebenen Programm, kann ich jetzt schon eine Fahrt, zum Beispiel hoch, steuern. Mir fehlt jetzt noch in dem Programm die Steuerung für den zweiten Taster. Damit ich ohne Anstrengung auch runterfahren kann. Außerdem wäre es wichtig, dass durch einen erneuten Tastendruck die jeweilige LED wieder ausgeht, damit der Lift stehen bleibt.
      Im Grunde müsste das Programm von Djmsc um die Steuerung eines weiteren Tasters und LED erweitert werden.
      Grüße
      Hans