8x8 LED Matrix Animations (12 / 14 paso)

Paso 12: Hardware adicional 1 - teclado

me gustaron las animaciones al azar pude llamar, pero el partido quería anular esto y poner una cierta animación solamente y no lo cambiaría. Por lo tanto, el primer Add-on-un teclado para permitir una cierta animación a ser seleccionado.

Problema con esto es que sólo tenemos 3 entradas que dejaron en el Arduino por lo que usando un teclado en su forma normal no funciona. Así que después de algunas investigaciones aquí y en internet, he encontrado una solución que usar sólo una entrada para detectar qué botón ha sido presionado.

Leer este excelente instructable sobre cómo detectar los pines en el cable del teclado y howto hasta sólo utiliza una entrada. Una vez había construir la matriz de resistencia, conecté la salida de teclado al pin A2. Usé un tablero mientras que prueba este hardware. Yo había soldado también pasadores de encabezado para el teclado así que puedo desconectarlo desde la placa más fácil y. también cuando se construyo el circuito final todo es modular y puede ser conectado fácilmente.

Por lo tanto, he añadido las siguientes tres declaraciones justo debajo de las definiciones de matriz
int keyboardPin = A2;
int keyboardValue = 0;
keypressed int = 0;

Luego he añadido la siguiente función para permitirme leer en que tecla ha sido presionada en el teclado. Tenga en cuenta que mis valores son diferentes del instructable sobre como he utilizado valores de resistencia diferentes.

void readkeyboard() {}
keyPressed = 0;
keyboardValue = analogRead(keyboardPin);
Si (keyboardValue < 25) {keypressed = -1;}
Si ((keyboardValue >25) & & (keyboardValue < 45)) {keypressed = 1;}
Si ((keyboardValue >45) & & (keyboardValue < 80)) {keypressed = 2;}
Si ((keyboardValue >80) & & (keyboardValue < 160)) {keypressed = 3;}
Si ((keyboardValue >162) & & (keyboardValue < 253)) {keypressed = 4;}
Si ((keyboardValue >253) & & (keyboardValue < 361)) {keypressed = 5;}
Si ((keyboardValue >361) & & (keyboardValue < 479)) {keypressed = 6;}
Si ((keyboardValue >479) & & (keyboardValue < 585)) {keypressed = 7;}
Si ((keyboardValue >585) & & (keyboardValue < 715)) {keypressed = 8;}
Si ((keyboardValue >715) & & (keyboardValue < 760)) {keypressed = 9;}
Si ((keyboardValue >839) & & (keyboardValue < 880)) {keypressed = 10;}
Si ((keyboardValue >760) & & (keyboardValue < 839)) {keypressed = 11;}
Si ((keyboardValue >880) & & (keyboardValue < 1000)) {keypressed = 12;}
Delay(50);
}

Esta función funciona al detectar que tecla ha sido presionada basada en el valor en la clavija de entrada de teclado y luego establecer la keypressed variable global a un número corresponde a esto.

Luego se cambia la función loop para leer este

void loop() {}
int randnumber = 0;
readkeyboard();
Si (keypressed > 0 & & keypressed < 12) {}
manualEffect = 1;
prevKeyPressed = keypressed;
para (int x = 0; x < 2; x ++) {}
(*funcAnimate[keypressed]) ();
Delay(1);
}
} else if (keypressed = 12) {}
manualEffect = 0;
Dejar el bucle recorren otra vez y la declaración final de la otra persona entonces ejecutarán un efecto aleatorio
como se ha reajustado el manualEffect
} else if (manualEffect = 1) {}
para (int x = 0; x < 2; x ++) {}
(*funcAnimate[prevKeyPressed]) ();
Delay(1);
}
} else {}
randnumber = random(0,2);
para (int x = 0; x < 2; x ++) {}
(*funcAnimate[randnumber]) ();
Delay(1);
}
}
}
Esto funciona mediante la lectura el valor del teclado.

Luego un si declaración comprueba para ver si se ha oprimido una tecla entre 0 y 11
Si esto es cierto entonces establece manualeffect 1 y luego ejecuta el efecto elegido.
Si ha sido presiona la tecla # y luego se establece manualeffect en 0, es ejecutar el siguiente bucle de tiempo como se oprime ninguna tecla y manualeffect se establece en 0 entonces se ejecuta un efecto aleatorio
Entonces si la declaración verifica si manualeffect es igual a 1. Esto sucede si una clave ha sido pulsada anteriormente y comenzó a correr un efecto manual. Esto nos permite seguir jugando el manual previamente seleccionado.  Este efecto manual seguirá funcionando hasta que se pulse otra tecla
La declaración else final se ejecutará si manualeffect se establece en 0, lo que ocurrirá cuando la unidad está encendida o cuando se presiona la tecla random. A continuación, se ejecuta un efecto aleatorio.

El ajuste final al bosquejo es añadir la siguiente función

{} void dummy()

Entonces la matriz de funciones cambio leer como esta

funcAnimate [0] = dummy;
funcAnimate [1] = MakeSadSmileFace;
funcAnimate [2] = MakewinkingFace;

Cambiar el randNumber = random(0,2); a randnumber = random(1,3);

Estos cambios implican que cuando el teclado se presiona la función en la posición 0 de la matriz no se ejecuta debido a las asignaciones de variables. Por lo que sólo tiene que añadir una función dummy allí no hace nada. También cambiamos la randNumber se le asigna un número aleatorio a partir 1, otra vez matriz posición 0 nunca es ejecutar.

El bosquejo completo está a continuación.

Artículos Relacionados

Kit de Arduino LED Matrix

Kit de Arduino LED Matrix

Kit de matriz de LED Arduino fue desarrollado para que pueda trabajar con una matriz de LED 8 x 8, un circuito integrado MAX7219 y un Arduino. En el proyecto, se dibujar, utilizando un código fácil y corto, una cara feliz. A continuación, you´ll dibu
Cómo hacer un signo individual direccionable LED Matrix

Cómo hacer un signo individual direccionable LED Matrix

Hace unos días Adafruit había publicado un blog acerca de su nueva biblioteca NeoMatrix.No tienen ningún tutoriales para arriba, pero vinculada a su github para cualquier persona que simplemente no puede esperar puede seguir adelante y tener un hack
Redondo de LED Matrix - 340 píxeles x WS2801

Redondo de LED Matrix - 340 píxeles x WS2801

340 piezas de WS2801 píxeles con LED RGB de 12mm se utilizaron para crear un simple montaje matriz/pantalla de LED RGB. Mientras que tipo de cara, es muy fáciles para montar, alambre y al control. Este tipo de chipset de pixel WS2801 fue elegido para
Cubo de LED Matrix

Cubo de LED Matrix

Matriz de LED de WS2812 de uso y clara visualización cajas y controlador Blinkytape para construir una matriz RGB LED programable simple cubo en 30 minutos.Paso 1: Material WS2812 matriz de 8 * 8: 5 pcs o 6pcsControlador de Blinkytape * 1pcs (o usted
Reloj binario de Arduino usando LED Matrix

Reloj binario de Arduino usando LED Matrix

Este sitio tiene muchos puestos finas que describe la construcción de los relojes binarios. Soy tremendamente inestable, sin embargo y tienen dificultad para cualquier soldadura. Por lo tanto quería hacer mío de una matriz de 8 x 8 LED MAX7219-contro
Camiseta LED Matrix

Camiseta LED Matrix

La camisa de matriz de LED utiliza componentes circuitos suaves para crear una resolución baja, desplazamiento de tablero de mensajes y la plataforma de videojuegos que puede ser controlado con una palanca de mando en una camiseta. Fue una de mis pri
Generador de código Morse para la 16 x 24 HT1632C LED Matrix-hice en TechShop

Generador de código Morse para la 16 x 24 HT1632C LED Matrix-hice en TechShop

en este instructable te detallo cómo utilizar la Matriz de LED HT1642C de Adafruit para hacer un generador de código Morse que parpadea una carta y tiene un timbre correspondiente al código Morse equivalente.Para hacer la caja para la matriz, mira mi
En cascada 8 x 16 rgb led matrix

En cascada 8 x 16 rgb led matrix

en este proyecto hice matriz de led rgb de 8 x 16 en cascada y su controlador.18F2550 de microchip se utiliza para su soporte USB.Leds RGB son conducidos por 74hc595 shift registros con resistencias.Para datos de configuración y animación; Eeprom ext
4 x 5 relativamente primer LED Matrix

4 x 5 relativamente primer LED Matrix

hice este proyecto como una final para el laboratorio de física 308L en la Universidad de nuevo México.  Largo todos semestre recibí toneladas de ayuda de Steve Koch y Anthony Salvagno.La influencia de este proyecto provino de una imagen que vi en un
Hacer una caja para su 16 x 24 HT1632C LED Matrix - hecho en TechShop

Hacer una caja para su 16 x 24 HT1632C LED Matrix - hecho en TechShop

hace un año me encontré en posesión de esta Matriz de LED de Adafruit. Es un juguete cool para jugar, si es difícil, pero muy bonita solo no es sentado en una superficie con la tarjeta de circuitos y cables expuestos. Por eso decidí hacerme una peque
24*10 LED MATRIX PERFECTLY RUNNING

24*10 LED MATRIX PERFECTLY RUNNING

DESPUÉS DE 24 * 6 LED MATRIZ PORY MATRIZ DE LED DE 24 * 8 PORSe crea otra matriz led de 24 * 10 modificando el código y hardwareproporcionaréel código y prueba del funcionamiento de la Junta (video)y más adelante en subiré las imágenes. no puedo subi
Sonido activado 4 X 7 RGB LED Matrix

Sonido activado 4 X 7 RGB LED Matrix

es este instructable sobre un sonido activado matriz de Led RGB de Led RGB y artículos del asimiento de casa. Los usos de la matriz de LED tres contadores binarios de 4 bits y un desplazamiento de 4 bits registrar (para los conductores de tierra en e
Matriz de LED - juego de la vida

Matriz de LED - juego de la vida

Este proyecto ejecutará el juego de Conway de la vida en una matriz de LED 8 x 8.Tiene 2 botones, uno para la creación de un campo aleatorio, el otro para iniciar o detener las iteraciones.Paso 1: materiales Una matriz de LED 8 x 82 x aprox. resisten
Efectúan llamas con un 8 x 8 LED matriz y ATMega328

Efectúan llamas con un 8 x 8 LED matriz y ATMega328

hace un rato he encontrado algunas entradas en el blog explicando cómo utilizar una matriz de LED como colgante (http://hackaday.com/2013/01/10/8x8-led-matrix-pendant-sealed-in-a-block-of-epoxy/ y https://sites.google.com/site/tinymatrix/ ). El colga