Wer ein UNO-Board mit gesockeltem ATMega328p besitzt, der kann ihn programmieren, heraushebeln und so in einem Projekt der eigenen Wahl verwenden.
Im Folgenden wird das an einer Ampelschaltung gezeigt, zu dem Teile für zusammen etwa 10 Euro benötigt werden:
- ATMega328p mit Bootloader (zum Tausch gegen den auf dem Arduino Board)*)
- Breadboard
- Kondensatoren (22pF)
- Kristall (16 MHz)
- DC-DC Spannungsregler (5V – beispielsweise L7805C)
- Batterieclip
- 9V Block-Batterie (preisgünstig bei Aldi oder Lidl)
Den kompletten Aufbau zeigt die folgende Abbildung:
Nummeriert man die Pins des ATMega328p linksherum von 1 bis 28, erfolgt die Stromversorgung über die Pins 7 (+5V) und 8 (GND) sowie den Pins 20 (+5V) und 22 (GND) auf der gegenüberliegenden Seite. Verbindet man diese Pins überkreuz, kann die Stromzufuhr von einer Seite erfolgen.
Taktgeber ist ein 16 MHz Kristall, das über Pin 9 und 10 angebunden ist und über zwei Kondensatoren von jeweils 22 pF mit dem Minuspol (GND) in Verbindung steht.
Mithilfe eines Spannungsreglers (beispielsweise einem L 7805 CV) kann zur Stromversorgung ein 9V Batterieblock dienen. Der Regler reduziert die Spannung auf 5 V. Der ATmega328P benötigt zwischen 3,8 und 5,5 V, wobei das Maximum nicht überschritten werden sollte.
Statt der der Ampel-Module können natürlich auch einzelne LEDs gesteckt werden. Sie werden hier über die Pins A0, A1 und A2 beziehungsweise D6, D7 und D8 angesteuert. Wie sie auf dem Modul angeordnet sind, zeigt die Schemazeichnung links.
Programmcode:
void setup()
{
pinMode( 6 , OUTPUT); //Rot 1. Ampel
pinMode( 7 , OUTPUT); //Gelb 1. Ampel
pinMode( 8 , OUTPUT); //Grün 1. Ampel
pinMode( A2 , OUTPUT); //Rot 2. Ampel
pinMode( A1 , OUTPUT); //Gelb 2. Ampel
pinMode( A0 , OUTPUT); //Grün, 2. Ampel
}
void loop()
{
digitalWrite( 6 , HIGH );
digitalWrite( A2 , HIGH );
delay( 5000 );
digitalWrite( 7 , HIGH );
delay( 2000 );
digitalWrite( 6 , LOW );
digitalWrite( 7 , LOW );
digitalWrite( 8 , HIGH );
delay( 5000 );
digitalWrite( 8 , LOW );
digitalWrite( 7 , HIGH );
delay( 2000 );
digitalWrite( 7 , LOW );
digitalWrite( 6 , HIGH );
delay( 2000 );
digitalWrite( A1 , HIGH );
delay( 2000 );
digitalWrite( A1 , LOW );
digitalWrite( A2 , LOW);
digitalWrite( A0 , HIGH);
delay( 5000 );
digitalWrite( A0 , LOW );
digitalWrite( A1 , HIGH );
delay( 2000 );
digitalWrite( A1 , LOW);
}
*) Einen fabrikneuen ATMega328p mit einem Bootloader ausstatten:
Wer die Mehrarbeit nicht scheut oder ganz allgemein daran interessiert ist, kann den Bootloader selbst auf einen ATMega328p brennen. Dazu werden zwei Boards benötigt, eins davon muss einen Sockel haben, auf den die zu programmierende CPU gesteckt werden kann. Dabei ist darauf zu achten, dass die runde Kerbe des ATMega vom USB-Anschluss weg zeigt. Dort finden sich auch die zur Programmierung nötigen „ICSP“-Pins.
Hier das Verbindungsschema:
Auf das für die Programmierung vorgesehene Board wird der Sketch „Arduino-ISP“ geladen, das im Menü unter „Beispiele“ zu finden ist:
Zur eigentlichen Programmierung muss unter „Werkzeuge“ als Programmer „Arduino as ISP“ ausgewählt und danach der Befehl „Bootloader brennen“ ausgeführt werden.
Damit ist der Prozessor für eine normale Verwendung auf einem beliebigen UNO-Board vorbereitet.