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

../_images/list_GAME_10_Second1.png

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

../_images/Schematic_three_one131.png

Procedura Sperimentale

Step 1: Costruisci il circuito.

../_images/image2771.png

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().