Note

Bonjour, bienvenue dans la communauté Facebook des passionnés de SunFounder Raspberry Pi & Arduino & ESP32 ! Plongez au cœur des projets avec Raspberry Pi, Arduino et ESP32 aux côtés d’autres amateurs enthousiastes.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes techniques post-vente avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des conseils et des tutoriels pour perfectionner vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits.

  • Réductions spéciales : Bénéficiez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des promotions et concours pendant les fêtes.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] pour nous rejoindre dès aujourd’hui !

3.1.13 JEU – 10 Secondes

Introduction

Dans ce projet, suivez-moi pour fabriquer un appareil de jeu qui mettra à l ’épreuve votre concentration. Attachez le capteur d’inclinaison à une baguette pour créer une baguette magique. Agitez la baguette pour démarrer le chronométrage sur l’afficheur à 4 segments ; agitez à nouveau pour l’arrêter. Si vous parvenez à stabiliser l’affichage sur 10.00, vous gagnez. Jouez avec vos amis pour déterminer qui est le maître du temps.

Composants

../_images/list_GAME_10_Second1.png

Schéma de montage

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

Procédures expérimentales

Étape 1 : Assemblez le circuit.

../_images/image2771.png

Étape 2 : Accédez au dossier contenant le code.

cd ~/davinci-kit-for-raspberry-pi/c/3.1.13/

Étape 3 : Compilez le code.

gcc 3.1.13_GAME_10Second.c -lwiringPi

Étape 4 : Exécutez le fichier compilé.

sudo ./a.out

Agitez la baguette, l’afficheur à 4 segments démarrera le chronométrage ; secouez-la à nouveau pour arrêter le chronométrage. Si vous réussissez à arrêter le compteur à 10.00, vous gagnez. Secouez encore une fois pour commencer une nouvelle manche.

Note

Si cela ne fonctionne pas après l’exécution, ou si un message d’erreur s’affiche : « wiringPi.h: Aucun fichier ou répertoire de ce type », veuillez consulter Le code C ne fonctionne pas ?.

Explication du code

void stateChange(){
    if (gameState == 0){
        counter = 0;
        delay(1000);
        ualarm(10000,10000);
    }else{
        alarm(0);
        delay(1000);
    }
    gameState = (gameState + 1)%2;
}

Le jeu est divisé en deux modes :

gameState=0 est le mode « start », où le temps est mesuré et affiché sur l’afficheur à segments. Lorsque le capteur d’inclinaison est secoué, le jeu passe au mode « show ».

gameState=1 est le mode « show », qui arrête le chronométrage et affiche le temps sur l’afficheur. En secouant à nouveau le capteur d’inclinaison, le minuteur se réinitialise et le jeu redémarre.

void loop(){
    int currentState =0;
    int lastState=0;
    while(1){
        display();
        currentState=digitalRead(sensorPin);
        if((currentState==0)&&(lastState==1)){
            stateChange();
        }
        lastState=currentState;
    }
}

Loop() est la fonction principale. Tout d’abord, le temps est affiché sur l’afficheur à 4 segments et la valeur du capteur d’inclinaison est lue. Si l’état du capteur change, stateChange() est appelée.