Gegenseitige Auslösung



Stell Dir doch mal ein Autoradio vor. So eins mit Senderspeichern.

Wenn Du auf den ersten Senderspeicherknopf drückst, kommt Dein Lieblingsmusiksender. Und wenn Du auf den zweiten Senderspeicherknopf drückst, kommt Dein Lieblings-Nachrichtensender, wobei der Musiksender natürlich aus geht. Wenn Du auf den dritten Senderspeicherknopf usw.

Wir machen's mal mit LEDs. Wenn Du einen der drei Taster S0..S2 betätigst, geht die dazugehörige LED an.
Drückst Du dann einen anderen Taster, geht "seine" LED an und die vorherige aus. Und so weiter.



Hier die Schaltung:



Du kannst unser Experimentierboard benutzen.



Schau Dir den Code an:

#include <avr/io.h>
#include "boarddefs.h"

int main(void)
{
    DDRB = 255; DDRD = 255; //Ausgaenge definieren
    PORTB = 255; PORTD = 255;//alle LEDs aus
    DDRC = 0; PORTC = 255; //Eingaenge definieren und Pull Up Widerstaende einschalten

    while(1){
        if (bit_is_clear(PINC,0)) {led1on; led2off; led3off;} //Kanal 1
        if (bit_is_clear(PINC,1)) {led1off; led2on; led3off;} //Kanal 2
        if (bit_is_clear(PINC,2)) {led1off; led2off; led3on;} //Kanal 3
    }
     return(0);
}
 

Hier gibt es den Code-Ordner zum Programmieren des Atmega8.



Anmerkungen:

  • Wenn diese Schaltung mit genau zwei Kanälen arbeitet, nennt man sie "Flip Flop".

  • Bau die Schaltung und das Programm doch mal für 4,5 oder 6 Kanäle um!