Uhr mit 4x 8x8 Led-Matrix Max7219

    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!

    • tschoeatsch schrieb:

      Du hast diese Zeile 'Dim Display_speicher_bit As Byte' überschrieben, die fehlt jetzt im Programm, bitte wieder einsetzen. Vergleiche mit meinem geposteten Programmlisting.
      hast du wohl noch nicht bearbeitet
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • @maheau0 hey, was soll jetzt das? Nimm mein gepostets Programm und schreibe statt 'anzahl_module * 8' einfach die '40' rein. Mehr nicht und dann compilieren. Wenn Fehler gemeldet werden, dann zeigen. Also, los...
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • @Manfred: Probier das einmal:

      tschoeatsch schrieb:

      nicht zum downloaden, sondern als gleich sichtbare Version. Verwende dazu beim Antworten die Schaltfläche </> hier im Forumseditor.


      Und: Ich verstehe das nicht:

      maheau0 schrieb:

      Fehlermeldung.
      Übrigens, ich habe ein DCF-Modul an Portd7.
      Es läuft schon mehre Minuten und synchronisiert nicht.
      Wenn das Programm nicht kompiliert wegen Fehlermeldungen, wie kann es dann "mehrere Minuten laufen"...?
    • @stefanhamburg er hat ja die Vorversion als .hex bekommen.

      @maheau0 die demoversion ist ja nicht die neueste bascomversion. Ich habe die neueste (Kaufversion) und bei mir klappt alles. Es ist also durchaus möglich, dass die Syntax nicht zu deiner Version passt, dann kommt es auch zu Fehlermeldungen. Das kann man aber alles passend machen. Fehler beheben gehört einfach auch zum Programmieren.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Ja, wenn er versucht hätte, die zu compilieren, wären auch Fehlermeldungen aufgepoppt. Die letzte, neueste Version muss er jetzt selbst compilieren. Das wird er schaffen, wenn die Syntax zu demoversion passt.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • @tschoeatsch
      Habe das letzte gepostete Prog (#97) mal mit meiner Demoversion kompiliert.
      Meine Version 2.0.7.5 Demo
      Hatte auch Fehlermeldungen. Aber nach den Änderungen, die hier gepostet wurden,
      ließ sich das Programm fehlerfrei kompilieren.
      Liegt also nicht an der Bascomversion. Für mich nur an der Umsetzung der gemachten Vorschläge
      .
      Aber bezüglich deiner Frage nach mehreren Versionen auf einem Rechner - würde mich auch interessieren.

      @maheau0
      Einfach das vorgeschlagene umsetzen !! , dann klappt's auch mit dem kompilieren.
      Kopf in Sand ist das Previleg des Vogel Strauss.!!!

      Detlef
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.
    • Dekaman schrieb:

      tschoeatsch schrieb:

      er hat ja die Vorversion als .hex bekommen.

      tschoeatsch schrieb:

      Ja, wenn er versucht hätte, die zu compilieren,
      die Hex-Datei ?
      Detlef
      Es war ein zip mit .bas, .bin und .hex.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Dekaman schrieb:

      Aber bezüglich deiner Frage nach mehreren Versionen auf einem Rechner - würde mich auch interessieren.
      es geht, ich hab's probiert und auch gleich meine Datei (mit den Änderungen) compiliert und geflasht. Ich hab' jetzt eine schöne Uhr (noch eine).
      Um alle Möglichkeiten der Missverständnisse zu vermeiden, hier der geänderte code, der auf der Demo ohne Fehler zu compilieren und flashen geht.

      BASCOM-Quellcode

      1. 'Max7219 Test
      2. 'Uhrzeit wird wie mit einem Walzenzählwerk angezeigt
      3. 'Empfang einer gültigen Zeit in den letzten 5 Minuten wird durch den Trenner signalisiert
      4. 'Die Led ist eine Hilfe für die Beurteilung des Zeitsignals, ein Flackern ist schlecht.
      5. $regfile = "m328pdef.dat"
      6. $crystal = 16000000
      7. $hwstack = 38
      8. $swstack = 12
      9. $framesize = 25
      10. Max_din Alias Portd.2 : Config Max_din = Output
      11. Max_clk Alias Portd.3 : Config Max_clk = Output
      12. Max_cs Alias Portd.4 : Config Max_cs = Output
      13. Led Alias Portb.5 : Config Led = Output
      14. 'Das Signal vom DCF-Empfänger wird an den Kontrollerpin portd.7 erwartet
      15. 'DCF77 einrichten
      16. Config Dcf77 = Pind.7 , Timer = 1 , Update = 0 , Inverted = 0 , Check = 1 , Timer1sec = 0
      17. 'Set Portd.7 'pullup setzen
      18. Declare Sub Schreiben(byval Ziffer As Byte , Byval Spalten_nummer As Byte )
      19. Enable Interrupts
      20. Dim Display_speicher(40) As Word '8 Spalten für jedes Modul
      21. Dim Zeile As Byte
      22. Dim Display_speicher_bit As Byte
      23. Dim Zeilen_nummer As Byte
      24. Dim Spalte As Byte
      25. Dim Tabellen_stelle As Byte
      26. Dim Display_daten As Byte , Display_digit As Byte
      27. Dim X As Byte , Z As Byte , Zz As Byte
      28. Dim N As Byte
      29. Dim Z_neu(6) As Byte
      30. Dim Z_alt(6) As Byte
      31. Dim Trenner As Byte , Trenner_alt As Byte
      32. Dim Status As Word
      33. Dim Buchstabenspalte As Byte
      34. Dim Sekunde As Byte
      35. Wait 1
      36. Gosub Init_max7219 'Display initialisieren
      37. Time$ = "09:59:30" 'nur zu Testzwecken, kann auskommentiert werden
      38. For N = 1 To 6 'Werte vorbelegen
      39. Z_alt(n) = 10
      40. Next N
      41. Trenner_alt = 10
      42. Do
      43. Do
      44. If Status > 0 Then Decr Status
      45. If Dcf_status.7 = 1 Then 'wenn gültiger Zeitempfang war
      46. Status = 300 '5 Minuten
      47. Reset Dcf_status.7
      48. End If
      49. Sekunde = _sec
      50. Z_neu(1) = _sec Mod 10
      51. Z_neu(2) = _sec / 10
      52. Z_neu(3) = _min Mod 10
      53. Z_neu(4) = _min / 10
      54. Z_neu(5) = _hour Mod 10
      55. Z_neu(6) = _hour / 10
      56. Call Schreiben(z_neu(6) , 1)
      57. Call Schreiben(z_neu(5) , 7)
      58. Call Schreiben(z_neu(4) , 15)
      59. Call Schreiben(z_neu(3) , 21)
      60. Call Schreiben(z_neu(2) , 29)
      61. Call Schreiben(z_neu(1) , 35)
      62. If Status > 0 Then 'Trennzeichen in Abhängigkeit vom Zeitraum zum letzten gültigen Zeitempfang darstellen
      63. Trenner = 1
      64. Display_speicher(13) = Display_speicher(13) And &HFF00
      65. Display_speicher(13) = Display_speicher(13) + &B00101000
      66. Display_speicher(14) = 0
      67. Display_speicher(27) = Display_speicher(27) And &HFF00
      68. Display_speicher(27) = Display_speicher(27) + &B00101000
      69. Display_speicher(28) = 0
      70. Else
      71. Trenner = 0
      72. Display_speicher(13) = Display_speicher(13) And &HFF00
      73. Display_speicher(13) = Display_speicher(13) + &B01110000
      74. Display_speicher(14) = 0
      75. Display_speicher(27) = Display_speicher(27) And &HFF00
      76. Display_speicher(27) = Display_speicher(27) + &B01110000
      77. Display_speicher(28) = 0
      78. End If
      79. 'Ziffern anzeigen und die veränderten umändern
      80. For Z = 1 To 8
      81. If Z_neu(6) <> Z_alt(6) Then
      82. For Zz = 1 To 6
      83. Shift Display_speicher(zz) , Left , 1
      84. Next Zz
      85. End If
      86. If Z_neu(5) <> Z_alt(5) Then
      87. For Zz = 7 To 12
      88. Shift Display_speicher(zz) , Left , 1
      89. Next Zz
      90. End If
      91. If Z_neu(4) <> Z_alt(4)then
      92. For Zz = 15 To 20
      93. Shift Display_speicher(zz) , Left , 1
      94. Next Zz
      95. End If
      96. If Z_neu(3) <> Z_alt(3) Then
      97. For Zz = 21 To 26
      98. Shift Display_speicher(zz) , Left , 1
      99. Next Zz
      100. End If
      101. If Z_neu(2) <> Z_alt(2) Then
      102. For Zz = 29 To 34
      103. Shift Display_speicher(zz) , Left , 1
      104. Next Zz
      105. End If
      106. If Z_neu(1) <> Z_alt(1) Then
      107. For Zz = 35 To 40
      108. Shift Display_speicher(zz) , Left , 1
      109. Next Zz
      110. End If
      111. If Trenner <> Trenner_alt Then
      112. Shift Display_speicher(13) , Left , 1
      113. Shift Display_speicher(27) , Left , 1
      114. End If
      115. Gosub Ausgabe
      116. Waitms 50
      117. Next Z
      118. For N = 1 To 6 'Werte vorbelegen
      119. Z_alt(n) = Z_neu(n)
      120. Next N
      121. Trenner_alt = Trenner
      122. 'auf die nächste Sekunde warten
      123. While Sekunde = _sec
      124. Led = Pind.7
      125. Wend
      126. Loop
      127. Loop
      128. End
      129. '##################################################### Main-Frame
      130. Sub Schreiben(ziffer As Byte , Byval Spalten_nummer As Byte)
      131. Spalte = Spalten_nummer
      132. Tabellen_stelle = Ziffer * 6
      133. For X = 0 To 5 'das bitmuster spaltenweise in den Speicher schreiben
      134. Buchstabenspalte = Lookup(tabellen_stelle , Font_tabelle)
      135. Display_speicher(spalte) = Display_speicher(spalte) And &HFF00
      136. Display_speicher(spalte) = Display_speicher(spalte) + Buchstabenspalte 'in den lsb-byte vom word schreiben
      137. Tabellen_stelle = Tabellen_stelle + 1
      138. Spalte = Spalte + 1
      139. Next X
      140. End Sub
      141. Ausgabe:
      142. 'Ausgabe an die Module und den neuen Speicherinhalt anzeigen lassen
      143. For Display_speicher_bit = 8 To 15 'die msb-bits werden angezeigt
      144. Zeilen_nummer = Display_speicher_bit - 7
      145. Spalte = 1
      146. Max_cs = 0
      147. While Spalte < 41
      148. For N = 7 To 0 Step -1
      149. Zeile.n = Display_speicher(spalte).display_speicher_bit
      150. Incr Spalte
      151. Next N
      152. Shiftout Max_din , Max_clk , Zeilen_nummer , 1
      153. Shiftout Max_din , Max_clk , Zeile , 1
      154. Wend
      155. Max_cs = 1
      156. Next Display_speicher_bit
      157. Return
      158. Init_max7219: ' Initialisieren des MAX7219
      159. Display_digit = &H0C : Display_daten = &H00 ' Shutdown On
      160. Gosub Led_write_command
      161. Display_digit = &H09 : Display_daten = &H00 ' kein decode "B" für alle Digits
      162. Gosub Led_write_command
      163. Display_digit = &H0A : Display_daten = &H03 ' Helligkeit 0-F
      164. Gosub Led_write_command
      165. Display_digit = &H0B : Display_daten = 7 ' Anzahl Digits 8
      166. Gosub Led_write_command
      167. Display_digit = &H0F : Display_daten = 0 ' Test Off
      168. Gosub Led_write_command
      169. Display_digit = &H0C : Display_daten = 1 ' Shutdown Off
      170. Gosub Led_write_command
      171. Return
      172. Led_write_command:
      173. Max_cs = 0
      174. For N = 1 To 5 'alle 5 Max bekommen die Einstellungen gesendet
      175. Shiftout Max_din , Max_clk , Display_digit , 1
      176. Shiftout Max_din , Max_clk , Display_daten , 1
      177. Next N
      178. Max_cs = 1
      179. Return
      180. Font_tabelle:
      181. 'Font5x8
      182. 'Data 62 , 81 , 73 , 69 , 62,0 ' 0
      183. Data 62 , 65 , 65 , 65 , 62 , 0 ' O
      184. Data 0 , 66 , 127 , 64 , 0 , 0 ' 1
      185. Data 98 , 81 , 73 , 73 , 70 , 0 ' 2
      186. Data 34 , 73 , 73 , 73 , 54 , 0 ' 3
      187. Data 24 , 20 , 18 , 127 , 16 , 0 ' 4
      188. Data 47 , 73 , 73 , 73 , 49 , 0 ' 5
      189. Data 60 , 74 , 73 , 73 , 48 , 0 ' 6
      190. Data 1 , 113 , 9 , 5 , 3 , 0 ' 7
      191. Data 54 , 73 , 73 , 73 , 54 , 0 ' 8
      192. Data 6 , 73 , 73 , 41 , 30 , 0 ' 9
      193. Data 0 , 0 , 0 , 0 , 0 , 0 'Leerzeichen
      Alles anzeigen
      Raum für Notizen

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

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

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

    • Weil ich mir ziemlich sicher bin, dass es Manfred noch hin bekommt, hier das Programm mit einer kleinen Erweiterung. Bei Programmstart wird auf der Led vom Uno das Signal des DCF-Empfängers gezeigt, solange kein gültiges Zeitsignal empfangen wird.

      BASCOM-Quellcode

      1. 'Max7219 Test
      2. 'Uhrzeit wird wie mit einem Walzenzählwerk angezeigt
      3. 'Empfang einer gültigen Zeit in den letzten 5 Minuten wird durch den Trenner signalisiert
      4. 'Die Led ist eine Hilfe für die Beurteilung des Zeitsignals, ein Flackern ist schlecht.
      5. 'Es wird bei Programmstart auf der Led des Unos das Signal des Empfängers ausgegeben, solange, bis ein Empfang gültig war
      6. $regfile = "m328pdef.dat"
      7. $crystal = 16000000
      8. $hwstack = 38
      9. $swstack = 12
      10. $framesize = 25
      11. Max_din Alias Portd.2 : Config Max_din = Output
      12. Max_clk Alias Portd.3 : Config Max_clk = Output
      13. Max_cs Alias Portd.4 : Config Max_cs = Output
      14. Led Alias Portb.5 : Config Led = Output
      15. 'Das Signal vom DCF-Empfänger wird an den Kontrollerpin portd.7 erwartet
      16. 'DCF77 einrichten
      17. Config Dcf77 = Pind.7 , Timer = 1 , Update = 0 , Inverted = 0 , Check = 1 , Timer1sec = 0
      18. 'Set Portd.7 'pullup setzen
      19. Declare Sub Schreiben(byval Ziffer As Byte , Byval Spalten_nummer As Byte )
      20. Enable Interrupts
      21. Dim Display_speicher(40) As Word '8 Spalten für jedes Modul
      22. Dim Zeile As Byte
      23. Dim Display_speicher_bit As Byte
      24. Dim Zeilen_nummer As Byte
      25. Dim Spalte As Byte
      26. Dim Tabellen_stelle As Byte
      27. Dim Display_daten As Byte , Display_digit As Byte
      28. Dim X As Byte , Z As Byte , Zz As Byte
      29. Dim N As Byte
      30. Dim Z_neu(6) As Byte
      31. Dim Z_alt(6) As Byte
      32. Dim Trenner As Byte , Trenner_alt As Byte
      33. Dim Status As Word
      34. Dim Buchstabenspalte As Byte
      35. Dim Sekunde As Byte
      36. Wait 1
      37. Gosub Init_max7219 'Display initialisieren
      38. While Dcf_status.7 = 0
      39. Led = Dcf_status.0 'die Led auf dem Uno zeigt das Signal vom DCF-Empfänger
      40. Wend
      41. 'wenn der Empfang erfolgreich was, werden die Matrixen eingeschaltet
      42. Display_digit = &H0C : Display_daten = 1 ' Shutdown Off
      43. Gosub Led_write_command
      44. For N = 1 To 6 'Werte vorbelegen
      45. Z_alt(n) = 10
      46. Next N
      47. Trenner_alt = 10
      48. Do
      49. Do
      50. If Status > 0 Then Decr Status
      51. If Dcf_status.7 = 1 Then 'wenn gültiger Zeitempfang war
      52. Status = 300 '5 Minuten
      53. Reset Dcf_status.7
      54. End If
      55. Sekunde = _sec
      56. Z_neu(1) = _sec Mod 10
      57. Z_neu(2) = _sec / 10
      58. Z_neu(3) = _min Mod 10
      59. Z_neu(4) = _min / 10
      60. Z_neu(5) = _hour Mod 10
      61. Z_neu(6) = _hour / 10
      62. Call Schreiben(z_neu(6) , 1)
      63. Call Schreiben(z_neu(5) , 7)
      64. Call Schreiben(z_neu(4) , 15)
      65. Call Schreiben(z_neu(3) , 21)
      66. Call Schreiben(z_neu(2) , 29)
      67. Call Schreiben(z_neu(1) , 35)
      68. If Status > 0 Then 'Trennzeichen in Abhängigkeit vom Zeitraum zum letzten gültigen Zeitempfang darstellen
      69. Trenner = 1
      70. Display_speicher(13) = Display_speicher(13) And &HFF00
      71. Display_speicher(13) = Display_speicher(13) + &B00101000
      72. Display_speicher(14) = 0
      73. Display_speicher(27) = Display_speicher(27) And &HFF00
      74. Display_speicher(27) = Display_speicher(27) + &B00101000
      75. Display_speicher(28) = 0
      76. Else
      77. Trenner = 0
      78. Display_speicher(13) = Display_speicher(13) And &HFF00
      79. Display_speicher(13) = Display_speicher(13) + &B01110000
      80. Display_speicher(14) = 0
      81. Display_speicher(27) = Display_speicher(27) And &HFF00
      82. Display_speicher(27) = Display_speicher(27) + &B01110000
      83. Display_speicher(28) = 0
      84. End If
      85. 'Ziffern anzeigen und die veränderten umändern
      86. For Z = 1 To 8
      87. If Z_neu(6) <> Z_alt(6) Then
      88. For Zz = 1 To 6
      89. Shift Display_speicher(zz) , Left , 1
      90. Next Zz
      91. End If
      92. If Z_neu(5) <> Z_alt(5) Then
      93. For Zz = 7 To 12
      94. Shift Display_speicher(zz) , Left , 1
      95. Next Zz
      96. End If
      97. If Z_neu(4) <> Z_alt(4)then
      98. For Zz = 15 To 20
      99. Shift Display_speicher(zz) , Left , 1
      100. Next Zz
      101. End If
      102. If Z_neu(3) <> Z_alt(3) Then
      103. For Zz = 21 To 26
      104. Shift Display_speicher(zz) , Left , 1
      105. Next Zz
      106. End If
      107. If Z_neu(2) <> Z_alt(2) Then
      108. For Zz = 29 To 34
      109. Shift Display_speicher(zz) , Left , 1
      110. Next Zz
      111. End If
      112. If Z_neu(1) <> Z_alt(1) Then
      113. For Zz = 35 To 40
      114. Shift Display_speicher(zz) , Left , 1
      115. Next Zz
      116. End If
      117. If Trenner <> Trenner_alt Then
      118. Shift Display_speicher(13) , Left , 1
      119. Shift Display_speicher(27) , Left , 1
      120. End If
      121. Gosub Ausgabe
      122. Waitms 50
      123. Next Z
      124. For N = 1 To 6 'Werte vorbelegen
      125. Z_alt(n) = Z_neu(n)
      126. Next N
      127. Trenner_alt = Trenner
      128. 'auf die nächste Sekunde warten
      129. While Sekunde = _sec
      130. Led = Pind.7
      131. Wend
      132. Loop
      133. Loop
      134. End
      135. '##################################################### Main-Frame
      136. Sub Schreiben(ziffer As Byte , Byval Spalten_nummer As Byte)
      137. Spalte = Spalten_nummer
      138. Tabellen_stelle = Ziffer * 6
      139. For X = 0 To 5 'das bitmuster spaltenweise in den Speicher schreiben
      140. Buchstabenspalte = Lookup(tabellen_stelle , Font_tabelle)
      141. Display_speicher(spalte) = Display_speicher(spalte) And &HFF00
      142. Display_speicher(spalte) = Display_speicher(spalte) + Buchstabenspalte 'in den lsb-byte vom word schreiben
      143. Tabellen_stelle = Tabellen_stelle + 1
      144. Spalte = Spalte + 1
      145. Next X
      146. End Sub
      147. Ausgabe:
      148. 'Ausgabe an die Module und den neuen Speicherinhalt anzeigen lassen
      149. For Display_speicher_bit = 8 To 15 'die msb-bits werden angezeigt
      150. Zeilen_nummer = Display_speicher_bit - 7
      151. Spalte = 1
      152. Max_cs = 0
      153. While Spalte < 41
      154. For N = 7 To 0 Step -1
      155. Zeile.n = Display_speicher(spalte).display_speicher_bit
      156. Incr Spalte
      157. Next N
      158. Shiftout Max_din , Max_clk , Zeilen_nummer , 1
      159. Shiftout Max_din , Max_clk , Zeile , 1
      160. Wend
      161. Max_cs = 1
      162. Next Display_speicher_bit
      163. Return
      164. Init_max7219: ' Initialisieren des MAX7219
      165. Display_digit = &H0C : Display_daten = &H00 ' Shutdown On
      166. Gosub Led_write_command
      167. Display_digit = &H09 : Display_daten = &H00 ' kein decode "B" für alle Digits
      168. Gosub Led_write_command
      169. Display_digit = &H0A : Display_daten = &H03 ' Helligkeit 0-F
      170. Gosub Led_write_command
      171. Display_digit = &H0B : Display_daten = 7 ' Anzahl Digits 8
      172. Gosub Led_write_command
      173. Display_digit = &H0F : Display_daten = 0 ' Test Off
      174. Gosub Led_write_command
      175. Return
      176. Led_write_command:
      177. Max_cs = 0
      178. For N = 1 To 5 'alle 5 Max bekommen die Einstellungen gesendet
      179. Shiftout Max_din , Max_clk , Display_digit , 1
      180. Shiftout Max_din , Max_clk , Display_daten , 1
      181. Next N
      182. Max_cs = 1
      183. Return
      184. Font_tabelle:
      185. 'Font5x8
      186. 'Data 62 , 81 , 73 , 69 , 62,0 ' 0
      187. Data 62 , 65 , 65 , 65 , 62 , 0 ' O
      188. Data 0 , 66 , 127 , 64 , 0 , 0 ' 1
      189. Data 98 , 81 , 73 , 73 , 70 , 0 ' 2
      190. Data 34 , 73 , 73 , 73 , 54 , 0 ' 3
      191. Data 24 , 20 , 18 , 127 , 16 , 0 ' 4
      192. Data 47 , 73 , 73 , 73 , 49 , 0 ' 5
      193. Data 60 , 74 , 73 , 73 , 48 , 0 ' 6
      194. Data 1 , 113 , 9 , 5 , 3 , 0 ' 7
      195. Data 54 , 73 , 73 , 73 , 54 , 0 ' 8
      196. Data 6 , 73 , 73 , 41 , 30 , 0 ' 9
      197. Data 0 , 0 , 0 , 0 , 0 , 0 'Leerzeichen
      Alles anzeigen
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Na prima. So wie ich das mitbekommen hab' bist du ja ein Bascom-anfänger. Da können Kleinigkeiten schon mal zu einem Problem werden. Aber dazu gibt es ja so ein Forum wie dieses. Wenn du an bascom Gefallen findest, dann kann ich dir ein Buch empfehlen
      bascom-buch.de/
      das Gute daran ist, der Author treibt sich auch hier im Forum rum, du hättest also einen direkten Draht wenn du Fragen darüber hier im Forum stellst. :D

      Wenn du jetzt die letzte Version aus dem post #114 lädst, dann kannst du den Empfang prüfen. Die Led auf dem Uno gibt das Signal wieder, was der Empfänger liefert. Im Idealfall sollte man jetzt im Sekundentakt die Led blinken sehen, mit 2 verschiedenen on-Zeiten, aber mit immer einer längeren off-Zeit als die on-Zeit. Flackerer sind schlecht, Dauerlicht ist schlecht, kein Licht ist schlecht. Was aus meiner Erfahrung mit dem DCF-Empfänger von Pollin zu schlechtem Empfang führen kann:
      ungeeignete Schaltnetzteile
      Empfänger zu nahe am Kontroller, Display, Kabel zum Display, Nähe zur Tastatur und Maus vom PC (auf meinem Tisch geht mit DCF nix)
      Da muss man bisschen probieren.
      Wenn das Verhältnis zwischen on- zu off-Zeit anders rum ist( länger on als off), dann muss man das Signal invertieren oder im Programm umschalten. Wie schaut es bei dir aus?
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Hallo,
      Du hast recht, daß ich in Bascom ein blutiger Anfänger bin.
      Es ist das 1. Projekt in dieser Richtung. Bisher habe ich einen Eigenbau-3D-Drucker eingerichtet und optimiert ( in C++). Bzw ich arbeite mit Arduino IDE.
      Ich habe Probleme mit dem DCF-Empfang.
      Wahrscheinlich ist hier in der Nachbarschaft eine starke Störquelle.
      Ich habe bereis am PC eine DCF-Uhr (ca 3m abgesetzt in Fensternähe).
      Ich kann hier jede Sekunde ( eindeutige Anzeige: gut/schlecht) sehen, ob sie im das Zeitdiagramm fehlerfrei dekodiert wurde.
      Hier gibt es schon viele "fehlerhafte" Minuten. Aber es gibt schon einige Minuten, wo die PC-Uhr synchronisiert wird.
      Deshalb habe ich schon in der bas 'Status = 60' eingesetzt,das sich die Uhr schneller synchronisieren soll. Ich teste es zur Zeit. Die Uhr hat sich in den ca, 3min noch nicht gestellt.
      Gerade hat sie sich gestellt.
      Weiterhin versuche ich den Empfänger auf dem Oberboden zu installieren.

      mfg Manfred
    • @maheau0
      Es ist manchmal mit dem Empfang so eine Sache. Als erstes, die Antenne(Ferritstab) so ausrichten,
      das die Querseite in Richtung Frankfurt(M) zeigt. Wie schon beschrieben , alles, was stören kann,
      stört auch. Auch ist das weitere Umfeld (andere Häuser, Bäume, Masten u.ä. ) zu beachten.

      Wenn du aber die Uhrzeit nicht unbedingt "atomgenau" brauchst, der Controller quarzgesteuert ist,
      reicht es, wenn alle paar Stunden synchronisiert wird.

      Ich wünsch dir allzeit guten Empfang,und gut,das du zurück bist a_469_0ba4fa91

      Detlef.
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.