Wechselblinker



Die erste LED (im Bild ganz links) auf unserem Board ist an  PD2 angeschlossen und die zweite LED an PD0.

wechselblinken


Natürlich kannst Du die Schaltung auch auf einem Steckbrett aufbauen.
Das wäre dann eine Erweiterung der Schaltung von dem hier.



Schau Dir den Programmcode an:


#include <avr/io.h>

#define F_CPU 1000000UL  // 1 MHz
#include <util/delay.h>

int main(void)
{
    DDRD |= _BV(PD2); //PD2 zum Ausgang machen (= 1. LED von links)
    DDRD |= _BV(PD0); //PD0 zum Ausgang machen (= 2. LED von links)
   
    //blink, blink:
    while (1){
        PORTD &= ~_BV(PD2); //PD2 = low -> LED an
        PORTD |= _BV(PD0); //PD0 = high -> LED aus
       
        _delay_ms(250); //250 ms warten
       
        PORTD |= _BV(PD2); //PD2 = high -> LED aus
        PORTD &= ~_BV(PD0); //PD0 = low -> LED an
       
        _delay_ms(250); //250 ms warten
    }
   
   
return(0);
}



Wie das Programm in dem Mikrocontroller kommt, ist im Einstiegs-Projekt Das Blinksdings erklärt.
Hier gibt's den Code-Ordner zum Runterladen.


Anmerkungen:

  • Wenn Du hier irgendwas nicht verstehst, solltest Du Dir unbedingt das Projekt Hello World - Atmega8! ganz durchlesen und vorher natürlich das Kapitel C für Mikrocontroller durchgearbeitet haben.

  • Es ist normal, daß einige LEDs (etwa in der Mitte) des Bords leuchten oder flackern, solange das Programmierkabel angestöpselt ist.


Aufgaben:

  • Spiel doch mal mit den Leuchtzeiten herum!
    Die Funktion _delay_ms() kannst Du maximal mit dem Wert 262.14 ms füttern.
    Du kannst sie aber mehrmals hintereinander verwenden.
    Du könntest Dir auch Deine eigene Funktion für Zeitverzögerungen schreiben.