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.

../_images/list_GAME_10_Second.png

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

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE COMPONENTE

LINK PER L’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

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

../_images/Schematic_three_one13.png

Procedure sperimentali

Passo 1: Costruisci il circuito.

../_images/image277.png

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

../_images/image278.jpeg