Nota

Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Immergiti più a fondo nel mondo di Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Perché unirsi a noi?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità 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 alle anteprime.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e omaggi: Partecipa a omaggi e promozioni festive.

👉 Sei pronto per esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

3.1.12 GIOCO - 10 Secondi

Introduzione

Ora, segui me per creare un dispositivo di gioco per sfidare la tua concentrazione. Fissa l’interruttore inclinabile a un bastone per creare una bacchetta magica. Agita la bacchetta e il display a 4 cifre inizierà a contare, agita di nuovo per fermare il conteggio. Se riesci a mantenere il conteggio visualizzato su 10.00, hai vinto. Puoi giocare con i tuoi amici per vedere chi è il mago del tempo.

Componenti necessari

In questo progetto, avremo bisogno dei seguenti componenti.

../_images/list_GAME_10_Second.png

È sicuramente conveniente acquistare un intero kit, ecco il link:

Nome

OGGETTI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE COMPONENTI

LINK ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

Display a 7 Segmenti da 4 Cifre

-

74HC595

ACQUISTA

Interruttore di Inclinazione

-

Schema Elettrico

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

../_images/Schematic_three_one13.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/image277.png

Passo 2: Vai alla 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, agita di nuovo per fermare il conteggio. Se riesci a mantenere il conteggio visualizzato su 10.00, hai vinto. Agitala un’altra volta per iniziare un nuovo round del gioco.

Nota

Se dopo l’esecuzione non funziona o compare un messaggio di errore : "wiringPi.h: No such file or directory", fai riferimento a Installa e Controlla 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 è suddiviso in due modalità:

gameState=0 è la modalità «start», in cui il tempo viene cronometrato e visualizzato sul display a segmenti, e scuotendo l’interruttore inclinabile si entra nella modalità «show».

GameState =1 è la modalità «show», che interrompe il cronometraggio e visualizza il tempo sul display a segmenti. Scuotendo nuovamente l’interruttore inclinabile, 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. Prima viene visualizzato il tempo sul display a 4 cifre e viene letto il valore dell’interruttore inclinabile. Se lo stato dell’interruttore inclinabile è cambiato, viene chiamata la funzione stateChange().

Immagine del fenomeno

../_images/image278.jpeg