mardi 6 mars 2012

Témoin sonore et lumineux pour jeu questionnaire (Arduino)

J'ai construit ce petit système en m'inspirant des quiz télévisés:  le maître de jeu pose une question, et le premier concurrent qui appuie sur son bouton obtient le privilège d'y répondre.

Je voulais donc un système pour 3 joueurs; le premier bouton actionné entraîne la production d'un son caractéristique (différent pour chaque concurrent) et  l'allumage d'une LED (de couleur différente pour chaque concurrent).   L'appui sur les autres boutons est ignoré jusqu'à ce qu'une remise à zéro soit effectuée par le maître de jeu.


Un tel système peut être mis au point sans microcontrôleur, au moyen d'un assez grand nombre de résistances et de transistors (voir schéma d'un montage ici):   beaucoup de soudure en perspective...  Avec l'Arduino, le circuit est beaucoup plus simple:


Le prototype a été fait sur une platine sans soudure.  Bien entendu, le modèle définitif contiendrait de bonnes longueurs de fil pour permettre à chaque concurrent de tenir son bouton devant soi.

/********************************************************
Témoin lumineux et sonore pour jeu questionnaire
Mars 2012
https://electroniqueamateur.blogspot.com/2012/03/temoin-sonore-et-lumineux-pour-jeu.html
*********************************************************/
// assignation des entrées-sorties
const int boutonreset = 2;
const int bouton1 = 3;
const int bouton2 = 4;
const int bouton3 = 5;
const int LED1 = 6;
const int LED2 = 7;
const int LED3 = 8;
const int HautParleur = 9;
short joueur = 0;
void setup() {
// les boutons sont des inputs
pinMode(boutonreset, INPUT);
pinMode(bouton1, INPUT);
pinMode(bouton2, INPUT);
pinMode(bouton3, INPUT);
// les LEDs sont des outputs
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop(){
if (digitalRead(boutonreset)){
joueur = 0;
}
if (joueur==0){
if (digitalRead(bouton1)){
joueur = 1;
tone(HautParleur, 264, 100);
}
if (digitalRead(bouton2)){
joueur = 2;
tone(HautParleur, 330, 100);
}
if (digitalRead(bouton3)){
joueur = 3;
tone(HautParleur, 396, 100);
}
}
if (joueur == 1) {
digitalWrite(LED1, HIGH);
}
else {
digitalWrite(LED1, LOW);
}
if (joueur == 2) {
digitalWrite(LED2, HIGH);
}
else {
digitalWrite(LED2, LOW);
}
if (joueur == 3) {
digitalWrite(LED3, HIGH);
}
else {
digitalWrite(LED3, LOW);
}
}
view raw quiz.ino hosted with ❤ by GitHub

Yves Pelletier (Twitter: @ElectroAmateur)

Aucun commentaire:

Enregistrer un commentaire