Créer des gestes avec une télécommande IR
Bienvenue dans la programmation de la main NeuroMaker en utilisant la programmation C++ ! Dans ce projet, vous apprendrez les bases de la programmation d'une télécommande IR et vous mettrez au défi de programmer vos propres commandes !
Nombre de personnes
1 à 4 étudiants pour chaque main NeuroMaker disponible
Fournitures nécessaires
- Une main NeuroMaker entièrement construite
- Un ordinateur MacOS, Windows ou Chrome OS
- Éditeur en ligne Arduino avec Arduino Create Agent entièrement installé
- Une télécommande IR incluse dans le kit NeuroMaker Hand
Fichiers de programme nécessaires
- Veuillez consulter la répartition du code dans les instructions ci-dessous
Les préparatifs
- Veuillez vous assurer que la main NeuroMaker dispose de piles fonctionnelles. Des voyants d'alimentation supplémentaires sur la carte d'alimentation de la main doivent s'allumer lorsque l'interrupteur marche/arrêt a été activé. Si vos doigts bougent de manière erratique ou ne bougent pas du tout après avoir téléchargé le code ci-dessous, cela peut signifier que vos piles sont faibles.
- Veuillez vous assurer que l'agent de création Arduino et l'éditeur en ligne Arduino sont répertoriés en toute sécurité sur le pare-feu de votre district. Les instructions pour le personnel informatique sont fournies ici : Guide de référencement sécurisé de l'éditeur Arduino
- Si vous n'avez pas encore installé l'éditeur Arduino, veuillez terminer le projet de configuration de l'environnement de codage C++
- Veuillez vous assurer que la carte de programmation bleue est installée sur votre ensemble électrique NeuroMaker Hand.
Arrière plan
Vous vous souvenez peut-être dès les premières instructions pour construire la main NeuroMaker que nous devions nous assurer qu'une carte « DEMO » noire était installée à l'intérieur de l'assemblage électrique de votre main. C'était la carte que nous avions l'habitude de programmer avec une télécommande infrarouge et chaque doigt de notre main bougeait lorsque nous appuyions sur un bouton de 0 à 9. Une fois que nous avons installé les cartes programmables bleues, tout d'un coup, nos mains ne feraient plus rien si nous appuyions sur les boutons de cette même télécommande. Qu'est-ce qui se passe ici?
À l'intérieur de la carte DEMO noire, il y avait un code préinstallé à l'intérieur de la carte elle-même qui permettait à la main de "savoir" quoi faire lorsque nous appuyions sur les boutons de nos télécommandes. La carte de programmation bleue est intentionnellement vide afin que nous puissions la programmer avec ce que nous voulons. Cela étant dit, pour faire fonctionner notre carte de programmation avec nos télécommandes IR, nous allons devoir comprendre le fonctionnement de ces programmes, puis les ajouter nous-mêmes ! Oui, c'est un peu plus de travail, MAIS en utilisant nos nouvelles connaissances, nous pouvons programmer tout ce que nous voulons avec les boutons de la télécommande pour faire tout ce que notre main NeuroMaker peut faire !
Ci-dessous, vous trouverez un guide d'instructions rapide sur le fonctionnement des capteurs IR, les codes HEX associés à chaque bouton du contrôleur et le même exemple de code que nous pouvons utiliser pour commencer. Nous aimerions vous mettre au défi de penser à tous les gestes ou mouvements que vous pouvez faire pour connecter la télécommande à l'utilisation de vos mains NeuroMaker !
Instructions de projet
Après vous être mis au défi, jetez un œil à la procédure pas à pas du code ci-dessous !
Procédure pas à pas du code à distance IR avec mini défi
// IRremote - Version : 3.7.1 /* * Nous devons inclure cette bibliothèque lorsque nous travaillons avec le capteur/télécommande IR. * Assurez-vous de l'inclure en utilisant l'onglet "Bibliothèques" sur la gauche. * Recherchez IRremote et il devrait apparaître comme une bibliothèque portant le même nom. */ #comprend //permet d'utiliser les servos de la main #include // Ceci est un objet distant IR qui prend la broche IR que nous utilisons comme paramètre (broche sur laquelle le capteur IR est branché). IRrecv IR(A0); résultats decode_results ; // prend le résultat de la télécommande et le stocke // crée 5 objets servo Servo servos[5] ; void setup() { //commence la connexion série à un débit en bauds de 115200 Serial.begin(115200); // met en vedette le récepteur IR IR.enableIRIn(); servos[0].attach(6); servos[1].attach(5); servos[2].attach(4); servos[3].attach(3); servos[4].attach(2); resetDoigt(); } //Oriente tous les doigts vers une position ouverte void resetFinger() { servos[0].write(0); servos[1].write(180); servos[2].write(0); servos[3].write(0); servos[4].write(180); retard(1000); } //Oriente tous les doigts dans une position contractée void grab() { servos[0].write(180); servos[1].write(0); servos[2].write(180); servos[3].write(180); servos[4].write(0); retard(1000); } //Exemple d'une autre façon de saisir un objet. Cet exemple utilise le pouce et l'index pour caler l'objet, //tandis que le majeur, l'annulaire et l'auriculaire serrent l'objet. void alternateGrip() { servos[0].write(0); servos[1].write(180); servos[2].write(180); servos[3].write(180); servos[4].write(0); retard(1000); } void loop() { //boucle à l'infini jusqu'à ce que le destinataire reçoive des données while(IR.decode(&results) == 0) { } //utilise une instruction switch pour passer par différents boutons switch(results.value) { //user appuie sur 0 ; réinitialise le cas de tous les doigts 0xFF6897 : resetFinger(); Pause; //l'utilisateur appuie sur 1 ; oriente les doigts dans un geste de saisie cas 0xFF30CF : grab(); Pause; //l'utilisateur appuie sur 2 ; ouvre le pouce et l'index, contracte tous les autres doigts case 0xFF18E7: alternateGrip(); Pause; } //fait en sorte que le récepteur recherche un autre signal IR.resume(); }