Schweißblitzer "Geselle" mit Attiny13 von Tschoeatsch 5x Led. Beim aufräumen gefunden.

    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!

    • Hallo tschoeatsch,

      habe das mal auf 4 LED ausgeweitet, aber die LED´s flackern irgendwie nicht so richtig.

      Gruß Thomas

      Quellcode

      1. $regfile = "attiny85.dat"
      2. $crystal = 12000000
      3. $hwstack = 32
      4. $swstack = 6
      5. $framesize = 6
      6. Config Portb.1 = Output
      7. Config Portb.2 = Output
      8. Config Portb.0 = Output
      9. Config Portb.4 = Output
      10. Led1_pin Alias Portb.1
      11. Led2_pin Alias Portb.2
      12. Led3_pin Alias Portb.0
      13. Led4_pin Alias Portb.4
      14. Const Fade_up = 1
      15. Const Fade_down = 1
      16. Dim max_hell1 As Byte
      17. Dim max_hell2 As Byte
      18. Dim max_hell3 As Byte
      19. Dim max_hell4 As Byte
      20. Dim Led1 As Byte
      21. Dim Led2 As Byte
      22. Dim Led3 As Byte
      23. Dim Led4 As Byte
      24. Dim timerzaehler As Byte
      25. Config Timer0 = Timer , Prescale = 1 'Auflösung 0 - 49 'Timer konfigurieren
      26. On Timer0 Timerroutine 'Timerinterrupt Subroutine zuweisen
      27. Enable Timer0 'Timer aktivieren
      28. Start Timer0 'Timer starten
      29. Timer0 = 10 'Timer vorladen
      30. Enable Interrupts 'Interrupt aktivieren
      31. Portb = 0
      32. '*** Hauptschleife *************************************************************
      33. Do
      34. incr led1
      35. if led1>= max_hell1 then
      36. led1 = rnd(10)+5 'kann Werte von 5 bis 14 enthalten
      37. max_hell1 = led1 + 10 'hat Startwert 24
      38. max_hell1 =max_hell1 + rnd(24) 'kann Werte von 24 bis 49 enthalten
      39. End if
      40. waitms 1
      41. incr led2
      42. if led2>= max_hell2 then
      43. led2 = rnd(10)+5 'kann Werte von 5 bis 14 enthalten
      44. max_hell2 = led2 + 10 'hat Startwert 24
      45. max_hell2 =max_hell2 + rnd(24) 'kann Werte von 24 bis 49 enthalten
      46. End if
      47. waitms 1
      48. incr led3
      49. if led3>= max_hell3 then
      50. led3 = rnd(10)+5 'kann Werte von 5 bis 14 enthalten
      51. max_hell3 = led3 + 10 'hat Startwert 24
      52. max_hell3 =max_hell3 + rnd(24) 'kann Werte von 24 bis 49 enthalten
      53. End if
      54. waitms 1
      55. incr led4
      56. if led4>= max_hell4 then
      57. led4 = rnd(10)+5 'kann Werte von 5 bis 14 enthalten
      58. max_hell4 = led4 + 10 'hat Startwert 24
      59. max_hell4 =max_hell4 + rnd(24) 'kann Werte von 24 bis 49 enthalten
      60. End if
      61. waitms 1
      62. Loop 'Ende Hauptschleife
      63. End
      64. '*** Subs **********************************************************************
      65. Timerroutine: 'Beginn Subroutine
      66. Timer0 = 50
      67. incr Timerzaehler
      68. If Timerzaehler >= 50 Then Timerzaehler = 0 'Timerzaehler auf LED-Auflösung begrenzen
      69. If Timerzaehler < Led1 Then Led1_pin = 1 Else Led1_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      70. If Timerzaehler < Led2 Then Led2_pin = 1 Else Led2_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      71. If Timerzaehler < Led3 Then Led3_pin = 1 Else Led3_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      72. If Timerzaehler < Led4 Then Led4_pin = 1 Else Led4_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      73. Return
      Alles anzeigen
    • Ok, ich werd' auch mal einen Versuchsaufbau machen, damit ich sehe, was ich mir so denke ;)
      Und du, vergrößer mal dein waitms. Momentan hast du nur 4mS Verzögerung drin. Es wäre die Helligkeit von 0 bis max. 50 in 0,2 Sekunden hochgedimmt. Das ist viel zu schnell. Fange mal mit waitms 40 (einmalig in der Schleife) an und gehe mit dem Wertg runter, bis es richtig brennt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Nein, wenn der pin=high ist, dann leuchtet die Led. Ein hoher Wert für led1 bedeutet die Led leuchtet hell. Was sein könnte, dass die Anfangshelligkeit zu hoch ist. Halber pwm-Wert ist nicht halbe Helligkeit, zumindest nicht im dunkleren Bereich. Leds glimmen schon mit sehr wenig Energie.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo tschoeatsch,

      habe gestern das Programm noch mal abgeändert, auf 2 gelbe(orange) und 1 rote LED.
      Sieht eigentlich gut aus....
      Evtl. siehst du im Programm noch irgendwelche Fehler ?

      Gruß Thomas

      Quellcode

      1. '*****Brandsimulation PWM***
      2. '* *
      3. '* Version 1.0 *
      4. '* *
      5. '* *
      6. '***************************
      7. $regfile = "attiny85.dat"
      8. $crystal = 12000000
      9. $hwstack = 32
      10. $swstack = 6
      11. $framesize = 6
      12. Config Portb.1 = Output
      13. Config Portb.2 = Output
      14. Config Portb.0 = Output
      15. Led1_pin Alias Portb.1
      16. Led2_pin Alias Portb.2
      17. Led3_pin Alias Portb.0
      18. Const Fade_up = 1
      19. Const Fade_down = 1
      20. Dim max_hell1 As Byte
      21. Dim max_hell2 As Byte
      22. Dim max_hell3 As Byte
      23. Dim Led1 As Byte
      24. Dim Led2 As Byte
      25. Dim Led3 As Byte
      26. Dim Rot As Byte
      27. Dim Gelb As Byte
      28. Rot = 2
      29. Gelb = 1
      30. Dim timerzaehler As Byte
      31. Config Timer0 = Timer , Prescale = 1 'Auflösung 0 - 49 'Timer konfigurieren
      32. On Timer0 Timerroutine 'Timerinterrupt Subroutine zuweisen
      33. Enable Timer0 'Timer aktivieren
      34. Start Timer0 'Timer starten
      35. Timer0 = 10 'Timer vorladen
      36. Enable Interrupts 'Interrupt aktivieren
      37. Portb = 0
      38. '*** Hauptschleife *************************************************************
      39. Do
      40. decr led1
      41. if led1>= max_hell1 then
      42. led1 = rnd(10)+5 'kann Werte von 5 bis 14 enthalten
      43. max_hell1 = led1 + 10 'hat Startwert 24
      44. max_hell1 =max_hell1 + rnd(24) 'kann Werte von 24 bis 49 enthalten
      45. End if
      46. waitms Gelb
      47. decr led2
      48. if led2>= max_hell2 then
      49. led2 = rnd(10)+5 'kann Werte von 5 bis 14 enthalten
      50. max_hell2 = led2 + 10 'hat Startwert 24
      51. max_hell2 =max_hell2 + rnd(24) 'kann Werte von 24 bis 49 enthalten
      52. End if
      53. waitms Rot
      54. decr led3
      55. if led3>= max_hell3 then
      56. led3 = rnd(10)+5 'kann Werte von 5 bis 14 enthalten
      57. max_hell3 = led3 + 10 'hat Startwert 24
      58. max_hell3 =max_hell3 + rnd(24) 'kann Werte von 24 bis 49 enthalten
      59. End if
      60. waitms Gelb
      61. Loop 'Ende Hauptschleife
      62. End
      63. '*** Subs **********************************************************************
      64. Timerroutine: 'Beginn Subroutine
      65. Timer0 = 50
      66. incr Timerzaehler
      67. If Timerzaehler >= 50 Then Timerzaehler = 0 'Timerzaehler auf LED-Auflösung begrenzen
      68. If Timerzaehler < Led1 Then Led1_pin = 1 Else Led1_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      69. If Timerzaehler < Led2 Then Led2_pin = 1 Else Led2_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      70. If Timerzaehler < Led3 Then Led3_pin = 1 Else Led3_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      71. Return
      Alles anzeigen
    • Verschiedene Waits (rot/gelb) bringen nix, es zählt nur die Summe.
      Ich hab' einen Probeaufbau gemacht, allerdings nur mit roten Leds. Probier mal das Programm aus. Obacht, ich hab' auch andere ports und Kontroller verwendet, aber das kannst du ja leicht austauschen. Der Unterschied zu deinem ist jetzt wohl eine dunklere Anfangshelligkeit.
      Eine rote Led würde ich nicht sehr hell werden lassen, also in der Zeile
      Max_hellx = Max_hellx + Rnd(yy) das yy nicht so groß machen, damit der Rotanteil nicht zu stark wird.

      BASCOM-Quellcode

      1. $regfile = "m168pdef.dat"
      2. $crystal = 8000000
      3. $hwstack = 64
      4. $swstack = 32
      5. $framesize = 30
      6. Config Portc.0 = Output
      7. Config Portc.1 = Output
      8. Config Portc.2 = Output
      9. Config Portc.3 = Output
      10. Led1_pin Alias Portc.0
      11. Led2_pin Alias Portc.1
      12. Led3_pin Alias Portc.2
      13. Led4_pin Alias Portc.3
      14. Dim max_hell1 As Byte
      15. Dim max_hell2 As Byte
      16. Dim max_hell3 As Byte
      17. Dim max_hell4 As Byte
      18. Dim Led1 As Byte
      19. Dim Led2 As Byte
      20. Dim Led3 As Byte
      21. Dim Led4 As Byte
      22. Dim timerzaehler As Byte
      23. Config Timer0 = Timer , Prescale = 1 'Auflösung 0 - 49 'Timer konfigurieren
      24. On Timer0 Timerroutine 'Timerinterrupt Subroutine zuweisen
      25. Enable Timer0 'Timer aktivieren
      26. Start Timer0 'Timer starten
      27. Timer0 = 10 'Timer vorladen
      28. Enable Interrupts 'Interrupt aktivieren
      29. '*** Hauptschleife *************************************************************
      30. Do
      31. incr led1
      32. if led1>= max_hell1 then
      33. Led1 = Rnd(3) + 3 'kann Werte von 3-5 haben
      34. Max_hell1 = Led1 + 5 '8-10
      35. Max_hell1 = Max_hell1 + Rnd(40) 'kann Werte von 8-49
      36. End if
      37. incr led2
      38. if led2>= max_hell2 then
      39. Led2 = Rnd(3) + 3
      40. Max_hell2 = Led2 + 5
      41. Max_hell2 = Max_hell2 + Rnd(40)
      42. End if
      43. incr led3
      44. if led3>= max_hell3 then
      45. Led3 = Rnd(4) + 2
      46. Max_hell3 = Led3 + 5
      47. Max_hell3 = Max_hell3 + Rnd(36)
      48. End if
      49. incr led4
      50. if led4>= max_hell4 then
      51. Led4 = Rnd(4) + 2
      52. Max_hell4 = Led4 + 5
      53. Max_hell4 = Max_hell4 + Rnd(36)
      54. End if
      55. Waitms 3
      56. Loop 'Ende Hauptschleife
      57. End
      58. '*** Subs **********************************************************************
      59. Timerroutine: 'Beginn Subroutine
      60. Timer0 = 50
      61. incr Timerzaehler
      62. If Timerzaehler >= 50 Then Timerzaehler = 0 'Timerzaehler auf LED-Auflösung begrenzen
      63. If Timerzaehler < Led1 Then Led1_pin = 1 Else Led1_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      64. If Timerzaehler < Led2 Then Led2_pin = 1 Else Led2_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      65. If Timerzaehler < Led3 Then Led3_pin = 1 Else Led3_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      66. If Timerzaehler < Led4 Then Led4_pin = 1 Else Led4_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      67. Return
      Alles anzeigen
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo tschoeatsch,

      hier das abgeänderte Programm für den Tiny85.....

      Gruß Thomas

      Quellcode

      1. $regfile = "attiny85.dat"
      2. $crystal = 8000000
      3. $hwstack = 64
      4. $swstack = 32
      5. $framesize = 30
      6. Config Portb.1 = Output
      7. Config Portb.2 = Output
      8. Config Portb.0 = Output
      9. Led1_pin Alias Portb.1
      10. Led2_pin Alias Portb.2
      11. Led3_pin Alias Portb.0
      12. Dim max_hell1 As Byte
      13. Dim max_hell2 As Byte
      14. Dim max_hell3 As Byte
      15. Dim Led1 As Byte
      16. Dim Led2 As Byte
      17. Dim Led3 As Byte
      18. Dim timerzaehler As Byte
      19. Config Timer0 = Timer , Prescale = 1 'Auflösung 0 - 49 'Timer konfigurieren
      20. On Timer0 Timerroutine 'Timerinterrupt Subroutine zuweisen
      21. Enable Timer0 'Timer aktivieren
      22. Start Timer0 'Timer starten
      23. Timer0 = 10 'Timer vorladen
      24. Enable Interrupts 'Interrupt aktivieren
      25. '*** Hauptschleife *************************************************************
      26. Do
      27. incr led1
      28. if led1>= max_hell1 then
      29. Led1 = Rnd(3) + 3 'kann Werte von 3-5 haben
      30. Max_hell1 = Led1 + 5 '8-10
      31. Max_hell1 = Max_hell1 + Rnd(40) 'kann Werte von 8-49
      32. End if
      33. incr led2
      34. if led2>= max_hell2 then
      35. Led2 = Rnd(3) + 3
      36. Max_hell2 = Led2 + 5
      37. Max_hell2 = Max_hell2 + Rnd(40)
      38. End if
      39. incr led3
      40. if led3>= max_hell3 then
      41. Led3 = Rnd(4) + 2
      42. Max_hell3 = Led3 + 5
      43. Max_hell3 = Max_hell3 + Rnd(36)
      44. End if
      45. Waitms 4
      46. Loop 'Ende Hauptschleife
      47. End
      48. '*** Subs **********************************************************************
      49. Timerroutine: 'Beginn Subroutine
      50. Timer0 = 50
      51. incr Timerzaehler
      52. If Timerzaehler >= 50 Then Timerzaehler = 0 'Timerzaehler auf LED-Auflösung begrenzen
      53. If Timerzaehler < Led1 Then Led1_pin = 1 Else Led1_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      54. If Timerzaehler < Led2 Then Led2_pin = 1 Else Led2_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      55. If Timerzaehler < Led3 Then Led3_pin = 1 Else Led3_pin = 0 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
      56. Return
      Alles anzeigen
    • ceperiga schrieb:

      Interessant wäre es mal den Effekt von der anderen Seite zu sehen, ohne direkten Blick auf die LEDs.
      Den Feuerschein, sozusagen. Den Fettbrand der Friteuse im 4. Stock vom Garten aus gesehen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------