Table des matières:
- Étape 1: Nomenclature
- Étape 2: Schéma et Cicruit
- Étape 3: Le code
- Étape 4: Correction des valeurs
- Étape 5: Projet après la critique et l'examen
- Étape 6: Après quelques travaux de soudure
- Étape 7: La minute de vérité
- Étape 8: La fin
Vidéo: Clavier à une broche 4 × 4 : 10 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Chaque fois que je vois un clavier, il est livré avec beaucoup de broches, c'est un gros gaspillage de vos broches Arduino, alors pouvons-nous faire fonctionner un clavier avec une et une seule broche ?. La réponse est ici.
Étape 1: Nomenclature
Matériel:
01 Arduino UNO
02 Planches à pain
01 LCD avec I2C
16 boutons poussoirs
04 résistances 1,5 kΩ
04 résistances 620 Ω
04 résistances 220 Ω
08 résistances 100 Ω
01 résistance 1 kΩ
07 Cavaliers
Logiciel:
Arduino IDE installé sur votre PC
Étape 2: Schéma et Cicruit
L'idée est que nous avons 4*4 matrices de boutons-poussoirs connectés verticalement à la terre par le fil droit et horizontalement par l'autre fil (le fil du bouton) et des résistances de 1,5 kΩ, 620Ω, 220Ω et 100Ω, les extrémités de les 4 rangées sont reliées par quatre résistances de 100Ω comme indiqué sur le schéma.
Chaque fois que vous appuyez sur un bouton, vous fermez le circuit et le courant passe par un chemin différent et une chaîne de résistances différente, c'est pourquoi la broche A0 reçoit une lecture analogique différente pour chaque bouton-poussoir. Tout ce dont vous avez besoin maintenant, c'est de coder.
Étape 3: Le code
#comprendre
#comprendre
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int Bouton = A0;
valeur de lecture int;
void setup()
{
Serial.begin(9600);
lcd.begin();
pinMode(Bouton, INPUT);
LCD rétro-éclairage();
lcd.print("Bonjour tout le monde");
retard (2000);
lcd.clear();
lcd.print("Clavier à une broche 4*4");
retard (2000); }
boucle vide()
{
readvalue = analogRead(Button);
Serial.println(readvalue);
if (readvalue==852){lcd.clear();lcd.print("A");}
else{ if (readvalue==763){lcd.clear();lcd.print("B");}
else{ if (readvalue==685){lcd.clear();lcd.print("C");}
else{ if (readvalue==965){lcd.clear();lcd.print("D");}
else{ if (readvalue==565){lcd.clear();lcd.print("9");}
else{ if (readvalue==614){lcd.clear();lcd.print("6");}
else{ if (readvalue==360){lcd.clear();lcd.print("3");}
else{ if (readvalue==335){lcd.clear();lcd.print("#");}
else{ if (readvalue==396){lcd.clear();lcd.print("8");}
else{ if (readvalue==349){lcd.clear();lcd.print("5");}
else{ if (readvalue==235){lcd.clear();lcd.print("2");}
else{ if (readvalue==279){lcd.clear();lcd.print("0");}
else{ if (readvalue==452){lcd.clear();lcd.print("7");}
else{ if (readvalue==271){lcd.clear();lcd.print("4");}
else{ if (readvalue==170){lcd.clear();lcd.print("1");}
else{ if (readvalue==92){lcd.clear();lcd.print("*");}else{}}}}}}}}}}}}}}}} }
Étape 4: Correction des valeurs
Lorsque vous ouvrez le moniteur série, il affichera une valeur de 1023, si vous appuyez sur un bouton, cela vous donnera une autre lecture, vous devez prendre ces valeurs et apporter des modifications au code.
Étape 5: Projet après la critique et l'examen
Il ne fait aucun doute que nous sommes tous là pour apprendre et partager nos connaissances, grâce à quelques commentaires laissés par certaines personnes de la communauté qui m'ont été très utiles, j'ai décidé d'apporter quelques ajustements et améliorations à mon projet:
Le matériel:
J'ai décidé de souder tous les composants dans un PCB pour éviter le problème de mauvaise connexion dans les maquettes.
Le code:
Un ami m'a conseillé d'utiliser un logiciel anti-rebond et c'est juste une boucle (boucle "for" par exemple) pour que le programme prenne du temps pour choisir une lecture cela signifie qu'il fait beaucoup de lectures (500 dans mon exemple) mais prend seulement le dernier.
for (i=1; i<= 500; i++) { // ne prend que la 500ème lecture analogique
value = analogRead(Button);} // cela aide à prendre du temps et à éviter les mauvaises lectures
Un autre ami grâce à lui m'a conseillé de comparer "readvalue" avec une plage de valeurs pas une car "readvalue" prend beaucoup de valeurs pour un même bouton poussoir. Le "A" par exemple donne une lecture de: 849, 850, 851 852, 853, 854, 855 donc c'est une plage de 7 valeurs: un seuil (852) et 3 valeurs gauche et droite. ce que nous devons faire ici est de comparer la valeur absolue de la différence entre "readvalue" et "852" à "3".
if(abs(readvalue-852)<=8){lcd.clear();lcd.print("A");}
Étape 6: Après quelques travaux de soudure
Étape 7: La minute de vérité
Comme vous pouvez le voir, le programme confond parfois les boutons mais cela fonctionne toujours, en théorie, il n'y a pas de problème avec le circuit mais le code a besoin de plus de calibrage.
Étape 8: La fin
J'espère que vous aimez ce projet et que vous essayez de le faire, peut-être que vous ferez mieux que moi.
Demandez-moi si vous avez des questions, laissez des commentaires et n'oubliez pas de voter pour moi si vous aimez ça.
Conseillé:
Connecteur ICSP pour Arduino Nano sans en-tête de broche soudée mais broche Pogo : 7 étapes
Connecteur ICSP pour Arduino Nano sans en-tête de broche soudée mais Pogo Pin: Créez un connecteur ICSP pour Arduino Nano sans en-tête de broche soudée sur la carte mais Pogo Pin.Parts3 × 2 Pin Socket x1 - APitch 2.54mm Dupont Line Wire Connecteur à broche femelle Bornes x6 - BP75-E2 (tête conique 1,3 mm) Sonde de test à ressort Pogo Pin
Comment lire plusieurs valeurs analogiques à l'aide d'une seule broche analogique : 6 étapes (avec images)
Comment lire plusieurs valeurs analogiques à l'aide d'une seule broche analogique : Dans ce didacticiel, je vais vous montrer comment lire plusieurs valeurs analogiques à l'aide d'une seule broche d'entrée analogique
Guide d'utilisation du clavier à une broche Raspberry Pi: 9 étapes
Guide d'utilisation du clavier à une broche Raspberry Pi : CLAUSE DE NON-RESPONSABILITÉ : CECI EST UN GUIDE D'UTILISATION POUR UN PRODUIT SOURCE OUVERTE : LE CLAVIER À UNE PIN. CECI N'EST PAS UN PROJET DE BRICOLAGE. SI VOUS VOULEZ FAIRE LES TABLEAUX VOUS-MÊME, LES FICHIERS EAGLE SE TROUVENT À LA FIN DU TUTORIEL. Qu'est-ce que le clavier à une broche ? Clavier à une broche
Plus de 100 commutateurs dans une seule broche d'Arduino : 6 étapes (avec images)
Plus de 100 commutateurs dans une seule broche d'Arduino : IntroductionAvez-vous manqué de broches d'entrée ? Ne vous inquiétez pas, voici une solution sans aucun registre à décalage. Dans cette vidéo, nous allons apprendre à connecter plus de 100 commutateurs à une seule broche d'Arduino
Sélecteur de réglage DIP à l'aide d'une broche : 4 étapes
DIP Tune Selector Using 1 Pin: Il y a quelque temps, j'ai travaillé sur une "boîte à musique" projet qui devait choisir entre jusqu'à 10 extraits de morceaux différents. Un choix naturel pour choisir une mélodie spécifique était un commutateur DIP à 4 broches puisque 4 commutateurs fournissent 24 = 16 réglages différents. H