Tout a commencé avec un petit jeu des âges sombres appelé «Mario», depuis le moment où je suis un petit gars sautant sur des canards pour sauver ma princesse jusqu'à devenir un beau prince masculin errant en Perse (Prince of Persia) luttant contre les ténèbres pour sauver mon monde, j'ai été un grand fan de jeux vidéo et j'ai grandi en y jouant. Mais ils s'ennuient parfois et je me sens moins impliqué. Aujourd'hui, les consoles de jeu avancées permettent le jeu virtuel et nous aident à ressentir le jeu beaucoup mieux qu'un clavier ou une souris ne peut le faire.
Étant un passionné d'Arduino, je me suis fatigué de jouer au célèbre jeu appelé "Angry Birds" en utilisant le clavier et la souris et j'ai décidé de construire mon propre contrôleur de jeu en utilisant un capteur Flex et un potentiomètre. Lorsque le capteur flexible est tiré, l'oiseau de la catapulte sera également tiré et vous pouvez utiliser le potentiomètre pour définir la direction dans laquelle il doit être lancé. Ensuite, lorsque vous relâchez le capteur flexible, l'oiseau sera lancé. J'ai beaucoup aimé le faire, donc si vous êtes sur le point de construire quelque chose de très similaire, ce tutoriel sera utile. Ce didacticiel sera également utile pour contrôler le curseur de la souris à l'aide du potentiomètre.
Exigences logicielles et matérielles:
Logiciel:
- IDE Arduino
- Traitement IDE
- Jeu Angry Birds sur ordinateur
Matériel:
- Arduino (toute version)
- Potentiomètre
- Capteur Flex
- Résistance 47K ohm
- Connexion des fils
- Planche à pain
Concept derrière:
La carte Arduino lit les valeurs du potentiomètre et du capteur Flex et les transmet à l'ordinateur portable / PC via le port COM USB via la fonction Serial.write () normale. Nous lisons ensuite ces informations en utilisant Processing et contrôlons le curseur de la souris en utilisant la classe Robot en Java qui est prise en charge par le traitement IDE. Nous avons programmé l'IDE de traitement de telle manière que lorsque le capteur Flex est tiré, un clic de souris sera fait et en fonction de combien il est tiré, le pointeur de la souris se déplace dans la direction X. Ensuite, en fonction de la valeur du potentiomètre, nous déplacerons le curseur de la souris dans la direction Y, de cette façon nous pouvons définir la direction dans laquelle l'oiseau doit être lancé.
Schéma:
Le circuit pour jouer à Angry Bird en utilisant le capteur Flex et le potentiomètre est facile.
Nous avons simplement connecté un potentiomètre et un capteur flex aux entrées analogiques (A0, A1) de l'Arduino. La sortie du capteur Flex est également tirée vers le bas à l'aide d'une résistance de rappel de 47K.
Vous pouvez le connecter directement sur une maquette ou les souder à une carte Perf et l'assembler sur un gants ou quelque chose pour le rendre plus créatif. J'ai simplement utilisé une maquette pour faire mes connexions comme indiqué ci-dessous:
Programme Arduino:
Le code Arduino complet est donné à la fin du tutoriel. Quelques lignes importantes sont expliquées ci-dessous.
Nous initialisons le programme pour travailler avec un débit de 9600 bauds et commençons à lire les valeurs du capteur Flex et du potentiomètre. Comme nous le savons, la fonction serial.write () ne peut envoyer qu'un octet de données à la fois. Puisque Un octet fait 8 bits et 2 ^ 8 = 256. Nous pourrons envoyer des valeurs de 0 à 256. Nous devons donc compresser les valeurs de la sortie du capteur Flex et de la Sortie du potentiomètre en 0 à 256.
Pour ce faire, nous utilisons la fonction map () dans Arduino. Toutes les valeurs du capteur flex sont converties de 5 à 100, donc lorsque nous plions le capteur, il incrémentera de 5 et une fois relâché, il reviendra à 5. Pour mentionner les clics de souris, les valeurs 1 et 0 sont utilisées. Lorsque 1 est envoyé, la souris est enfoncée et lorsque 0 est envoyé, la souris est relâchée.
if (FlexValue> = 65 && FlexValue <= 120) // mon capteur flex varie de 65 à 120, vous pourriez être différent {FlexValue = map (FlexValue, 120,65,0,100); // basé sur la flexion, converti en 0 à 100 si (FlexValue> = 5) // 1 et 0 est utilisé pour le clic de souris, donc à partir de 5 {Mclick = true; Serial.write (1); // 1 est envoyé pour faire un clic gauche de la souris Serial.write (FlexValue); // La valeur Flex est la distance pour déplacer la souris dans la direction X} else {Mclick = false; Serial.write (0);}}
De même, les valeurs du potentiomètre sont converties de 101 à 200 avec la fonction map () et sont envoyées au port COM des ordinateurs portables via la fonction Serial.write () comme indiqué ci-dessous.
if (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // Basé à son tour converti en 101 à 201 Serial.write (potValue); // La valeur du pot est la distance pour déplacer la souris dans la direction Y}
Le reste du programme est expliqué à l'aide des commentaires.
Code de traitement:
Processing est une application de développement Open-Source qui peut être facilement téléchargée et utilisée pour développer des projets intéressants à l'aide d'Arduino ou d'autres microcontrôleurs. Nous avons déjà réalisé quelques projets en utilisant Processing et vous pouvez les consulter en cliquant sur les liens ci-dessous.
- Radio FM bricolage utilisant le traitement
- Réalité virtuelle / contrôle gestuel à l'aide d'Arduino
- Salle de chat privée utilisant Arduino.
- Système radar Arduino utilisant l'application de traitement et le capteur à ultrasons
- Détection et suivi des visages en temps réel à l'aide d'Arduino
- Compteur de vitesse DIY utilisant Arduino et traitement
- Jeu de ping-pong utilisant l'accéléromètre Arduino
- Robot bipède utilisant Arduino
- Caméra d'imagerie thermique DIY Arduino
Dans ce projet, nous avons utilisé l'IDE de traitement pour lire les valeurs du port COM et contrôler le pointeur de la souris en fonction des valeurs reçues via le port COM. Le code de traitement complet de ce contrôleur de jeu Angry Bird peut être téléchargé à partir du lien ci-dessous:
- Code de traitement pour ce contrôleur de jeu Angry Bird (clic droit et `` Enregistrer le lien sous '')
Le programme Arduino se trouve à la fin de ce tutoriel. Le code de traitement a été modifié pour s'adapter à notre objectif à partir du code donné par yoggy sur sa page GitHub.
Les données provenant du port COM doivent être lues dans le même débit en bauds que celui dans lequel elles ont été envoyées depuis Arduino. Vérifiez également quel port COM votre Arduino est connecté en utilisant le gestionnaire de périphériques. Mon Arduino était connecté à COM3 et c'était le 0 e port de mon ordinateur et le débit en bauds dans Arduino était de 9600, donc le code est le suivant
port = new Serial (this, Serial.list (), 9600);
Une fois que nous commençons à lire les valeurs, nous le distinguons en le reconnaissant en fonction de sa valeur sur la façon dont nous avons envoyé depuis Arduino. Les valeurs sont à nouveau mappées de 0 à 100 afin que nous puissions contrôler la souris en fonction de cette valeur.
if (port.available ()> 0) {data = port.read (); println (données); // Lire les données du port COM et les enregistrer dans data} if (data> = 101 && data <= 201) // Si la valeur est comprise entre 101 et 201 alors elle doit provenir du potentiomètre {Turn = int (map (data, 101 201 0 100)); // Utilisez cette valeur pour faire tourner le catapullt} if (data> = 5 && data <= 100) // Si la valeur est comprise entre 5 et 100, elle doit provenir du capteur Flex {Pull = int (map (data, 5,100, 0,100));} // Utilisez cette valeur pour tirer la catapulte if (data == 1) click = true; // Utilisez cette valeur pour appuyer sur le bouton de la souris if (data == 0) click = false; // Utilisez cette valeur pour relâcher le bouton de la souris
Une fois que nous avons catégorisé les données, nous pouvons contrôler la souris à l'aide de la classe Robot Java en traitement. La commande robot.mouseMove (crntX-Pull, crntY + Turn); peut être utilisé pour déplacer la souris vers n'importe quelle position souhaitée et les lignes robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); et robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); peut être utilisé pour appuyer ou relâcher le bouton de la souris respectivement.
if (click == false) // quand Flex Sesnor n'est pas tiré {crntX = (int) p.getX (); crntY = (entier) p.getY (); if (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Relâchez le bouton de la souris} if (click == true) // lorsque Flex Sesnor est tiré {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Appuyez sur le bouton de la souris robot.mouseMove (crntX-Pull, crntY + Turn); // Déplacer la souris en fonction de la valeur Flex et POT}}
L'EDI de traitement une fois lancé affichera également une petite boîte de dialogue sur laquelle vous pouvez trouver les valeurs de Pull, Turn et l'état du clic de souris comme indiqué ci-dessous
Ce détail peut être utilisé pour déboguer le programme ou corriger les données requises.
Travail:
Pour faire fonctionner ce projet Angry Bird en utilisant le code fourni, assemblez votre matériel selon le schéma de circuit et téléchargez le code Arduino donné. Notez ensuite à quel port COM votre Arduino est connecté et apportez les modifications nécessaires dans le code de traitement et lancez l'esquisse de traitement.
Maintenant, lancez simplement le jeu des oiseaux en colère et placez votre curseur près de la catapulte et tirez sur le capteur de flexion pour tirer l'oiseau et réglez la direction à l'aide du potentiomètre. Une fois la direction définie, relâchez le capteur Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Votre oiseau sera jeté en l'air et BOOMM !! Sur les piggies. Le travail complet peut être trouvé dans la vidéo ci-dessous.
J'espère que vous avez apprécié le projet et que vous avez pu construire quelque chose de similaire. Si vous avez des doutes, vous pouvez me joindre sur la section commentaires ou poster votre question sur le forum pour des questions techniques.
Maintenant, il est temps de s'écraser dans ces tirelires et de récupérer nos œufs d'oiseaux !!!!