Gegenseitige Verriegelung / Quiz-Schaltung



Die Schaltung mit dem Namen "Gegenseitige Verriegelung" findet man auch manchmal unter dem Namen "Quiz-Schaltung".
Stell Dir folgende Situation vor: Drei Kandidaten und ein Quizmaster. Jeder Kandidat hat einen Knopf und eine Lampe vor sich. Der Quizmaster stellt eine Frage. Der Kandidat, der am schnellsten auf seinen Knopf drückt, dessen Lampe geht an. Die anderen Kandidaten können ihre Lampe nun nicht mehr einschalten. Erst der Quizmaster kann alles wieder auf Anfang zurücksetzen.



Hier die Schaltung:



Du kannst unser Experimentierboard benutzen.



Schau Dir den Code an:

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

int main(void)
{
    int x=0;
 
    DDRB = 255; DDRD = 255;   //PORTB und PORTD sind Ausgaenge
    PORTB = 255; PORTD = 255; //Alle LEDs aus
   
    DDRC = 0; //PORTC -> Eingaenge
    PORTC = 255; // alle Pull-Up-Widerstaende von PORTC einschalten

    while(1){
        if ( (bit_is_clear(PINC,0)) && (x==0) ) {led1on; x=1;} //Kandidat 1
        if ( (bit_is_clear(PINC,1)) && (x==0) ) {led2on; x=1;} //Kandidat 2
        if ( (bit_is_clear(PINC,2)) && (x==0) ) {led3on; x=1;} //Kandidat 3
       
        if (bit_is_clear(PINC,5)) {x=0; led1off; led2off; led3off; } //Master
    }
   
     return(0);
}

 

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




Anmerkungen:

  • Bau die Schaltung und das Programm doch mal für 4 oder 5 Kandidaten um!