Nota
Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti?
Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.
Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.
Sconti speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.
Promozioni festive e omaggi: Partecipa a concorsi e promozioni festive.
👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!
3.1.12 GIOCO - 10 Secondi
Introduzione
Seguimi in questo progetto per realizzare un dispositivo di gioco che sfida la tua concentrazione. Fissa l’interruttore a inclinazione a un bastone per creare una bacchetta magica. Agita la bacchetta e il display a 4 cifre inizierà a contare; agitala di nuovo e si fermerà. Se riesci a mantenere il conteggio visualizzato a 10.00, hai vinto. Puoi giocare con i tuoi amici per vedere chi è il mago del tempo.
Componenti necessari
In questo progetto, abbiamo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un kit completo, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK |
|---|---|---|
Kit Raphael |
337 |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE COMPONENTE |
LINK PER L’ACQUISTO |
|---|---|
- |
|
- |
Schema elettrico
Nome scheda |
fisico |
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 |
Procedure sperimentali
Passo 1: Costruisci il circuito.
Passo 2: Vai nella cartella del codice.
cd ~/raphael-kit/c/3.1.12/
Passo 3: Compila il codice.
gcc 3.1.12_GAME_10Second.c -lwiringPi
Passo 4: Esegui il file eseguibile.
sudo ./a.out
Agita la bacchetta e il display a 4 cifre inizierà a contare; agitala di nuovo e il conteggio si fermerà. Se riesci a mantenere il conteggio a 10.00, hai vinto. Agitala ancora una volta per iniziare il prossimo turno del gioco.
Nota
Se non funziona dopo l’esecuzione, o appare un messaggio di errore: "wiringPi.h: No such file or directory", consulta Installazione e verifica di WiringPi.
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 è diviso in due modalità:
gameState=0 è la modalità «start», in cui il tempo viene cronometrato e visualizzato sul display a segmenti, e scuotendo l’interruttore a inclinazione si entra nella modalità «show».
gameState=1 è la modalità «show», che ferma il cronometro e visualizza il tempo sul display a segmenti. Scuotendo di nuovo l’interruttore a inclinazione, il timer si resetterà e il gioco ricomincerà.
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. Per prima cosa, il tempo viene visualizzato sul display a 4 cifre e il valore dell’interruttore a inclinazione viene letto. Se lo stato dell’interruttore a inclinazione è cambiato, viene chiamata stateChange().
Immagine del fenomeno