Menü Schließen

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:

Den kompletten Aufbau zeigt die folgende Abbildung:

Zwei Ampel-Module (sh. Schema unten) direkt gesteuert von einem ATMega328p. Ein Spannungswandler regelt die 9V der Blockbatterie herunter auf 5 V.

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.

Verdrahtung des ATMega328p

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.

L7805 und Batterieclip zum Anschließen einer 9V Batterie
Schaltung der der Ampel-Module

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.

Folgekapitel (ATtiny85) >>>