Pit Quiz

PitQuiz è uno strumento indispensabile per definire la prenotazione nei giochi a quiz.

Qui è stato implementato utilizzando dei sensori capacitivi di semplice costruzione (stagnola e cavetto) su una PCB predisposta per Arduino nano. Questo consente di poter sfogare la propria voglia di premere il "pulsantone" senza pericolo di romperlo.

La taratura va fatta in funzione del luogo e della fonte di alimentazione attraverso l'apposita variabile che trovate nello codice Arduino.

Una particolarità le porte analogiche di Arduino sono state utilizzate come porte digitali per averne un numero sufficiente per i controlli e per l'accensione dei segmenti del display e dei led (verificare la numerazione nel codice) - si ringrazia nuovamente Daniele Alberti per le preziose informazioni presenti sul suo Sito.

ozio_gallery_jgallery

Cosa serve:

  • Arduino
  • Led
  • Display ad 8 segmenti
  • Altoparlante
  • Cavetti
  • Resistenze 220 ohm
  • Resistenze 18000 ohm

 

Download:

Codice sorgente:


/*
ZappocoS          - PitQuiz01             11/12/2015 -- predisposizione iniziale
ZappocoS          - PitQuiz02             13/12/2015 -- aggiunti toni al posto del led GUT
ZappocoS          - PitQuiz03             13/12/2015 -- sostituzione pulsanti con sensori capacitivi
PitQuiz01 --> Controllo prenotazioni gioco a quiz del pit
*/
#include <CapacitiveSensor.h>; 
const int GIO = 14; //  Ingresso controllo giocatori per
const int GIA = 2;  //  Ingresso pulsante giocatore 1
const int GIB = 3;  //  Ingresso pulsante giocatore 2
const int GIC = 4;  //  Ingresso pulsante giocatore 3
const int GID = 5;  //  Ingresso pulsante giocatore 4 
CapacitiveSensor capSensor_1 = CapacitiveSensor (GIO,GIA);
CapacitiveSensor capSensor_2 = CapacitiveSensor (GIO,GIB);
CapacitiveSensor capSensor_3 = CapacitiveSensor (GIO,GIC);
CapacitiveSensor capSensor_4 = CapacitiveSensor (GIO,GID);
int thereshold = 1200;
const int GUA = 18; //18 --> A4  Uscita prenotazione per giocatore 1    uscita 2
const int GUB = 17; //17 --> A3  Uscita prenotazione per giocatore 2    uscita 3
const int GUC = 16; //16 --> A2  Uscita prenotazione per giocatore 3    uscita 4 
const int GUD = 15; //15 --> A1  Uscita prenotazione per giocatore 4    uscita 5
const int GUT = 13; //  Allarme sonoro            uscita 6
const int a = 8;   //  Display 7 seg (a)
const int b = 9;   //  Display 7 seg (b)
const int c = 10;  //  Display 7 seg (c)
const int d = 11;  //  Display 7 seg (d)
const int e = 12;  //  Display 7 seg (e) 
const int f = 7;   //  Display 7 seg (f)
const int g = 6;   //  Display 7 seg (g)
const int T1 = 200;  //  Tempo allarme sonoro
const int T2 = 3000;  //  Tempo visualizzazione prenotazione in aggiunta al T1
int notes[] ={262,362,462,562};
void setup() {
   Serial.begin (9600);
   pinMode(GUA, OUTPUT); //  Uscita prenotazione per giocatore 1
   pinMode(GUB, OUTPUT); //  Uscita prenotazione per giocatore 2
   pinMode(GUC, OUTPUT); //  Uscita prenotazione per giocatore 3
   pinMode(GUD, OUTPUT); //  Uscita prenotazione per giocatore 4
   pinMode(GUT, OUTPUT); //  Allarme sonoro            
   pinMode(a, OUTPUT); //  Uscita display 7 seg (a)
   pinMode(b, OUTPUT); //  Uscita display 7 seg (b)
   pinMode(c, OUTPUT); //  Uscita display 7 seg (c)
   pinMode(d, OUTPUT); //  Uscita display 7 seg (d)
   pinMode(e, OUTPUT); //  Uscita display 7 seg (e)
   pinMode(f, OUTPUT); //  Uscita display 7 seg (f) 
   pinMode(g, OUTPUT); //  Uscita display 7 seg (g)  
   int n;
   for (n=1; n<5; n++)
   {
     digitalWrite(a, HIGH);
     delay (100);
     digitalWrite(a, LOW);
     digitalWrite(b, HIGH);
     delay (100);
     digitalWrite(b, LOW);
     digitalWrite(c, HIGH);
     delay (100);
     digitalWrite(c, LOW);
     digitalWrite(d, HIGH);
     delay (100);
     digitalWrite(d, LOW);
     digitalWrite(e, HIGH);
     delay (100);
     digitalWrite(e, LOW);
     digitalWrite(f, HIGH);
     delay (100);
     digitalWrite(f, LOW);
   }
   for (n=1; n<3; n++)
   {
       blinkLoop ();
       //delay (100);
   }
   bipBipLoop ();
 }
void loop() {
  //  Gruppo prenotazione giocatore 1
  long sensorValue_1 = capSensor_1.capacitiveSensor(30);
  if (sensorValue_1 > thereshold)
    {
       digitalWrite(GUA, HIGH); //  accendi lampada giocatore 1
       digitalWrite(GUB, LOW);  //  tieni spenta lampada giocatore 2 
       digitalWrite(GUC, LOW);  //  tieni spenta lampada giocatore 3
       digitalWrite(GUD, LOW);  //  tieni spenta lampada giocatore 4
       // digitalWrite(GUT, HIGH); //  accendi segnalatore acustico 
       tone (GUT, notes[0]);
       digitalWrite(b, HIGH);digitalWrite(c, HIGH); //  accendi display valore 1
       delay(T1);
       //digitalWrite(GUT, LOW);
       noTone(GUT);
        delay(T2);
        digitalWrite(GUA, LOW);
       digitalWrite(b, LOW);digitalWrite(c, LOW);
       blinkLoop ();
       bipBipLoop ();      
    } //  Spegni lampada giocatore 1 e il display
  //  Gruppo prenotazione giocatore 2
  long sensorValue_2 = capSensor_2.capacitiveSensor(30);
  if (sensorValue_2 > thereshold)
    {
       digitalWrite(GUA, LOW);  //  tieni spenta lampada giocatore 1 
       digitalWrite(GUB, HIGH); //  accendi lampada giocatore 2
       digitalWrite(GUC, LOW);  //  tieni spenta lampada giocatore 3
       digitalWrite(GUD, LOW);  //  tieni spenta lampada giocatore 4
       //digitalWrite(GUT, HIGH); //  accendi segnalatore acustico
       tone (GUT, notes[1]);
       digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(g, HIGH);digitalWrite(e, HIGH);digitalWrite(d, HIGH); //  accendi display valore 2
       delay(T1);
       //digitalWrite(GUT, LOW);
       noTone(GUT);
       delay(T2);
       digitalWrite(GUB, LOW);
       digitalWrite(a, LOW);digitalWrite(b, LOW);digitalWrite(g, LOW);digitalWrite(e, LOW);digitalWrite(d, LOW);
       blinkLoop ();
       bipBipLoop ();
    } //  Spegni lampada giocatore 2 e il display
  //  Gruppo prenotazione giocatore 3  
  long sensorValue_3 = capSensor_3.capacitiveSensor(30);
  if (sensorValue_3 > thereshold)
    {
       digitalWrite(GUA, LOW);   //  tieni spenta lampada giocatore 1 
       digitalWrite(GUB, LOW);   //  tieni spenta lampada giocatore 2  
       digitalWrite(GUC, HIGH);  //  accendi lampada giocatore 3
       digitalWrite(GUD, LOW);   //  tieni spenta lampada giocatore 4 
       //digitalWrite(GUT, HIGH);  //  accendi segnalatore acustico
       tone (GUT, notes[2]);
       digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(g, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH); //  accendi display valore 3
       delay(T1);
       //digitalWrite(GUT, LOW);
       noTone(GUT);
       delay(T2);
       digitalWrite(GUC, LOW);
       digitalWrite(a, LOW);digitalWrite(b, LOW);digitalWrite(g, LOW);digitalWrite(c, LOW);digitalWrite(d, LOW);
       blinkLoop ();
       bipBipLoop ();
    } //  Spegni lampada giocatore 3 e il display
  //  Gruppo prenotazione giocatore 4
  long sensorValue_4 = capSensor_4.capacitiveSensor(30);
  if (sensorValue_4 > thereshold)
    {
       digitalWrite(GUA, LOW);   //  tieni spenta lampada giocatore 1
       digitalWrite(GUB, LOW);   //  tieni spenta lampada giocatore 2
       digitalWrite(GUC, LOW);   //  tieni spenta lampada giocatore 3
       digitalWrite(GUD, HIGH);  //  accendi lampada giocatore 4
       //digitalWrite(GUT, HIGH);  //  accendi segnalatore acustico
       tone (GUT, notes[3]);
       digitalWrite(f, HIGH);digitalWrite(b, HIGH);digitalWrite(g, HIGH);digitalWrite(c, HIGH); //  accendi display valore 4
       delay(T1); //  Attendi per lettura analogica x 10 (poco più di 10 secondi max)
       //digitalWrite(GUT, LOW);
       noTone(GUT);
       delay(T2); //  Attendi per lettura analogica x 10 (poco più di 10 secondi max)
       digitalWrite(GUD, LOW);
       digitalWrite(f, LOW);digitalWrite(b, LOW);digitalWrite(g, LOW);digitalWrite(c, LOW);
       blinkLoop ();
       bipBipLoop ();
    }  //  Spegni lampada giocatore 3 e il display
  Serial.print (sensorValue_1);
  Serial.print ("  ");
  Serial.print (sensorValue_2);
  Serial.print ("  ");
  Serial.print (sensorValue_3);
  Serial.print ("  ");
  Serial.println (sensorValue_4);
}
void blinkLoop (){
   digitalWrite(d, HIGH);
   delay (T1);
   digitalWrite(d, LOW);
   digitalWrite(g, HIGH);
   delay (100);
   digitalWrite(g, LOW);
   digitalWrite(a, HIGH);
   delay (100);
   digitalWrite(a, LOW);
   digitalWrite(g, HIGH);
   delay (100);
   digitalWrite(g, LOW);
   digitalWrite(d, HIGH);
   delay (100);
   digitalWrite(d, LOW);
   digitalWrite(g, HIGH);
   delay (100);
   digitalWrite(g, LOW);
   digitalWrite(a, HIGH);
   delay (100);
   digitalWrite(a, LOW);
   digitalWrite(g, HIGH);
   delay (100);
   digitalWrite(g, LOW);
   //digitalWrite(d, HIGH);
   //delay (100);
   //digitalWrite(d, LOW);
}
void bipBipLoop (){
    tone (GUT, notes[0]);
    delay (T1*2/3);
    noTone (GUT);
    tone (GUT, notes[3]);
    delay (T1*2/3);
    noTone (GUT);
}    

 

ZappocoS - 22 dicembre 2015