Tabla de contenido:
- Paso 1: Lista de materiales
- Paso 2: Esquema y Cicruit
- Paso 3: el código
- Paso 4: corrección de valores
- Paso 5: Proyecto después de la crítica y revisión
- Paso 6: Después de un poco de trabajo vendido
- Paso 7: El momento de la verdad
- Paso 8: el final
Video: Teclado de un pin 4 × 4: 10 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Cada vez que veo un teclado, viene con muchos pines, es un gran desperdicio de los pines de Arduino, así que ¿podemos ejecutar un teclado con un solo pin?. La respuesta está aquí.
Paso 1: Lista de materiales
Hardware:
01 Arduino UNO
02 tablas de pruebas
01 LCD con I2C
16 pulsadores
04 resistencias 1,5 kΩ
04 resistencias 620 Ω
04 resistencias 220 Ω
08 resistencias 100 Ω
01 resistencia 1 kΩ
07 Cables de puente
Software:
Arduino IDE instalado en su PC
Paso 2: Esquema y Cicruit
La idea es que tenemos una matriz de 4 * 4 botones conectados verticalmente a tierra por el cable derecho y horizontalmente por el otro cable (el cable del botón) y resistencias de 1.5 kΩ, 620Ω, 220Ω y 100Ω, los extremos de las 4 filas están conectadas por cuatro resistencias de 100 Ω como se muestra en el esquema.
Cada vez que presiona un botón, cierra el circuito y la corriente pasa por una ruta diferente y una cadena de resistencias diferente, por eso el pin A0 recibe una lectura analógica diferente para cada botón. Todo lo que necesitas ahora es codificar.
Paso 3: el código
#incluir
#incluir
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int Botón = A0;
int readvalue;
configuración vacía ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (Botón, ENTRADA);
LCD luz de fondo();
lcd.print ("Hola mundo");
retraso (2000);
lcd.clear ();
lcd.print ("Teclado de un pin 4 * 4");
retraso (2000); }
bucle vacío ()
{
readvalue = analogRead (Botón);
Serial.println (valor de lectura);
if (valor de lectura == 852) {lcd.clear (); lcd.print ("A");}
else {if (valor de lectura == 763) {lcd.clear (); lcd.print ("B");}
else {if (valor de lectura == 685) {lcd.clear (); lcd.print ("C");}
else {if (valor de lectura == 965) {lcd.clear (); lcd.print ("D");}
else {if (valor de lectura == 565) {lcd.clear (); lcd.print ("9");}
else {if (valor de lectura == 614) {lcd.clear (); lcd.print ("6");}
else {if (valor de lectura == 360) {lcd.clear (); lcd.print ("3");}
else {if (valor de lectura == 335) {lcd.clear (); lcd.print ("#");}
else {if (valor de lectura == 396) {lcd.clear (); lcd.print ("8");}
else {if (valor de lectura == 349) {lcd.clear (); lcd.print ("5");}
else {if (valor de lectura == 235) {lcd.clear (); lcd.print ("2");}
else {if (valor de lectura == 279) {lcd.clear (); lcd.print ("0");}
else {if (valor de lectura == 452) {lcd.clear (); lcd.print ("7");}
else {if (valor de lectura == 271) {lcd.clear (); lcd.print ("4");}
else {if (valor de lectura == 170) {lcd.clear (); lcd.print ("1");}
else {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} else {}}}}}}}}}}}}}}}}
Paso 4: corrección de valores
Cuando abres el monitor serial te mostrará un valor de 1023, si presionas un botón te dará otra lectura tienes que tomar esos valores y hacer algunos cambios en el código
Paso 5: Proyecto después de la crítica y revisión
No cabe duda que todos estamos aquí para aprender y compartir nuestros conocimientos, gracias a algunos comentarios que dejaron algunas personas de la comunidad que fueron de mucha ayuda, decidí hacer algunos ajustes y mejoras a mi proyecto:
El hardware:
Decidí soldar todos los componentes en una PCB para evitar el problema de la mala conexión en las placas de prueba.
El código:
Un amigo me recomendó que usara un software antirrebote y es solo un bucle (bucle "for", por ejemplo) para que el programa se tome un tiempo para elegir una lectura, significa que hace muchas lecturas (500 en mi ejemplo) pero toma solo el ultimo.
for (i = 1; i <= 500; i ++) {// tomar solo el 500th analogread
value = analogRead (Button);} // eso ayuda a tomarse un tiempo y evitar malas lecturas
Otro amigo gracias a él me recomendó comparar "readvalue" con un rango de valores, no uno porque "readvalue" toma muchos valores para el mismo pulsador. La "A", por ejemplo, da una lectura de: 849, 850, 851 852, 853, 854, 855 por lo que es un rango de 7 valores: un umbral (852) y 3 valores a la izquierda y a la derecha. lo que tenemos que hacer aquí es comparar el valor absoluto de la diferencia entre "readvalue" y "852" con "3".
if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}
Paso 6: Después de un poco de trabajo vendido
Paso 7: El momento de la verdad
Como puede ver, el programa a veces confunde los botones pero aún funciona, en teoría no hay nada malo en el circuito, pero el código necesita más calibración.
Paso 8: el final
Espero que te guste este proyecto y trates de hacerlo, quizás te vaya mejor que a mí.
Pregúntame si tienes dudas, deja comentarios y no olvides votar por mí si te gusta.
Recomendado:
Convertir Un Teclado Muerto a Un Teclado MIDI: 8 Pasos
Convertir Un Teclado Muerto a Un Teclado MIDI: Hace un tiempo cuando era pequeño tenia un teclado funcional que me encantaba tocarlo, aunque solo sabia poquitas notas me encantaba tocarlo, un dia le conecte el eliminador equivocado pero no me habia dado cuenta cuando lo conecte todo estaba funci
Guía de uso del teclado de un pin Raspberry Pi: 9 pasos
One Pin Keypad Raspberry Pi Usage Guide: DESCARGO DE RESPONSABILIDAD: ESTA ES UNA GUÍA DE USO PARA UN PRODUCTO DE CÓDIGO ABIERTO: EL TECLADO DE UN PIN. ESTE NO ES UN PROYECTO DE BRICOLAJE. SI DESEA HACER LOS TABLEROS USTED MISMO, LOS ARCHIVOS EAGLE SE PUEDEN ENCONTRAR AL FINAL DEL TUTORIAL. ¿Qué es el teclado de un pin? Teclado de un pin
Interfaz de teclado con 8051 y visualización de números de teclado en 7 segmentos: 4 pasos (con imágenes)
Interfaz de teclado con 8051 y visualización de números de teclado en 7 segmentos: En este tutorial, le contaré cómo podemos interconectar el teclado con 8051 y mostrar los números de teclado en la pantalla de 7 segmentos
Teclado Das rápido y sucio (teclado en blanco): 3 pasos
Teclado Das rápido y sucio (teclado en blanco): Un teclado Das es el nombre del teclado más popular sin inscripciones en las teclas (teclado en blanco). El teclado Das se vende por $ 89.95. Este instructivo lo guiará a la hora de hacer uno usted mismo con cualquier teclado antiguo que tenga por ahí
Limpieza del teclado de aluminio de Apple o cualquier otro teclado de tacto suave: 5 pasos
Limpieza del teclado de aluminio de Apple … o cualquier otro teclado de tacto suave: por muy limpios que usted o yo intentemos mantener nuestros teclados de aluminio de Apple, se ensucian después de un año más o menos. Este instructivo es para ayudarlo a limpiarlo. Tenga cuidado, porque no soy responsable si su teclado se rompe mientras hace esto …. CHUPA F