Quiz de contrôleur de jeu à l’aide des « Avertisseurs de lumières et de sons » et Arduino (4 / 5 étapes)

Étape 4: Arduino programme

Vue d’ensemble

Si vous n’êtes pas familier avec la programmation de l’Arduino, prendre un certain temps avant de commencer à apprendre les rudiments de la programmation de l’Arduino. L’Arduino Uno possède un port USB pratique qui fournit une connexion à l’ordinateur et aussi les pouvoirs sur l’Arduino d’alimentation USB. Vous devez savoir comment programmer l’Arduino et télécharger des programmes à lui afin que vous pouvez télécharger le programme avec ces instructions dans l’Arduino. Ou... vous pouvez également créer vos propres variations. Il est l’un des aspects importants de ce projet, que les possibilités sont illimitées !

Le site web de l’Arduino (http://arduino.cc/) a des environnements de programmation téléchargeables et de nombreuses ressources pour obtenir rapidement vous mettre au diapason sur la programmation de l’Arduino.

OK, maintenant que vous êtes familiarisé avec l’Arduino Uno et pouvez charger un programme à elle, nous irons sur l’exploitation de la version 1.1 du programme fourni avec ces instructions.
Fonctionnement de base

Le comportement que nous voulons réaliser à partir de la boîte de commande est la suivante :

Après la marche, les boutons attendent d’être pressé.
La première touche enfoncée est le « gagnant » et les lumières et sons sur ce bouton sont activées. Étant donné que le bouton s’éteint après 2 secondes environ, le contrôleur attendra pendant 2,5 secondes et ensuite elle s’activera les lumières uniquement sur le bouton, mais pas le son. Ceci garde visible le bouton qui a été enfoncé tout d’abord, mais ne conserve pas le bruit niveau vers le haut, qui deviendrait ennuyeux.
Autres boutons peuvent être pressés après le premier bouton (c’est ce qui se passera normalement) et l’ordre dans lequel les boutons sont pressés est détecté par le contrôleur.
Les LED sur le boîtier de commande sont allumés comme suit, en montrant l’ordre dans lequel les touches ont été enfoncées :
1ère place - le voyant est allumé
2e place - la LED clignote rapidement
3e place - la LED si clignote lentement
4e place - la LED est éteinte
En appuyant sur le bouton reset sera désactiver toutes les LED sur le boîtier de commande et cesser de conduire la ligne « activer » à la touche gagnante. Cela entraînera tous les boutons pour être silencieux et ont leurs lumières hors tension après que la touche gagnante a complété la dernière 2. 5 s du cycle.
Si le bouton de réinitialisation n’est pas enfoncé, 60 secondes après la touche « gagnant », le système se réinitialise automatiquement lui-même. Bien sûr, vous pouvez ajuster la deuxième valeur de timeout 60 dans le code à autre chose si vous le souhaitez.
Nous avons mis un « Easter Egg » dans le code comme quelque chose d’amusant pour les gens d’essayer de trouver. Nous allons le laisser à vous de le trouver et de modifier le programme pour l’une de vos propres « Easter Eggs » que vous pourriez penser.

Principe de fonctionnement

Nous irons sur quelques-unes des principales approches et techniques dans le programme.
Du scrutin vs retard

Beaucoup de programmes exemple Arduino utilisera le delay(n) ; instruction pour atteindre LED clignotante. Étant donné que nous voulons non seulement capture quel bouton a été activé en 1er, mais aussi les boutons après cela, l’approche de « retard » ne fonctionnera pas pour nous. Me demande si le 1er bouton a été activé et nous étions dans une boucle de conduire la LED avec une temporisation de 500 ms (1/2 seconde). 1/2 seconde c’est LONG et il aurait pu être deux ou même trois touches enfoncées pendant le temps de « retard » et nous aurions aucun moyen de savoir à ce sujet ! Plusieurs choses peuvent se produire, quand nous lisons les boutons, tous les trois sont pressés, ou peut-être un est pressé parce que l’autre bouton est pressé et relâché déjà ! Cela rendrait les joueurs très satisfait de notre jeu.

Donc, nous ne pouvons pas utiliser la fonction « delay ». Au lieu de cela on programmera la logique « void loop() » dans une méthode « polling ». Cela signifie que nous allons essayer de miniminze tout retard dans notre code et garder une boucle maintes et maintes fois fondamentalement à la vérification de l’état des boutons. Nous verrons aussi si il est temps pour nous de changer le statut d’un LED ou un bouton. En un moment de la mise en boucle dans V1.1, nous avons mesuré le temps moyen passer dans la boucle à environ 0.1ms ou 100 microsecondes. Qui semble être une boucle assez rapide et réduit le risque de multiples touches qui passe dans une boucle simple.

Mais, si la boucle est juste vérifier pour voir si une LED doit être éteint ou sur, ce que nous dit ce que nous sommes censés pour faire sur toute ligne donnée ?
Profiles et Machine d’état LED

Pour gérer les boutons et voyants, nous créons un « tableau de séquence État. » Dans le tableau, nous définissons un profil. Un exemple de profil est "Clignoter les lumières rapidement", ou « Allumer la lumière. » Pour chaque profil, il y a une séquence d’États (ou pas). Par exemple, tableau int [] LED_SEQ, nous définissons un profil pour les lumières à clignoter rapidement. Ce profil comporte les définitions d’État suivantes :

HAUT, 250, 1 / * Profil 2 (2e place) commencer, étape 0 - « Clignote rapidement » * /
LOW, 250, 0, / * profil 2, étape 1 * /
0, 0, 0,
0, 0, 0,
0, 0, 0,
0, 0, 0,
0, 0, 0,
0, 0, 0, / * fin du profil 2, étape 7 * /

Si un constitué de profil de définitions d’état disposant de 3 valeurs. La première valeur est l’un des trois choix, HIGH, LOW ou -1.

HAUT - quand entrer dans cet État, conduire la sortie (vers la LED ou bouton) à vif.
FAIBLE - en allant dans cet État, la sortie de route à faible.
-1 - lorsque vous allez dans cet État, ne faites pas n’importe quel changement à la sortie.

La deuxième valeur est la longueur de temps (en millisecondes) que cet Etat devrait être en vigueur avant de passer à l’état suivant. Profil 2 dans le fragment de code ci-dessus, le dit pour maintenir l’État 1 à 250ms (ou 1/4 seconde) et aussi maintenir l’état 2 à 250ms.

La troisième valeur est l’État ou la « prochaine étape ». À l’étape 2 le profil 0, la prochaine étape est étape 1. La prochaine étape après que étape 1 est 0. Ainsi, vous pouvez voir que cette séquence des États ou des marches est en boucle. Etape 0 à l’étape 1 à l’étape 0 et ainsi de suite.

Définition d’un « tableau de séquence État » nous permet de changer facilement le comportement des boutons et voyants de juste changer le « programme » dans le tableau de séquence de phase plutôt que de modifier le code C. Par exemple, nous avons expérimenté avec les lumières se comporter de cette façon :

Première place - clignoter une seule fois et attendre 1 seconde.
Deuxième place - clignote deux fois et attendre 1 seconde.
Troisième place - clignotent trois fois, puis attendre 1 seconde.
Quatrième place - clignotent quatre fois et attendre 1 seconde.

À tester cette méthode avec quelques personnes qu’ils ont aimé un "solide sur", "clignote rapidement," "clignote lentement" et « off » que l’indication de la 1re à la 4e place respectivement.

Notez que nous avons apporté ces modifications dans le comportement de la lumière en changeant uniquement les profils dans array LED_SEQ et nous n’avions pas de changer le programme C tout !

Alors maintenant que nous voyons comment l’État (ou étapes) sont définis, comment nous garder trace de quel état les LED de couleurs différentes sont en ?
État de séquence de LED

Le programme assure le suivi des où chaque couleur LED est dans le « tableau de séquence d’État » (int LED_SEQ [] tableau avec trois variables :

Première « profil l’indice » - il s’agit d’un index dans [LED_SEQ] pour le profil (ou un ensemble d’étapes) en cours d’exécution. L’index commence à zéro.
Deuxième le « indice d’étape » - il s’agit d’un index de l’étape dans le profil. L’index commence à zéro.
Troisième et dernière, l’entier long qui contient le temps où a commencé l’étape. Cette valeur est définie à la fois qu'une étape a été dévisagée de la builin funtion millis().

Ces valeurs sont tenues dans l’array lLSS pour chaque couleur. Donc, il y a 12 entrées. Pour chacune des quatre couleurs, il y a les variables de séquence de 3 état ci-dessus. Avec quatre couleurs et trois entrées pour chaque couleur, 4 x 3 = 12.

Donc pour chaque « boucle d’interrogation » dans notre code, la boucle de traitement de LED état machine effectue les opérations suivantes :

Pour chaque couleur (0 à 3)
Recherche le profil actuel.
Lève les yeux l’étape en cours
Heure de début regarde vers le haut de l’étape en cours.
Ajoute l’étape durée à l’heure de début d’étape. Si l’heure est inférieure à la « durée de l’étape + heure de début d’étape", alors ne fais rien. Si l’heure actuelle est supérieure à la "durée de l’étape + heure de début d’étape", puis recherchez le numéro de l’étape suivant. Effectuez l’action de la prochaine étape et mise à jour de l’étape en cours «, » "profil actuel" et « heure de début d’étape » index.

Séquençage de LED

Donc, avec cette technique du programme, nous pouvons changer les États LED de manières complexes et toujours surveiller les événements de presse bouton en temps opportun. En outre, il est facile de changer la façon dont les voyants se comportent sans avoir à changer la logique du code C. Il faut juste changer les profils et les étapes décrites dans le tableau [] de LED-SEQ.

En fait, c’est comment nous avons programmé notre comportement « Easter Egg ». Pouvez vous le trouver ? Vous voulez mettre dans votre propre comportement « Easter Egg ». Allez-y et faites-le ! Le travail n’est pas fini jusqu'à ce que le « Easter Egg » est fait !
Profiles et Machine d’État du bouton

Le processus permettant de manipuler le comportement de bouton est exactement la même que celle décrite pour les LEDs ci-dessus. La variable d’état de bouton"contenant les"profils"et des"étapes"ou des"séquences"est le tableau de [] BTN_SEQ int.

Pareillement, l’actuel profle et étape pour chaque couleur est maintenue dans le tableau [] long lb.

La discussion pour les LEDs puis s’applique aux boutons avec la substitution des variables bouton ci-dessus.
Déroulement du programme global

Les différentes variables sont déclarées et les noms de variables pour l’affectation des broches d’e/s Arduino sont déclarés. Voir l’appendice, le code ou le schéma pour les broches de l’Arduino utilisé.

La boucle d’interrogation puis comprend les étapes générales suivantes :

Vérifier le bouton enfoncer et enregistrer l’ordre.
Gérer l’état de séquence de touche pour chaque touche de couleur.
Gérer l’état de séquence de LED pour chaque couleur LED
Vérifier le bouton Reset (et puis réinitialiser le tableau de l’état de séquence bouton/voyant de profil 0, ou « off »)
Vérifiez pour des conditions particulières de la touche Reset (c'est-à-dire qui s’est tenue pour > millisecondes TEST_MODE, puis entrer dans un profil pour le mode « Test de lumières ».

Le traitement de cas spécial des boutons pour gérer indépendamment les lumières et les sons avec la ligne qu’un signal est décrit plus en détail dans la section sur les Modifications de bouton.

Voir l’annexe pour obtenir la liste de programme complet.
Extensions

Nous avons manqué quelque chose que vous pensez que serait vraiment bien ? Par exemple, peut-être il pourrait y avoir un mode de jeu « Wheel of Fortune » aussi, où une couleur est sélectionnée au hasard et donnée une quantité prédéterminée de temps pour répondre.

Ou d’inventer votre propre nouveau mode de jeu.

C’est la beauté d’un microcontrôleur implemting la logique. Simplement créer votre propre programme et modifier son comportement exactement comme vous le souhaitez à.

Laissez votre imagination course sauvage et heureuse Arduino de programmation !

La source des émissions peut être téléchargée à www.projectnotions.com.

Articles Liés

Nous allons faire un contrôleur de jeu !

Nous allons faire un contrôleur de jeu !

J'aime jeux de vol, mais il se sent comme il n'y a jamais assez de boutons sur mon joystick.Cette instructable vous montrera comment construire votre propre panneau de commutateur en aucun temps.Il fonctionnera avec n'importe quel jeu et ordinateur q
Personnalisés de Crazy Taxi contrôleur de jeu vidéo avec Makey Makey

Personnalisés de Crazy Taxi contrôleur de jeu vidéo avec Makey Makey

Ce que le diable est un Makey Makey ?Avez-vous jamais voulu changer la façon dont les commandes fonctionnent sur un logiciel particulier ou un jeu ? Vous avez toujours voulu créer une amusante invention électronique sans avoir besoin d'être ingénieur
Faire un contrôleur de jeu USB

Faire un contrôleur de jeu USB

Ici à NextFab, nous avons conçu une fonctionnelle complète, contrôleur de jeu USB pour Philly Tech Week. Ce projet sera particulièrement délicat sans certains équipements électroniques plus grave ou un makerspace local avec les outils appropriés, mai
Contrôleur de jeu de serpent géant

Contrôleur de jeu de serpent géant

Le Makerspace de Milwaukee a été sélectionné pour mai 2015 Build nuit avec Raspberry Pi et Adafruit. Le Raspberry Pi 2 modèle B est plus rapide que la 1ère génération. Avec l'augmentation de la vitesse et le Chapeau de Perma-Proto Adafruit pour Pi Mi
Ajouter contrôleur de jeu USB pour Arduino Leonardo/Micro

Ajouter contrôleur de jeu USB pour Arduino Leonardo/Micro

Remarque importante : Cet article est pour Arduino IDE version 1.6.5 (ou au-dessous). Pour ajouter un contrôleur de jeu USB un Arduino Leonardo ou le Micro à l'aide de l'IDE Arduino version 1.6.6 (ou supérieur) Voir l'Instructable suivant : Arduino L
Contrôleur de jeu USB Biofeedback

Contrôleur de jeu USB Biofeedback

en s'appuyant sur notre dernier tutoriel, qui vous a appris comment construire un capteur de muscle, nous avons décidé de vous donner un projet qui met vraiment en valeur la puissance de nos capteurs musculaires (EMG). Advancer "Contrôleur de jeu de
CONTRÔLEUR de jeu USB pour PC

CONTRÔLEUR de jeu USB pour PC

UN CONTRÔLEUR DE JEU POUR N'IMPORTE QUEL GAME(ALMOST)Étape 1: INTRODUCTIONDans ce instructable je vais vous montrer comment vous pouvez faire un contrôleur de jeu U.S.B en utilisant un clavier et quelques autres composantsÉtape 2: Matériaux requis 1.
Faits maison pc contrôleur de jeu jeu de course

Faits maison pc contrôleur de jeu jeu de course

il s'agit de mon contrôleur de jeu de course pc fait maison que j'ai construit il y a un an. et je l'ai conçu en fonction de mes besoins lors de courses. Il a du volant avec volant improvisé, déplacements de mécanisme et de la pagaie retour Centre, H
Création d’Animation et jeux : chapitre 2 contrôleurs de jeu

Création d’Animation et jeux : chapitre 2 contrôleurs de jeu

Bienvenue à la deuxième d'une série en plusieurs partie :Création d'Animation et jeux : contrôleurs de jeu chapitre 2Cette série plongerai dans l'utilisation de systèmes d'hélices microcontrôleur basé pour créer vos propres graphiques, animation et j
AUDIO à lumière MODULANTE contrôleur de jeu crémaillère

AUDIO à lumière MODULANTE contrôleur de jeu crémaillère

Ce Instrunctable est pour vous montrer comment faire un audio à la lumière modulant rack contrôleur de jeu. Ce système d'éclairage peut obtenir accroché à une console XBOX 360 (comme le mien) Playstation 3, Zune, Ipod... peu importe.Pièces :1 12 pouc
Contrôleurs de jeu

Contrôleurs de jeu

cette instructable va vous apprendre comment construire des contrôleurs de jeu pour jeux personnels, SIDA éducation ou tout ce que vous voulez.Ce système utilise 4 contrôleurs qui envoient des signaux à un pivot central, qui détient un Arduino.Il a é
Contrôleur de jeu LittleBits

Contrôleur de jeu LittleBits

Cette instructable vous montrera comment faire un contrôleur de jeu avec littlebits.Niveau de Difficulté: très facile (peut être fait en moins de 30 minutes)Le contrôleur est un un, juste un bouton très simple et nous allons faire fonctionner avec un
Le contrôleur de jeu maniable Makey-Makey

Le contrôleur de jeu maniable Makey-Makey

Avec réalité virtuelle gagne progressivement les motifs, mouvement des mains réelles qui interagissent avec l'environnement de cette réalité définira quelques awesomeness.Rencontrez nos Makey-Makey Handy Game Controller.Nous cheminons à travers les é
Contrôleur de jeu de l’argile polymère

Contrôleur de jeu de l’argile polymère

Dans ce projet, nous allons faire un contrôleur de jeu rétro fonctionnel hors pièces récupérés dans un vieux clavier et argile polymère. Let's get à elle !www.evankale.blogspot.caÉtape 1: Regardez la vidéo !Voici 7 minutes vidéo avec sous-titrage cod