.. note:: 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 [|link_sf_facebook|] 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 ---------------- .. image:: img/list_GAME_10_Second.png :align: center 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 ============ ======== ======== === .. image:: img/Schematic_three_one13.png :align: center Procedura Sperimentale --------------------------------- **Step 1**: Costruisci il circuito. .. image:: img/image277.png :width: 800 **Step 2**: Vai nella cartella del codice. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/c/3.1.13/ **Step 3**: Compila il codice. .. raw:: html .. code-block:: gcc 3.1.13_GAME_10Second.c -lwiringPi **Step 4**: Esegui il file eseguibile. .. raw:: html .. code-block:: 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. .. note:: Se il programma non funziona dopo l’avvio o compare un messaggio di errore come : \"wiringPi.h: File o directory inesistente\", consulta :ref:`faq_c_nowork`. **Spiegazione del Codice** .. code-block:: c 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. .. code-block:: c 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().