Nota
Ciao! Benvenuto nella community di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Esplora più a fondo Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché Unirsi?
Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime Esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime.
Sconti Speciali: Approfitta di sconti esclusivi sui nostri nuovi prodotti.
Promozioni e Omaggi Festivi: Partecipa a promozioni e omaggi durante le festività.
👉 Pronto per esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!
3.1.13 GIOCO – 10 Secondi
Introduzione
Ora realizzeremo un dispositivo di gioco per mettere alla prova la tua concentrazione. Collega l’interruttore di inclinazione a una bacchetta per creare una «bacchetta magica». Agita la bacchetta e il display a 4 cifre inizierà a contare; agitandola nuovamente il conteggio si fermerà. Se riesci a far sì che il conteggio visualizzato sia esattamente 10.00, vinci la sfida. Puoi giocare con i tuoi amici per scoprire chi è il «mago del tempo».
Componenti
Schema Circuitale
T-Board Name |
physical |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO27 |
Pin 13 |
2 |
27 |
GPIO22 |
Pin 15 |
3 |
22 |
SPIMOSI |
Pin 19 |
12 |
10 |
GPIO18 |
Pin 12 |
1 |
18 |
GPIO23 |
Pin 16 |
4 |
23 |
GPIO24 |
Pin 18 |
5 |
24 |
GPIO26 |
Pin 37 |
25 |
26 |
Procedura Sperimentale
Step 1: Costruisci il circuito.
Step 2: Vai nella cartella del codice.
cd ~/davinci-kit-for-raspberry-pi/c/3.1.13/
Step 3: Compila il codice.
gcc 3.1.13_GAME_10Second.c -lwiringPi
Step 4: Esegui il file eseguibile.
sudo ./a.out
Agita la bacchetta per avviare il conteggio sul display a 4 cifre; agitandola di nuovo interromperai il conteggio. Se il conteggio si ferma esattamente su 10.00, vinci. Agitala un’altra volta per iniziare un nuovo round.
Nota
Se il programma non funziona dopo l’avvio o compare un messaggio di errore come : "wiringPi.h: File o directory inesistente", consulta Il codice C non funziona?.
Spiegazione del Codice
void stateChange(){
if (gameState == 0){
counter = 0;
delay(1000);
ualarm(10000,10000);
}else{
alarm(0);
delay(1000);
}
gameState = (gameState + 1)%2;
}
Il gioco è suddiviso in due modalità:
gameState=0 è la modalità «start», nella quale il tempo viene calcolato e visualizzato sul display, e scuotendo l’interruttore di inclinazione si passa alla modalità «mostra».
gameState=1 è la modalità «mostra», in cui il conteggio si ferma e viene visualizzato sul display. Scuotendo nuovamente l’interruttore, il timer si resetta e il gioco ricomincia.
void loop(){
int currentState =0;
int lastState=0;
while(1){
display();
currentState=digitalRead(sensorPin);
if((currentState==0)&&(lastState==1)){
stateChange();
}
lastState=currentState;
}
}
Loop() è la funzione principale. Visualizza il tempo sul display a 4 cifre e legge il valore dell’interruttore di inclinazione. Se lo stato dell’interruttore cambia, viene chiamata la funzione stateChange().