Table des matières:
- Étape 1: Le circuit
- Étape 2: Preuve - Excel
- Étape 3: Programmation Arduino
- Étape 4: Circuits TinkerCAD
- Étape 5: « Adieu, et merci pour tout le poisson. » (réf.1)
- Étape 6: Références
Vidéo: Utilisez 1 entrée analogique pour 6 boutons pour Arduino : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Je me suis souvent demandé comment obtenir plus d'entrées numériques pour mon Arduino. Il m'est récemment venu à l'esprit que je devrais pouvoir utiliser l'une des entrées analogiques pour introduire plusieurs entrées numériques. J'ai fait une recherche rapide et j'ai trouvé où les gens pouvaient le faire, mais cela ne permettait d'appuyer qu'un seul bouton à la fois. Je veux pouvoir avoir n'importe quelle combinaison de boutons à appuyer SIMULTANÉMENT. Alors, avec l'aide de TINKERCAD CIRCUITS, j'ai décidé de faire en sorte que cela se produise.
Pourquoi voudrais-je appuyer simultanément sur les boutons ? Comme illustré dans la conception des circuits TinkerCad, il pourrait être utilisé pour les entrées de commutateur DIP pour la sélection de différents modes dans le programme.
Le circuit que j'ai imaginé utilise la source 5V disponible à partir de l'Arduino et utilise 7 résistances et 6 boutons ou commutateurs.
Étape 1: Le circuit
Les Arduino ont des entrées analogiques qui acceptent une entrée de 0V à 5V. Cette entrée a une résolution de 10 bits, ce qui signifie que le signal est divisé en 2^10 segments, soit 1024 comptes. Sur cette base, le maximum que nous pourrions jamais entrer dans une entrée analogique tout en permettant des pressions simultanées serait de 10 boutons pour 1 entrée analogique. Mais, ce n'est pas un monde parfait. Il y a une résistance dans les conducteurs, du bruit provenant de sources extérieures et une puissance imparfaite. Donc, pour me donner beaucoup de flexibilité, j'ai prévu de le concevoir pour 6 boutons. Cela était en partie influencé par le fait que TinkerCAD Circuits avait un objet DIP Switch à 6 commutateurs, ce qui rendait les tests faciles.
La première étape de ma conception était de m'assurer que chaque bouton, lorsqu'il est pressé individuellement, fournirait une tension unique. Cela excluait que toutes les résistances aient la même valeur. L'étape suivante était que les valeurs de résistance, lorsqu'elles étaient ajoutées en parallèle, ne pouvaient pas avoir la même résistance que n'importe quelle valeur de résistance unique. Lorsque les résistances sont connectées en parallèle, la résistance résultante peut être calculée par Rx=1/[(1/R1)+(1/R2)]. Donc, si R1=2000 et R2=1000, Rx=667. J'ai supposé qu'en doublant la taille de chaque résistance, je ne verrais pas la même résistance pour aucune des combinaisons.
Donc, mon circuit à ce stade devait avoir 6 commutateurs, chacun avec sa propre résistance. Mais, il y a une résistance supplémentaire nécessaire pour compléter ce circuit.
La dernière résistance a 3 fonctions. Premièrement, il agit comme une résistance Pull-Down. Sans la résistance, lorsqu'aucun bouton n'est enfoncé, le circuit est incomplet. Cela permettrait à la tension à l'entrée analogique de l'Arduino de flotter à n'importe quel potentiel de tension. Une résistance Pull-Down abaisse essentiellement la tension à 0 V. Le deuxième objectif est de limiter le courant de ce circuit. La loi d'Ohm stipule que V = IR, ou Tension = Courant multiplié par la Résistance. Avec une source de tension donnée, plus la résistance est grande signifie que le courant serait plus petit. Ainsi, si un signal de 5 V était appliqué à une résistance de 500 ohms, le courant le plus important que nous pourrions voir serait de 0,01 A ou 10 mA. Le troisième objectif est de fournir la tension du signal. Le courant total traversant la dernière résistance serait: i=5V / Rtotal, où Rtotal = Rlast + {1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Cependant, n'incluez que 1/Rx pour chaque résistance dont le bouton correspondant est enfoncé. À partir du courant total, la tension fournie à l'entrée analogique serait i*Rlast ou i*500.
Étape 2: Preuve - Excel
Le moyen le plus rapide et le plus simple de prouver que j'obtiendrais des résistances uniques et donc des tensions uniques avec ce circuit était d'utiliser les capacités d'Excel.
J'ai configuré toutes les combinaisons possibles d'entrées de commutateur et organisé ces modèles binaires en suivant séquentiellement. Une valeur de "1" indique que le commutateur est activé, un blanc indique qu'il est désactivé. En haut de la feuille de calcul, j'ai mis les valeurs de résistance pour chaque commutateur et pour la résistance pull-down. J'ai ensuite calculé la résistance équivalente pour chacune des combinaisons, sauf lorsque toutes les résistances sont éteintes car ces résistances n'auront pas d'effet sans qu'une source d'alimentation ne l'alimente. Pour faciliter mes calculs afin que je puisse copier et coller dans chaque combinaison, j'ai inclus toutes les combinaisons dans le calcul en multipliant chaque valeur de commutation (0 ou 1) par sa valeur de résistance inversée. Cela éliminait sa résistance du calcul si l'interrupteur était éteint. L'équation résultante est visible dans l'image du tableur, mais Req = Rx+1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). En utilisant Itotal = 5V / Req, nous déterminons le courant total traversant le circuit. C'est le même courant qui traverse la résistance Pull-down et nous fournit la tension à notre entrée analogique. Ceci est calculé comme Vin = Itotal x Rx. En examinant à la fois les données Req et les données Vin, nous pouvons voir que nous avons effectivement des valeurs uniques.
À ce stade, il semble que notre circuit fonctionnera. Maintenant, pour comprendre comment programmer l'Arduino.
Étape 3: Programmation Arduino
Lorsque j'ai commencé à réfléchir à la façon de programmer l'Arduino, j'avais initialement prévu de configurer des plages de tension individuelles pour déterminer si un interrupteur était allumé ou éteint. Mais, alors que je restais au lit une nuit, il m'est venu à l'esprit que je devrais être capable de trouver une équation pour le faire. Comment? EXCELLER. Excel a la capacité de calculer des équations pour ajuster au mieux les données dans un graphique. Pour ce faire, je veux une équation de la valeur entière des commutateurs (binaire) par rapport à l'entrée de tension correspondant à cette valeur. Dans mon classeur Excel, j'ai mis la valeur entière sur le côté gauche de la feuille de calcul. Maintenant, pour déterminer mon équation.
Voici un tutoriel rapide sur la façon de déterminer l'équation d'une ligne dans Excel.
1) Sélectionnez une cellule qui ne contient aucune donnée. Si vous avez sélectionné une cellule contenant des données, Excel essaiera de deviner la tendance que vous souhaitez suivre. Cela rend beaucoup plus difficile la définition d'une tendance, car Excel prédit rarement correctement.
2) Sélectionnez l'onglet "Insertion" et sélectionnez un graphique "Scatter".
3) Faites un clic droit dans la zone du graphique et cliquez sur "Sélectionner les données…". Cela fera apparaître la fenêtre "Sélectionner la source de données". Sélectionnez le bouton Ajouter pour continuer à sélectionner les données.
4) Donnez-lui un nom de série (facultatif). Sélectionnez la plage pour l'axe X en cliquant sur la flèche vers le haut, puis en sélectionnant les données de tension. Sélectionnez la plage pour l'axe Y en cliquant sur la flèche vers le haut, puis en sélectionnant les données entières (0-63).
5) Cliquez avec le bouton droit sur les points de données et sélectionnez "Ajouter une ligne de tendance…" Dans la fenêtre "Formater la ligne de tendance", sélectionnez le bouton Polynomial. En regardant la tendance, nous voyons que l'ordre de 2 ne correspond pas tout à fait. J'ai sélectionné un ordre de 3 et j'ai estimé que c'était beaucoup plus précis. Cochez la case "Afficher l'équation sur le graphique". L'équation finale est maintenant affichée sur le graphique.
6) Terminé.
D'ACCORD. Retour au programme Arduino. Maintenant que nous avons l'équation, la programmation de l'Arduino est facile. L'entier qui représente les positions du commutateur est calculé en 1 ligne de code. En utilisant la fonction "bitread", nous pouvons saisir la valeur de chaque bit individuel et ainsi connaître l'état de chaque bouton. (VOIR PHOTOS)
Étape 4: Circuits TinkerCAD
Si vous n'avez pas vérifié TinkerCAD Circuits, faites-le maintenant. ATTENDRE!!!! Terminez la lecture de mon Instructable, puis vérifiez-le. TinkerCAD Circuits facilite le test des circuits Arduino. Il comprend plusieurs objets électriques et Arduinos, vous permettant même de programmer l'Arduino pour le tester.
Pour tester mon circuit, j'ai configuré 6 commutateurs à l'aide d'un pack de commutateurs DIP et les ai liés aux résistances. Pour prouver que la valeur de tension dans ma feuille de calcul Excel était correcte, j'ai affiché un voltmètre à l'entrée de l'Arduino. Tout cela a fonctionné comme prévu.
Pour prouver que la programmation Arduino a fonctionné, j'ai sorti les états des commutateurs sur les LED, en utilisant les sorties numériques de l'Arduino.
J'ai ensuite changé tous les commutateurs pour toutes les combinaisons possibles et je suis fier de dire "ÇA MARCHE" !!!
Étape 5: « Adieu, et merci pour tout le poisson. » (réf.1)
Je n'ai pas encore essayé cela avec de l'équipement réel, car je suis actuellement en voyage pour le travail. Mais, après l'avoir prouvé avec TinkerCAD Circuits, je pense que cela fonctionnera. Le défi est que les valeurs des résistances que j'ai spécifiées ne sont pas toutes des valeurs standard pour les résistances. Pour contourner ce problème, je prévois d'utiliser des potentiomètres et des combinaisons de résistances pour obtenir les valeurs dont j'ai besoin.
Merci d'avoir lu mon instructable. J'espère que cela vous aidera dans vos projets.
Veuillez laisser des commentaires si vous avez tenté de surmonter ce même obstacle et comment vous l'avez résolu. J'aimerais apprendre plus de façons de le faire.
Étape 6: Références
Vous ne pensiez pas que je fournirais un devis sans fournir une référence à sa source, n'est-ce pas ?
réf. 1: Adams, Douglas. A bientôt, et merci pour tout le poisson. (Le 4ème livre de la "trilogie" du Guide de l'auto-stoppeur de la Galaxie)
Conseillé:
Utilisez des boutons-poussoirs sur votre Magicbit [Magicblocks] : 5 étapes
Utilisez des boutons-poussoirs sur votre Magicbit [Magicblocks] : ce tutoriel vous apprendra à utiliser les boutons-poussoirs sur votre Magicbit à l'aide de Magicblocks. Nous utilisons magicbit comme carte de développement dans ce projet basé sur ESP32. Par conséquent, n'importe quelle carte de développement ESP32 peut être utilisée dans ce projet
Jeux à 4 boutons utilisant une seule entrée analogique : 6 étapes (avec photos)
Jeux à 4 boutons utilisant une entrée analogique : cette instructable se concentre sur l'utilisation d'une ligne d'entrée analogique pour plusieurs boutons qui peuvent être détectés indépendamment les uns des autres. Tous les jeux (8 en t
Entrée tactile capacitive ESP32 utilisant des "bouchons à trous métalliques" pour les boutons : 5 étapes (avec photos)
Entrée tactile capacitive ESP32 utilisant des "bouchons à trous métalliques" pour les boutons : alors que je finalisais les décisions de conception pour un prochain projet basé sur le kit ESP32 WiFi 32 nécessitant une entrée à trois boutons, un problème notable était que le kit WiFi 32 ne possède pas un seul bouton-poussoir mécanique, pourtant seul trois boutons mécaniques, f
Circuits GPIO Raspberry Pi : Utilisation d'un capteur analogique LDR sans ADC (convertisseur analogique-numérique) : 4 étapes
Circuits GPIO Raspberry Pi : Utilisation d'un capteur analogique LDR sans ADC (convertisseur analogique-numérique) : Dans nos précédents Instructables, nous vous avons montré comment vous pouvez lier les broches GPIO de votre Raspberry Pi aux LED et aux commutateurs et comment les broches GPIO peuvent être hautes ou Faible. Mais que faire si vous souhaitez utiliser votre Raspberry Pi avec un capteur analogique ? Si nous voulons utiliser un
Entrée analogique IoT - Premiers pas avec l'IoT : 8 étapes
Entrée analogique IoT - Premiers pas avec l'IoT : Comprendre les entrées analogiques est un élément crucial pour comprendre comment les choses qui nous entourent, la plupart sinon tous les capteurs sont des capteurs analogiques (parfois ces capteurs sont convertis en numérique). Contrairement aux entrées numériques qui ne peuvent être qu'activées ou désactivées, l'entrée analogique