Arduino Atmega 2560 mit Expansionsboard

    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!

    • Arduino Atmega 2560 mit Expansionsboard

      Arduino_Atmega2560.jpgArduino_Expansion.jpg

      Mit nicht mal 15 Euro bekommt man ein komplettes Board zum Einsteigen und loslegen. Auch für Fortgeschrittene ein schönes Testgelände mit satt Speicher.
      Den Arduino Mega2560 gibt es ebenso in der Bucht wie das passende Aufsteckboard.
      Die Stiftleisten passen leidlich zu den Buchsenleisten, nur stört der USB-Port, der die Kontakte der Huckepack-Platine nach GND kurzschließt.
      Vielleicht gibt es noch ein Zwischenboard, ansonsten muss man wohl erstmal wie ich mit schräg aufstecken vorlieb nehmen.

      Arduino_huckepack.jpg

      Das Arduino Board trägt einen Atmega2560 und einen seriell-USB Umsetzer CH340. Eine Buchse für Hohlstecker und ein Spannungsregler sind vorhanden

      Wenn der Treiber installiert ist, dann kann ganz einfach das Programm mir dem beiliegenden USB-Kabel (50cm) mit Bascom übertragen werden.
      Arduino_Mega2560_Programmer.png

      Das USB-Kabel sorgt auch gleich für die Stromversorgung, ich finde, leichter kann man heutzutage kaum noch in die Materie einsteigen.

      Ich habe mal ein kleines Testprogramm geschrieben, das das 7-Segment Display ansteuert und die 4 LEDs und den Buzzer.
      Die 3 Taster werden auch abgefragt.
      Der Buzzer hat einen eingebauten Tongeber. Wenn man den Buzzer aber mit einer eigenen Frequenz ansteuert, dann geht das auch, und es ist dann angenehm leiser;)

      Leider hat der ArduinoMega2560 wie alle China-Klone, die ich kenne, keinen echten Quarz, die Taktfrequenz stimmt also nicht 100%ig. Der Anwender muss also bei Uhren-Anwendungen selbst einen Quarz z.B. an Timer2 anbringen.



      Arduino_im_Einsatz.jpg

      Das Pinout der Arduinos ist mit solchen Grafiken leicht für nicht-Arduino-Nutzer zugänglich:

      ARDUINO.Mega.Pinout.Diagram.png

      Das Pinout des Multi-Shields ist leider nicht so leicht zu finden, hier ein Beispiel:
      arduino-shop.eu/photos/produkty_gal/f/2/2259.jpg

      Zum Schluss natürlich noch das Programm:

      BASCOM-Quellcode: Arduino_Mega_Multi_IO

      1. $regfile = "m2560def.dat"
      2. $crystal = 16000000
      3. $hwstack = 64
      4. $swstack = 32
      5. $framesize = 32
      6. Ddrb.7 = 1 'LED1
      7. Ddrb.6 = 1 'LED2
      8. Ddrb.5 = 1 'LED3
      9. Ddrb.4 = 1 'LED4
      10. Ddrg.5 = 1 '74HC595 Latch
      11. Ddrh.4 = 1 '74HC595 Clock
      12. Ddrh.5 = 1 '74HC595 Data
      13. Ddre.5 = 1 'Buzzer
      14. Porte.5 = 1 'Hupe aus
      15. Hupe Alias Porte.5
      16. Sclock Alias Porth.4
      17. Sdata Alias Porth.5
      18. Slatch Alias Portg.5
      19. Slatch = 1
      20. Led1 Alias Portb.7
      21. Led2 Alias Portb.6
      22. Led3 Alias Portb.5
      23. Led4 Alias Portb.4
      24. Taster1 Alias Pinf.1 'Taster1
      25. Portf.1 = 1 'Pullup
      26. Taster2 Alias Pinf.2 'Taster2
      27. Portf.2 = 1 'Pullup
      28. Taster3 Alias Pinf.3 'Taster3
      29. Portf.3 = 1 'Pullup
      30. Dim I As Byte 'Hilfsvariablen
      31. Dim Tempw As Word
      32. Dim Z As Word 'Zaehler fuer Zehntelsekunden
      33. Dim S_byte As Byte '7-Segment Daten SPI
      34. Dim S_ziffer As Byte '7-Segment Ziffer SPI
      35. Dim Zahl(4) As Byte 'Enthält die 4 Ziffern
      36. Dim Schleifenzaehler As Byte 'freilaufender Zaehler fuer Multiplexing
      37. Dim Anzeige As Byte 'Auswahl Ziffer Multiplexing
      38. Dim Hupe_an As Bit 'Merker für Tastenwahl
      39. Dim Zaehl_richtung As Bit
      40. Dim Lauflicht_richtung As Bit
      41. Config Timer1 = Timer , Prescale = 256 'Taktquelle 16MHz/256
      42. On Timer1 T1irq
      43. Enable Timer1
      44. Enable Interrupts
      45. Timer1 = 59286
      46. Anzeige = 1 'Startwert Ziffer 1 rechts
      47. Do
      48. Debounce Taster1 , 0 , Taster1gesetzt , Sub 'Taster links
      49. Debounce Taster2 , 0 , Taster2gesetzt , Sub 'Taster mitte
      50. Debounce Taster3 , 0 , Taster3gesetzt , Sub 'Taster rechts
      51. Incr Schleifenzaehler
      52. Anzeige = Schleifenzaehler And 3
      53. Incr Anzeige
      54. If Zahl(1) = 0 Then
      55. If Hupe_an = 1 Then
      56. Toggle Hupe
      57. End If
      58. Else
      59. Hupe = 1 'aus
      60. End If
      61. If Lauflicht_richtung = 0 Then
      62. I = Zahl(1)
      63. Else
      64. I = 9 - Zahl(1)
      65. End If
      66. Select Case I
      67. Case 0
      68. Led1 = 1 '1 = aus
      69. Led2 = 1
      70. Led3 = 1
      71. Toggle Led4 'Toggeln = halbe Helligkeit
      72. Case 1
      73. Led1 = 1
      74. Led2 = 1
      75. Toggle Led3
      76. Toggle Led4
      77. Case 2
      78. Led1 = 1
      79. Toggle Led2
      80. Toggle Led3
      81. Toggle Led4
      82. Case 3
      83. Toggle Led1
      84. Toggle Led2
      85. Toggle Led3
      86. Toggle Led4
      87. Case 4
      88. Toggle Led1
      89. Toggle Led2
      90. Toggle Led3
      91. Toggle Led4
      92. Case 5
      93. Led1 = 0
      94. Toggle Led2
      95. Toggle Led3
      96. Led4 = 1
      97. Case 6
      98. Toggle Led1
      99. Toggle Led2
      100. Led3 = 1
      101. Led4 = 1
      102. Case 7
      103. Toggle Led1
      104. Led2 = 1
      105. Led3 = 1
      106. Led4 = 1
      107. Case 8
      108. Led1 = 1
      109. Led2 = 1
      110. Led3 = 1
      111. Led4 = 1
      112. End Select
      113. Tempw = Z / 1000
      114. Zahl(4) = Tempw
      115. Tempw = Z Mod 1000
      116. Tempw = Tempw / 100
      117. Zahl(3) = Tempw
      118. Tempw = Z Mod 100
      119. Zahl(2) = Tempw / 10
      120. Tempw = Z Mod 10
      121. Zahl(1) = Tempw
      122. S_byte = Lookup(zahl(anzeige) , Segment_daten)
      123. If Anzeige = 1 Then
      124. S_ziffer = 8
      125. Elseif Anzeige = 2 Then
      126. ' If Z <= 9 Then S_byte = &HFF
      127. S_ziffer = 4
      128. Tempw = Z Mod 10
      129. If Tempw <= 4 Then S_byte.7 = 0
      130. Elseif Anzeige = 3 Then
      131. If Z <= 99 Then S_byte = &HFF
      132. S_ziffer = 2
      133. Else
      134. If Z <= 999 Then S_byte = &HFF
      135. S_ziffer = 1
      136. Anzeige = 0
      137. End If
      138. Shiftout Sdata , Sclock , S_byte , 1
      139. Shiftout Sdata , Sclock , S_ziffer , 1
      140. Slatch = 0
      141. Slatch = 1
      142. Waitus 50
      143. Loop
      144. T1irq:
      145. '1/10 Sekunde
      146. Timer1 = 59286
      147. If Zaehl_richtung = 0 Then 'vorwaerts
      148. Incr Z
      149. If Z >= 10000 Then Z = 0
      150. Else 'rueckwaerts
      151. If Z > 0 Then
      152. Decr Z
      153. Else
      154. Z = 9999
      155. End If
      156. End If
      157. Return
      158. Taster1gesetzt:
      159. Toggle Hupe_an
      160. Return
      161. Taster2gesetzt:
      162. Toggle Zaehl_richtung
      163. Return
      164. Taster3gesetzt:
      165. Toggle Lauflicht_richtung
      166. Return
      167. ' hgfedcba _____
      168. '0 11000000 192 | a |
      169. '1 11111001 249 f| |b
      170. '2 10100100 160 |_____|
      171. '3 10110000 176 | g |
      172. '4 10011001 153 e| |c
      173. '5 10010010 146 |_____|
      174. '6 10000010 130
      175. '7 11111000 248
      176. '8 10000000 128
      177. '9 10010000 144
      178. Segment_daten:
      179. Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144
      Alles anzeigen