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:
Alles anzeigen
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
- $regfile = "m2560def.dat"
- $crystal = 16000000
- $hwstack = 64
- $swstack = 32
- $framesize = 32
- Ddrb.7 = 1 'LED1
- Ddrb.6 = 1 'LED2
- Ddrb.5 = 1 'LED3
- Ddrb.4 = 1 'LED4
- Ddrg.5 = 1 '74HC595 Latch
- Ddrh.4 = 1 '74HC595 Clock
- Ddrh.5 = 1 '74HC595 Data
- Ddre.5 = 1 'Buzzer
- Porte.5 = 1 'Hupe aus
- Hupe Alias Porte.5
- Sclock Alias Porth.4
- Sdata Alias Porth.5
- Slatch Alias Portg.5
- Slatch = 1
- Led1 Alias Portb.7
- Led2 Alias Portb.6
- Led3 Alias Portb.5
- Led4 Alias Portb.4
- Taster1 Alias Pinf.1 'Taster1
- Portf.1 = 1 'Pullup
- Taster2 Alias Pinf.2 'Taster2
- Portf.2 = 1 'Pullup
- Taster3 Alias Pinf.3 'Taster3
- Portf.3 = 1 'Pullup
- Dim I As Byte 'Hilfsvariablen
- Dim Tempw As Word
- Dim Z As Word 'Zaehler fuer Zehntelsekunden
- Dim S_byte As Byte '7-Segment Daten SPI
- Dim S_ziffer As Byte '7-Segment Ziffer SPI
- Dim Zahl(4) As Byte 'Enthält die 4 Ziffern
- Dim Schleifenzaehler As Byte 'freilaufender Zaehler fuer Multiplexing
- Dim Anzeige As Byte 'Auswahl Ziffer Multiplexing
- Dim Hupe_an As Bit 'Merker für Tastenwahl
- Dim Zaehl_richtung As Bit
- Dim Lauflicht_richtung As Bit
- Config Timer1 = Timer , Prescale = 256 'Taktquelle 16MHz/256
- On Timer1 T1irq
- Enable Timer1
- Enable Interrupts
- Timer1 = 59286
- Anzeige = 1 'Startwert Ziffer 1 rechts
- Do
- Debounce Taster1 , 0 , Taster1gesetzt , Sub 'Taster links
- Debounce Taster2 , 0 , Taster2gesetzt , Sub 'Taster mitte
- Debounce Taster3 , 0 , Taster3gesetzt , Sub 'Taster rechts
- Incr Schleifenzaehler
- Anzeige = Schleifenzaehler And 3
- Incr Anzeige
- If Zahl(1) = 0 Then
- If Hupe_an = 1 Then
- Toggle Hupe
- End If
- Else
- Hupe = 1 'aus
- End If
- If Lauflicht_richtung = 0 Then
- I = Zahl(1)
- Else
- I = 9 - Zahl(1)
- End If
- Select Case I
- Case 0
- Led1 = 1 '1 = aus
- Led2 = 1
- Led3 = 1
- Toggle Led4 'Toggeln = halbe Helligkeit
- Case 1
- Led1 = 1
- Led2 = 1
- Toggle Led3
- Toggle Led4
- Case 2
- Led1 = 1
- Toggle Led2
- Toggle Led3
- Toggle Led4
- Case 3
- Toggle Led1
- Toggle Led2
- Toggle Led3
- Toggle Led4
- Case 4
- Toggle Led1
- Toggle Led2
- Toggle Led3
- Toggle Led4
- Case 5
- Led1 = 0
- Toggle Led2
- Toggle Led3
- Led4 = 1
- Case 6
- Toggle Led1
- Toggle Led2
- Led3 = 1
- Led4 = 1
- Case 7
- Toggle Led1
- Led2 = 1
- Led3 = 1
- Led4 = 1
- Case 8
- Led1 = 1
- Led2 = 1
- Led3 = 1
- Led4 = 1
- End Select
- Tempw = Z / 1000
- Zahl(4) = Tempw
- Tempw = Z Mod 1000
- Tempw = Tempw / 100
- Zahl(3) = Tempw
- Tempw = Z Mod 100
- Zahl(2) = Tempw / 10
- Tempw = Z Mod 10
- Zahl(1) = Tempw
- S_byte = Lookup(zahl(anzeige) , Segment_daten)
- If Anzeige = 1 Then
- S_ziffer = 8
- Elseif Anzeige = 2 Then
- ' If Z <= 9 Then S_byte = &HFF
- S_ziffer = 4
- Tempw = Z Mod 10
- If Tempw <= 4 Then S_byte.7 = 0
- Elseif Anzeige = 3 Then
- If Z <= 99 Then S_byte = &HFF
- S_ziffer = 2
- Else
- If Z <= 999 Then S_byte = &HFF
- S_ziffer = 1
- Anzeige = 0
- End If
- Shiftout Sdata , Sclock , S_byte , 1
- Shiftout Sdata , Sclock , S_ziffer , 1
- Slatch = 0
- Slatch = 1
- Waitus 50
- Loop
- T1irq:
- '1/10 Sekunde
- Timer1 = 59286
- If Zaehl_richtung = 0 Then 'vorwaerts
- Incr Z
- If Z >= 10000 Then Z = 0
- Else 'rueckwaerts
- If Z > 0 Then
- Decr Z
- Else
- Z = 9999
- End If
- End If
- Return
- Taster1gesetzt:
- Toggle Hupe_an
- Return
- Taster2gesetzt:
- Toggle Zaehl_richtung
- Return
- Taster3gesetzt:
- Toggle Lauflicht_richtung
- Return
- ' hgfedcba _____
- '0 11000000 192 | a |
- '1 11111001 249 f| |b
- '2 10100100 160 |_____|
- '3 10110000 176 | g |
- '4 10011001 153 e| |c
- '5 10010010 146 |_____|
- '6 10000010 130
- '7 11111000 248
- '8 10000000 128
- '9 10010000 144
- Segment_daten:
- Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144