Guide du débutant sur l'utilisation d'un Raspberry Pi avec une maquette pour créer un Simon

La maquette vous permet de créer des circuits sans avoir à souder quoi que ce soit. C'est un excellent outil pour expérimenter l'électronique, mais cela peut être un peu intimidant. Construire un projet peut vous aider à rester motivé tout en apprenant.

Il existe de nombreux jeux simples qui peuvent vous aider à créer de grands projets pour les débutants en utilisant Raspberry Pi. L'un des jeux faciles avec lesquels vous pouvez commencer est Simon. Le jeu de Simon est Jeux de mémoire Une série de lumières clignotent dans un ordre aléatoire et le joueur doit se souvenir de la séquence. Au fur et à mesure que le joueur progresse, la durée de la séquence augmente.

Un guide du débutant pour utiliser un Raspberry Pi avec une maquette pour créer un jeu Simon - Tutoriels Raspberry Pi

Composants requis

Pour commencer, vous aurez besoin des éléments suivants:

  • Tarte aux framboises.
  • Système d'exploitation flash de la carte MicroSD OS Raspbian Sur eux
  • 4 x lumières LED de différentes couleurs.
  • 4 x résistances électriques (de 220 ohms à 1 kOhm).
  • 4 x boutons.
  • 1 x planche expérimentale
  • Câbles de connexion pour tout connecter.

Vous pouvez utiliser n'importe quel Raspberry Pi pour ce projet, mais les modèles Pi Zero ne se connectent pas facilement aux planches à pain sans soudure. Quel que soit le modèle que vous utilisez, vous aurez également besoin d'une alimentation, d'un moniteur, d'un clavier et d'une souris.

Si vous n'avez pas encore configuré de Raspberry Pi, vous pouvez apprendre à tout préparer pour ce tutoriel à l'adresse Un guide du débutant sur le Raspberry Pi.

Vous allez écrire du code Python dans ce didacticiel et vous pouvez utiliser n'importe quel éditeur de texte pour l'écrire, mais vous trouverez peut-être un éditeur de code plus simple. Plusieurs d'entre eux sont déjà installés sur le système d'exploitation Raspberry Pi, et Thonny est conçu pour être adapté aux débutants. Quoi que vous l'utilisiez, vous devrez pouvoir enregistrer et exécuter le code pour suivre ce tutoriel.

Premiers pas avec la carte expérimentale

Le Raspberry Pi a deux rangées de broches d'entrée / sortie à usage général (GPIO). Ces broches vous permettent de connecter divers composants externes à votre Raspberry Pi. Certaines broches envoient des informations, d'autres économisent de l'énergie et certaines mettent à la terre vos appareils électroniques.

Un guide du débutant pour utiliser un Raspberry Pi avec une maquette pour créer un jeu Simon - Tutoriels Raspberry Pi

Nous allons commencer à ajouter une LED à notre maquette.

Commencez par attacher la broche GPIO à votre carte. Peu importe la broche, du moment que c'est la broche GPIO et non une broche d'alimentation ou de masse. Ci-dessus se trouve un diagramme de broches GPIO, qui vous aidera à décider quelle broche utiliser. Ce tutoriel utilise le Pin ID 18, également appelé GPIO 24.

La broche fournira une certaine puissance à la maquette et permettra au Raspberry Pi de communiquer avec les composants de la carte. Ensuite, connectez la broche ID 6 sur le Pi au chemin de terre de la planche à pain. Cela mettra le panneau à la terre et permettra la création de circuits électriques.

Un guide du débutant pour utiliser un Raspberry Pi avec une maquette pour créer un jeu Simon - Tutoriels Raspberry Pi

La puissance provenant du Raspberry est trop élevée pour connecter directement la LED. L'utilisation d'une résistance réduit la puissance et empêche la LED de brûler. Connectez un côté de la résistance à la même ligne que la broche GPIO et l'extrémité à l'autre côté de la carte. Ensuite, placez le côté positif de la LED après la résistance. La borne négative de la LED peut être connectée directement au côté négatif. Le résultat final devrait ressembler au graphique ci-dessus. Vérifiez soigneusement vos fils et utilisez votre Pi. La lampe doit être allumée.

Maintenant, vous avez créé un circuit avec votre Raspberry Pi que vous pouvez contrôler à l'aide du code.

Utilisation du code Python pour contrôler les LED

Ce didacticiel vous guide à travers le code à travers les étapes, mais si vous souhaitez revenir au code final, il est disponible à l'adresse Pastebin.

À l'heure actuelle, la LED est alimentée, mais nous voulons contrôler quand elle s'allume et s'éteint. Le code Python suivant nous permettra de parler au tableau.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
GPIO.setup(red, GPIO.OUT)
GPIO.output(red, GPIO.LOW)

Ce sont les premières lignes qui mettent les choses en place. La bibliothèque GPIO Raspberry Pi est importée. Où cela nous permet comme GPIO Reportez-vous à la variable RPi.GPIO en tant que GPIO pour économiser moins d'écriture. Le mode de broche GPIO est configuré sur PLANCHE. Vous n'êtes pas obligé d'utiliser ce paramètre, mais il peut être plus facile de faire référence aux broches dans leur disposition en lignes GPIO.

Enfin, nous définissons les avertissements sur false. Cela désactivera les avertissements inutiles.

Les trois dernières lignes contrôlent la LED. La LED rouge est connectée au terminal GPIO 18. Au lieu de s'en souvenir, il stockera le paramètre rouge Endroit. Après cela, il raconte Configuration GPIO. Notre programme envoie les informations à la broche rouge. Enfin, nous définissons GPIO.output sur la broche rouge sur faible. Lorsque vous exécutez ce programme, la lumière s'éteint. Pour le réactiver, activez GPIO.BAS à GPIO.ÉLEVÉ , Et exécutez à nouveau le programme.

Enregistrez le code et cliquez sur Courir Pour le voir en action. S'il n'y a pas de bouton Exécuter dans l'éditeur de code, enregistrez-le sous un nom (myfilename) et exécutez la commande python monnomfichier.py Dans la fenêtre Terminal. Vous devrez d'abord vous rendre dans le même répertoire que le nouveau fichier Python.

Ajouter plus d'une lampe LED

Pour créer Simon, nous avons besoin de quatre lampes de couleurs différentes. Les mêmes étapes que vous avez utilisées pour configurer la LED rouge peuvent être utilisées pour configurer les trois autres. Votre câblage doit ressembler au diagramme schématique ci-dessous:

Un guide du débutant pour utiliser un Raspberry Pi avec une maquette pour créer un jeu Simon - Tutoriels Raspberry Pi

Votre code devrait ressembler à ceci:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
yellow = 22
green = 24
blue = 26
GPIO.setup(red, GPIO.OUT)
GPIO.setup(yellow, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
GPIO.output(red, GPIO.HIGH)
GPIO.output(yellow, GPIO.HIGH)
GPIO.output(green, GPIO.HIGH)
GPIO.output(blue, GPIO.HIGH)

Une fois que vous avez testé les LED, réglez GPIO.sortie sur GPIO.BAS Pour éteindre à nouveau chaque LED.

Même si la couleur des fils que vous utilisez n'a pas d'importance, essayez d'utiliser des couleurs significatives pour vous aider à lire plus facilement le contenu du tableau. Par exemple, les fils noirs sont souvent utilisés pour les fils de terre. Pour ce circuit, vous voudrez peut-être faire correspondre la couleur du fil à la couleur de la lumière LED.

Contrôlez les lumières avec des boutons

Commencez à ajouter un bouton à votre tableau. Le bouton devra être connecté à la fois au connecteur de masse et à la broche GPIO. Le circuit devrait ressembler à ceci:

Un guide du débutant pour utiliser un Raspberry Pi avec une maquette pour créer un jeu Simon - Tutoriels Raspberry Pi

Pour que le bouton contrôle la LED, nous devons ajouter du code à notre code. Le réglage du bouton est similaire au réglage de la LED, sauf que la broche GPIO est définie pour être entrée et non sortie. Ce code configure également la résistance de surtension interne sur le Pi, ce qui est nécessaire pour que le bouton se comporte correctement.

GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Maintenant, nous avons besoin d'un code qui vérifie si le bouton a été enfoncé ou non.

game = True
while game:
 redButtonState = GPIO.input(32)
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)

Nous voulons que notre logiciel continue de vérifier que le bouton est enfoncé, donc la commande de répétition doit être utilisée tout en. Puisque l'itération ne sera jamais fausse, le code continue de fonctionner et de vérifier le bouton jusqu'à ce que nous terminions le programme manuellement en appuyant sur le bouton pause ou en utilisant un raccourci clavier Ctrl + C.

Ensuite, pour faciliter la signalisation de l'entrée que la broche GPIO nous envoie, nous sauvegardons ces informations dans le paramètre état du bouton rouge. Si notre entrée de bouton passe à 0, nous savons que le bouton a été enfoncé.

Si le bouton est enfoncé, la LED rouge s'allume. Ensuite, après une seconde, la LED s'éteint. Afin d'ajouter cette durée, nous utilisons la fonction temps.sommeil (1). Pour ce faire, vous devrez importer la bibliothèque de temps en haut de votre code.

Une fois que vous avez activé un bouton, vous pouvez ajouter trois autres boutons, un pour chaque LED. Votre code devrait ressembler à ceci:

import random 
import time
import RPi.GPIO as GPIO
GPIO.setmode (GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
yellow = 22
green = 24
blue = 26
GPIO.setup(red, GPIO.OUT)
GPIO.setup(yellow, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(38, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
game = True 
while game:
 redButtonState = GPIO.input(32)
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)
 
 yellowButtonState = GPIO.input(36)
 if yellowButtonState == 0: 
 GPIO.output(yellow, GPIO.HIGH)
 time.sleep(1) 
 GPIO.output(yellow, GPIO.LOW)
 greenButtonState = GPIO.input(38)
 if greenButtonState == 0:
 GPIO.output(green, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(green, GPIO.LOW)
 blueButtonState = GPIO.input(40)
 if blueButtonState == 0:
 GPIO.output(blue, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(blue, GPIO.LOW)

Votre tableau d'expérimentation doit ressembler à cette illustration:

Un guide du débutant pour utiliser un Raspberry Pi avec une maquette pour créer un jeu Simon - Tutoriels Raspberry Pi

Tous les appareils électroniques sont maintenant prêts. Si vous rencontrez des problèmes, vérifiez votre code pour toute erreur. N'oubliez pas que vous pouvez télécharger le code complet sur Pastebin Si vous êtes coincé!

Créez le jeu

Ce projet a déjà couvert toutes les bases que vous devez savoir pour démarrer avec une maquette. Mais transformer ces compétences en jeu mettra vraiment en valeur ce que vous pouvez faire!

Dans Simon, le joueur voit une série de lumières clignoter et doit se souvenir du motif. Cela commence facilement avec une seule lumière. Chaque niveau ajoute une lumière aléatoire au motif pour rendre le jeu plus difficile.

Créer le motif

Cette étape est assez simple. Une matrice contiendra notre motif lumineux (modèle). Une deuxième matrice stockera les broches GPIO pour nos lampes (lumières). À chaque itération du jeu, une nouvelle lumière aléatoire sera ajoutée à la fin du Pattern Set. Nous utiliserons la fonction aléatoire.randent() Pour choisir un nombre entre 0 et 3, soit 4 LED.

pattern = []
lights = [red, yellow, green, blue]
while game:
 pattern.append(random.randint(0,3))

Ensuite, nous devons allumer les lumières pour montrer le motif.

while game:
 pattern.append(random.randint(0,3))
 
 for x in pattern:
 GPIO.output(lights[x], GPIO.HIGH)
 time.sleep(1)
 GPIO.output(lights[x], GPIO.LOW)
 time.sleep(0.5)

Il est important de s'arrêter entre deux feux. Permet de voir facilement si la même lumière est utilisée consécutivement dans le motif.

Obtenez les commentaires des joueurs

Ensuite, le jeu doit attendre que le joueur devine la disposition des lumières. Le logiciel doit vérifier chaque lumière du motif et attendre que le joueur appuie sur le bouton. Cela nécessite des itérations échelonnées:

for x in pattern:
 
 waitingForInput = True
 
 while waitingForInput:
 redButtonState = GPIO.input(32)
 yellowButtonState = GPIO.input(36)
 greenButtonState = GPIO.input(38)
 blueButtonState = GPIO.input(40)
 
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)
 
 if yellowButtonState == 0:
 GPIO.output(yellow, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(yellow, GPIO.LOW)
 
 if greenButtonState == 0:
 GPIO.output(green, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(green, GPIO.LOW)
 
 if blueButtonState == 0:
 GPIO.output(blue, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(blue, GPIO.LOW)

La plupart du code ci-dessus réutilise le code que nous avons écrit pour le test des boutons.

Vérifier l'entrée du joueur

De là, il est très facile de vérifier si un joueur a entré le bon modèle. Chaque fois qu'il appuie sur un bouton, le jeu peut vérifier si c'est le bon bouton. Pour ce faire, ajoutez une phrase if Autres par entrée de bouton:

if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 waitingForInput = False
 if x != 0:
 game = False
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)

variable x Que répéter en Il a le numéro de lumière suivant. La LED rouge est à la première position, ou le chiffre 0. Si le joueur appuie sur le bouton LED rouge alors que nous avons 0 dans notre pattern, il a raison! Sinon, il perd dans le match. Créera la variable jeu sur non Pour arrêter la boucle de jeu et terminer le programme.

Toutes nos félicitations! J'ai créé un jeu à partir de zéro!

La création d'un jeu ajoute plus de code à ce projet que de simples voyants et boutons. Travailler sur un projet fini que vous pouvez montrer à vos amis et à votre famille peut vous aider à rester motivé.

Ce jeu est assez simple. Mettez-vous au défi d'améliorer la conception de base. Les lumières pourraient éventuellement clignoter si un joueur perdait. Vous voudrez peut-être vous mettre au défi d'ajouter des sons au jeu. Votre imagination est la seule limite!

Eh bien, votre imagination et les appareils que vous devez utiliser. Maintenant vous pouvez voir Meilleurs projets pour créer une télévision intelligente avec Raspberry Pi

Aller au bouton supérieur