Lauflicht, gedimmt, Knight Rider Effekt

    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!

    • Lauflicht, gedimmt, Knight Rider Effekt

      Leider ist ja das alte Forum im Nirvana des Internets verschwunden, aber dort gab es auch schöne Projekte.
      Eines davon will ich hier posten, auch weil der Youtube-Link (von Youtube aus) sonst ins Leere zeigt.
      Das Projekt ist aus dem Jahr 2009.
      Es handelt sich um ein Lauflicht mir 8 LEDs, die LEDs haben aber einen Nachleucht Effekt, der aus der Serie Knight Rider bekannt ist.
      Für jede LED wird dafür ein Byze benutzt und das Teilprogramm für das Lauflicht füllt diese Bytes immer wieder auf.
      Ein anderer Teil des Programms (Interrupt) leert die Bytes langsam, so dass ein Nachglüheffekt mit etwa 0,5s eintritt.
      Mit einer For-Next-Schleife wird eine Software-PWM gebildet.
      Die Hardware ist ein STK500 mit Atmega16, LEDs sind da bereits verbaut, allerdings "verkehrt herum", bei 0 leuchten die LEDs und bei 1 sind sie aus.

      BASCOM-Quellcode: Lauflicht_dimm.bas

      1. 'Lauflicht mit Knight-Rider-Effekt.
      2. 'LEDs werden per Software-PWM über Timer1 ausgedimmt.
      3. 'http://www.youtube.com/watch?v=yFvASu5q8dU
      4. 'für STK500
      5. 'Dieser Quelltext steht unter der CC-Lizenz
      6. 'http://creativecommons.org/licenses/by-nc-sa/3.0/de/
      7. 'Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen
      8. 'Michael Kinz
      9. $regfile = "m16def.dat"
      10. $crystal = 8000000
      11. $hwstack = 32
      12. $swstack = 24
      13. $framesize = 16
      14. Ddrc = 255
      15. Portc = 255
      16. Dim A As Byte
      17. Dim B As Byte
      18. Dim Z As Byte
      19. Dim X As Byte
      20. Dim Zeit As Word
      21. Dim Richtung As Bit
      22. Dim Led(8) As Byte
      23. Config Timer0 = Timer , Prescale = 64
      24. Enable Timer0
      25. Enable Interrupts
      26. On Timer0 Timer0_interrupt
      27. A = 1
      28. Portc = 0
      29. Waitms 200
      30. Do
      31. 'nächste LED alle 0,1 sec
      32. If Zeit > 50 Then
      33. Led(a) = 255 'LED "aufladen"
      34. If Richtung = 0 Then
      35. A = A + 1
      36. If A = 8 Then
      37. Richtung = 1
      38. End If
      39. Else
      40. A = A - 1
      41. If A = 1 Then
      42. Richtung = 0
      43. End If
      44. End If
      45. Zeit = 1
      46. End If
      47. Z = Z + 1
      48. 'Soft PWM
      49. 'Vergleich zwischen frei laufendem Zähler Z und LED()-Wert
      50. For B = 1 To 8
      51. If Led(b) > Z Then
      52. B = B - 1
      53. Portc.b = 0
      54. Else
      55. B = B - 1
      56. Portc.b = 1
      57. End If
      58. B = B + 1
      59. Next
      60. Loop
      61. End
      62. '----------------
      63. Timer0_interrupt:
      64. Timer0 = 6
      65. ' Prescale = 64 + Timer0 = 6 = 500Hz
      66. ' Bei LED-Startwert von 255 ist nach 0,51 Sekunden ausgedimmt
      67. Zeit = Zeit + 1
      68. For X = 1 To 8
      69. If Led(x) > 0 Then
      70. Led(x) = Led(x) - 1 'LEDs "entladen"
      71. End If
      72. Next
      73. Return
      Alles anzeigen