Dreikanallauflicht



Ab drei LED kann man ein Laufen des Lichtes realisieren.

Die ersten drei LEDs sind (in der Reihenfolge) an PD2, PD0 und PD1 angeschlossen.





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)
    DDRD |= _BV(PD1); //PD1 zum Ausgang machen (= 3. LED von links)
   

    while (1){
        PORTD &= ~_BV(PD2);     //PD2 = low  -> LED an
        PORTD |= _BV(PD0);     //PD0 = high -> LED aus
        PORTD |= _BV(PD1);     //PD1 = high -> LED aus
        _delay_ms(250); //250 ms warten
       
        PORTD |= _BV(PD2);     //PD2 = high -> LED aus
        PORTD &= ~_BV(PD0);     //PD0 = low -> LED an
        PORTD |= _BV(PD1);     //PD1 = high -> LED aus
        _delay_ms(250); //250 ms warten
       
        PORTD |= _BV(PD2);     //PD2 = high -> LED aus
        PORTD |= _BV(PD0);     //PD0 = high -> LED aus
        PORTD &= ~_BV(PD1);     //PD1 = low -> LED an
        _delay_ms(250); //250 ms warten
    }
   
   
return(0);
}



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:

  • Lass das Licht in die andere Richtung laufen!