HotKeys Rev 2

A continuación encontrara las instrucciones para ensamblar el kit.
La lista de componentes son:

  1. Es recomendable comenzar por los componentes mas pequeños, en este caso las resistencias. Hay dos valores de resistencias de 10k para el encoder rotativo y otras de 100ohms para los leds; ubique las resistencias de 10k en las posiciones marcadas como R5, R6 y R7; las restantes van en R1, R2, R3 y R4.
  2. Continué soldando el Arduino Pro Micro.
  3. Una vez soldado el Arduino, debemos ubicar las teclas, es recomendable posicionar los keycaps en ellas para dar mas estabilidad o ayudarse con alguna cinta, para mantenerlas unidas temporalmente.
  4. Se puede retirar las keycaps, y procedemos a soldar los leds. Los leds van con el ánodo hacia la izquierda de la placa (mirando desde arriba), de manera que quede conectado con la resistencia.
  5. Por ultimo, coloque el encoder rotativo.

Puede guiarse del siguiente link para cargar los ejemplos para los botones, aqui encontrara otras posibilidades para las teclas.

A continuación se puede encontrar un video del paso a paso de como ensamblar el kit. Cualquier duda por favor, no duden en consultar.

Para el enconder rotativo puede utilizar la librería de brianlow

Como dar los primeros pasos para personalizar las acciones del Hotkeys a continuación:

Como Programar los leds de Hotkeys en el siguiente video:

Convertir imágenes a hexadecimal para MicroPython

Ayer me cruce con un problema que quizás Uds ya les ocurrió; necesitaba crear un carácter personalizado para mostrarlo en el display LCD de 2×16.

Resulta que estoy trabajando con MicroPython. utilizando una librería para mostrar texto en el display, la librería se llama python_lcd. Para poder mostrar caracteres personalizados con esta librería es necesario primero construir un array de 8 hexadecimales, cada uno representa que puntos de las lineas horizontales estarán encendidas y apagadas. Luego se lleva a memoria este array, de manera que este disponible para su uso en el display; y por ultimo se lo muestra en pantalla indicando la dirección donde esta almacenado.

Existe una pagina en internet que permite dibujar manualmente los caracteres y luego devuelve el array necesario para mostrarlo en el display http://javl.github.io/image2cpp/; la había utilizado anteriormente y es muy útil si debemos dibujar un solo carácter. Quiero tratar de dibujar un imagen utilizando todos los caracteres del display, o en lo posible mas de uno.

El script que arme toma una imagen, lo recomendable es alimentarlo con una imagen de baja resolución y que sea blanco y negro, de manera de tener mejores resultados; recordemos que la resolución de cada carácter es de 8 lineas por 5 columnas.

El primer paso es entender que necesitamos para dibujar un carácter en el display, la librería nos pide un array de hex para mostrarlo; para construir este array, primero debemos identificar que puntos del carácter estarán encendidos por cada linea:

Luego debemos convertir estos bytes en hexadecimal y tenemos nuestro array para usarlo.

El script

El script utiliza opencv para leer la imagen que le proporcionamos, en caso de ser necesario, la redimensiona al tamaño proporcional de las columnas y filas que vamos a utilizar. Si es una imagen muy grande, es posible que se pierdan todos los detalles y tengamos una mancha en el display; por lo que vuelvo a recomendar utilizar imágenes de muy baja resolución.

Luego recorre las columnas de cada fila evaluando si se debe activar o no ese punto; y genera el array en hex.

Termina construyendo un archivo de salida, que contiene todos los caracteres y una segunda linea por cada carácter, que lo ubica en memoria.

Es necesario tener en cuenta que el script recorre las imágenes (al menos en esta primer versión) en el siguiente orden:

Por lo que si queremos dibujar en el display, seria necesario realizar, suponiendo que los caracteres se guarden en memoria siguiendo el nro. de la retícula:

lcd.putchar(chr(0)) #mostramos el carácter de la retícula 0
lcd.putchar(chr(2)) #mostramos el 2do carácter
lcd.move_to(0,1) #pasamos a la segunda linea
lcd.putchar(chr(1)) #mostramos el carácter de la retícula 1
lcd.putchar(chr(3)) #mostramos el ultimo carácter.

El script pueden descargarlo desde github