Tabla de contenido:
- Suministros
- Paso 1: Conexión de su pantalla
- Paso 2: descargue el software proporcionado
- Paso 3: ejecución de la demostración
- Paso 4: uso de la biblioteca mejorada
- Paso 5: programarlo usted mismo
- Paso 6: escribir texto
- Paso 7: Dibujar líneas y rectángulos
- Paso 8: Dibujar círculos
- Paso 9: SIN COLOR sobre un fondo COLOREADO
- Paso 10: Rotación
- Paso 11: Dibujar mapas de bits
- Paso 12: Visualización de su mapa de bits
Video: Cómo agregar una pantalla de tinta electrónica a su proyecto: 12 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Muchos proyectos involucran el monitoreo de algún tipo de datos, como datos ambientales, a menudo usando un Arduino para el control. En mi caso, quería controlar el nivel de sal en mi ablandador de agua. Es posible que desee acceder a los datos a través de su red doméstica, pero igualmente puede que desee mostrarlos donde se miden. O puede tener una pantalla conectada de forma remota siempre encendida en una ubicación más conveniente.
Ahora hay varios tipos de pantallas que puede usar, todas bastante baratas, pero con diferentes ventajas y desventajas:
- Una pantalla LCD alfanumérica es la más barata pero también la más limitada.
- Una pantalla OLED puede mostrar gráficos, pero las baratas son muy pequeñas. La segunda foto muestra una pantalla OLED de 128x64 píxeles junto a una de E-Ink.
- Una pantalla de E-Ink (o E-Paper) es algo más grande y, por lo tanto, más fácil de leer, y tiene la ventaja de que la pantalla se retiene incluso cuando está apagada. Pero se necesitan varios segundos para volver a dibujar la pantalla.
La pantalla de E-Ink parecía ideal para mi aplicación, ya que podía programar el Arduino para que se despertara solo cada pocas horas, tomar una lectura y mostrarla antes de volver a dormir. Entonces, no tiene importancia que se necesiten varios segundos para volver a dibujar la pantalla.
En una aplicación de este tipo, el consumo de corriente medio puede configurarse para que sea tan bajo que se pueda fabricar una batería de detector de humo de litio de 9 V para que dure 10 años. Además, algunas de estas pantallas mostrarán tres colores: blanco, negro y rojo (o amarillo). Ideal si desea mostrar una advertencia o alerta en rojo.
Suministros
BuyDisplay vende las pantallas de tinta electrónica más baratas que he encontrado, también disponibles en muchos vendedores de eBay. Desafortunadamente, la documentación deja mucho que desear, así que me encargué de escribir un tutorial, ¡sigue leyendo!
Dependiendo de sus necesidades y su presupuesto, puede elegir entre varios tamaños:
- 1,54 "(152x152 = 23, 104 píxeles)
- 2,13 "(212x104 = 22, 048 píxeles)
- 2,6 "(296x152 = 44, 992 píxeles)
- 2,7 "(176x264 = 46, 464 píxeles)
- 2,9 "(296x128 = 37, 888 píxeles)
- 4,2 "(400 x 300 = 120 000 píxeles)
- 5.83 "(640x480 = 307, 200 píxeles)
- 7.5 "(880x528 = 464, 640 píxeles)
(El rango se ha ampliado desde la última vez que miré, por lo que es posible que se haya expandido aún más cuando lea esto).
Están disponibles en 2 colores (negro / blanco) o 3 colores (negro / rojo / blanco o negro / amarillo / blanco). Este Instructable asume que está usando el rojo, pero si ha elegido la versión amarilla, simplemente lea "amarillo" por "rojo" en todas partes.
Elija una versión SPI (4 hilos). Usé el modelo de 1.54 , que tiene un tamaño muy agradable.
Paso 1: Conexión de su pantalla
Estas pantallas vienen con un encabezado de clavija de 2x4. Los números de los pines están claramente etiquetados, los pines 7, 5, 3 y 1 (de izquierda a derecha) a lo largo de la fila superior y 8, 6, 4, 2 a lo largo de la parte inferior.
Su pantalla puede venir con un cable de conexión de 8 vías, lo que facilita la conexión. (Mi cable de conexión tiene 2 hilos rojos y 2 marrones. ¡No son intercambiables!
La siguiente tabla muestra las conexiones, que se aplican a la mayoría de los tipos de Arduino (incluidos Uno, Pro Mini, Pro Micro y Nano).
Módulo de tinta electrónica | Arduino | ||
Alfiler | Nombre | Alfiler | Nombre |
1 | VDD | Vcc | 3.3 / 5V |
2 | VSS | Gnd | Gnd |
3 | Entrada de datos en serie | 11 | MOSI |
4 | Entrada de reloj serial | 13 | SCK |
5 | / Selección de chip | 10 | |
6 | Datos / Instr | 9 | |
7 | Reiniciar | 8 | |
8 | Dispositivo ocupado | 7 |
Paso 2: descargue el software proporcionado
Puede usar el software provisto como se describe en este paso, o puede usar mi biblioteca mejorada en el siguiente paso.
Encuentre su dispositivo en BuyDisplay.com. Hacia la parte inferior de la página encontrará un archivo ZIP de descarga "Arduino Library and Example for 4-wire SPI". Haga clic en esto para descargar y abrir en el Explorador de Windows.
El Explorador de Windows mostrará que contiene una única carpeta de nivel superior "Bibliotecas-Ejemplos_ER-EPM0154-1R". (El nombre será ligeramente diferente si el suyo no es el modelo de 1.54 ").
Copie esta carpeta de nivel superior en su carpeta de bibliotecas Arduino. Haga clic con el botón derecho para cambiar el nombre de la carpeta y eliminar "Bibliotecas-Ejemplos_" del nombre.
(Para encontrar la carpeta de bibliotecas de Arduino, en el IDE de Arduino, haga clic en Archivo… Preferencias y observe la ubicación del cuaderno de bocetos. Navegue hasta aquí y encontrará la carpeta de "bibliotecas" de Arduino entre sus carpetas de bocetos).
Abra esta carpeta y abra la carpeta "Bibliotecas" dentro de ella. Arrastre y suelte todos los archivos de esta carpeta en la carpeta principal un nivel más arriba ("ER-EPM0154-1R"). Elimina la carpeta "Bibliotecas" (ahora vacía).
Ahora ha instalado los archivos y un boceto de ejemplo como una biblioteca Arduino. Tenga en cuenta que si su pantalla no es la de 1,54 , la única diferencia parece ser dos líneas en ER-ERM * -1.h que definen ANCHO y ALTURA.
En el IDE de Arduino, haga clic en Archivo… Exampes y desplácese hacia abajo hasta ER-EPM0154-1R para ver el boceto de demostración, que debería poder compilar y ejecutar tan pronto como haya conectado su pantalla a su Arduino.
Paso 3: ejecución de la demostración
En el IDE de Arduino, haga clic en Archivo… Ejemplos… ER-EPM0154-1R.
Conecte su Arduino a su computadora con un cable USB, o como lo hace normalmente.
En Herramientas, configure la placa, el procesador y el puerto.
En Sketch, haga clic en Cargar.
Habrá un ligero retraso después de que se complete la carga, y el retraso parpadeará varias veces mientras pinta la primera imagen. Mire mientras pasa por la demostración.
Paso 4: uso de la biblioteca mejorada
Puede descargar mi biblioteca mejorada de github en
nótese bien Tengo un alto grado de confianza en que mi biblioteca funcionará con pantallas compatibles con cualquier tamaño, pero de hecho solo la he probado con el modelo de 1.54 . Si usa uno diferente, hágamelo saber en los comentarios al final. de este Instructable, para confirmar que funciona. Pero si no funciona, haré todo lo posible para que continúe.
Descargue y guarde el archivo zip. En el IDE de Arduino, haga clic en Sketch… Incluir biblioteca… Agregar biblioteca. ZIP y seleccione el archivo zip guardado.
Mi biblioteca contiene varias mejoras menores:
- Permite utilizar diferentes números de pin de Arduino (excepto para MOSI).
- La misma biblioteca se puede utilizar para cualquier dispositivo de tamaño.
- Se proporcionan un nuevo relleno sombreado al 50% y un relleno moteado (conjunto de píxeles aleatorios).
La biblioteca viene como un archivo comprimido (zip) de Arduino estándar. Descárguelo en su carpeta de Descargas (o donde prefiera), y en el IDE de Arduino, haga clic en Sketch… Incluir biblioteca… Agregar biblioteca ZIP.
En Ejemplos, ahora encontrará E-ink_ER-EPM. Hay 3 bocetos de ejemplo:
- ER_EPM154-1R-Test: la demostración original proporcionada por el proveedor
- E-ink_demo: el boceto desarrollado en los siguientes pasos
- E-ink_rotate: una demostración de rotación de imágenes.
Paso 5: programarlo usted mismo
Desafortunadamente, no hay documentación con el código proporcionado por el proveedor, ni el código de ejemplo se comenta adecuadamente. Esto hace que sea más difícil de usar de lo que debería ser, y el propósito principal de este Instructable es corregirlo.
Conceptos básicos
Dado que un Arduino está limitado en la cantidad de RAM disponible, la biblioteca le permite dibujar o escribir en pequeñas secciones de la pantalla a la vez, actualizándolas individualmente a la memoria interna del dispositivo. Solo una vez que haya cargado todas las partes que necesita, le indicará que muestre lo que tiene en la memoria.
Estas secciones de la pantalla se conocen como objetos "Paint". Solo necesita uno, y para cada sección de la pantalla se define su altura, ancho y rotación. Cuando termine, lo subes, definiendo la posición en la pantalla donde cargarlo y si debe ser blanco y negro o rojo y blanco.
La esquina superior izquierda de la pantalla tiene coordenadas horizontales (x) y verticales (y) (0, 0), la esquina inferior izquierda es (0, 151) y la parte superior derecha es (151, 0).
Inicialización
Abra el boceto E-ink_demo en el IDE de Arduino y sígalo mientras describo cómo usar la biblioteca.
En la parte superior del boceto verá las siguientes líneas, que siempre son necesarias:
#include <SPI.h #include "ER-ERM0154-1.h" #include "imagedata.h" #include "epdpaint.h" #define COLORED 0 #define UNCOLORED 1 Epd epd;
Las líneas #include extraen las bibliotecas necesarias. SPI.h es una biblioteca Arduino estándar, pero las otras forman parte de la biblioteca de tinta electrónica.
Definimos nombres para píxeles SIN COLOR (blancos) y COLOREADOS (negros o rojos). (Nota para mis compañeros europeos: se usa la ortografía estadounidense de COLOR).
El EPD EPD; line crea el objeto de dispositivo de papel electrónico, en el que se mostrará. Esto tiene que estar aquí al comienzo del boceto para que esté disponible para las funciones setup () y loop ().
Si tiene una pantalla de diferente tamaño, puede reemplazar la línea EPD por:
Epd epd (ANCHO, ALTO);
(habiendo definido previamente WIDTH y HEIGHT en #define declaraciones).
De la misma manera, puede especificar números de pin no predeterminados con:
Epd epd (ANCHO, ALTO, BUSY_PIN, RESET_PIN, DC_PIN, CS_PIN);
Dentro de setup () necesitamos inicializar el dispositivo de la siguiente manera:
Serial.begin (9600)
if (epd. Init ()! = 0) {Serial.print ("error de inicio de e-Paper"); regreso; }
(De hecho, epd. Init () nunca devuelve un error, pero una mejora futura podría detectar la ausencia de una pantalla o una que no funciona).
Paso 6: escribir texto
En E-ink_demo, preste atención a loop (). Primero, limpiemos la pantalla:
epd. ClearFrame ()
(En realidad, esto no es necesario si está a punto de mostrar su propia imagen).
Antes de que podamos dibujar algo (ya sea texto o gráficos), necesitamos crear un objeto Paint sobre el que dibujar:
imagen de caracteres sin firmar [1024]
Pintar pintura (imagen, 152, 18); // el ancho debe ser múltiplo de 8
Esto reserva algo de espacio (1024 bytes) y lo asigna al objeto Paint, cedido por la segunda línea. Esto está configurado provisionalmente como 152 píxeles de ancho y 18 píxeles de profundidad. Podemos reconfigurarlo más tarde para reutilizarlo según sea necesario, pero tenga en cuenta: el ancho debe ser un múltiplo de 8 ya que se almacenan 8 píxeles por byte y no podemos dividir los bytes. (De hecho, lo redondeará si es necesario, pero puede resultar desconcertante si la pantalla no se ve como debería.
Ahora debemos borrar el objeto de pintura a SIN COLOR (blanco), luego en la posición (x, y) = (22, 2) escribimos "e-ink Demo" usando una fuente de 16 píxeles de alto, y COLOREADO (para mostrar contra el Fondo SIN COLOR.
paint. Clear (SIN COLOR)
paint. DrawStringAt (12, 2, "e-paper Demo", & Font16, COLORED);
Tenga en cuenta que las coordenadas (22, 2) son la esquina superior izquierda del primer carácter de la cadena, y son 22 píxeles hacia adentro y 2 píxeles hacia abajo en relación con la esquina superior izquierda del objeto de pintura, no toda la pantalla.. El texto se ve mejor al menos un píxel hacia abajo desde la parte superior del objeto de pintura.
Están disponibles las siguientes fuentes:
Fuente8 - 5x8 píxelesFont12 - 7x12 píxelesFont16 - 11x16 píxelesFont20 - 14x20 píxelesFont24 - 17x24 píxeles
Ahora solo tenemos que enviar el objeto de pintura ("pintura") al dispositivo ("epd"):
epd. SetPartialWindowBlack (pintar. GetImage (), 0, 3, pintar. GetWidth (), pintar. GetHeight ());
SetPartialWindowBlack es un método que aplicamos al objeto epd, usando la imagen y sus propiedades de ancho y profundidad del objeto de pintura. Le estamos diciendo que escriba esta imagen en el dispositivo en (x, y) = (0, 3). Y estamos diciendo que los píxeles COLOREADOS deben ser negros.
Eso no fue demasiado difícil, ¿verdad? Probemos con otro.
paint. Clear (COLOREADO);
paint. DrawStringAt (20, 2, "(Blanco sobre color)", & Font12, SIN COLOR); epd. SetPartialWindowRed (pintar. GetImage (), 0, 24, pintar. GetWidth (), pintar. GetHeight ());
Reutilizamos el mismo objeto de pintura, y el mismo ancho y alto, pero esta vez, vamos a borrarlo a COLOREADO y escribirle una cadena SIN COLOR. Y para variar, haremos que los píxeles COLOREADOS sean rojos y los escribiremos en el dispositivo en (0, 24), justo debajo del primero.
Hemos escrito los dos objetos de pintura en la memoria del dispositivo, pero aún no le hemos dicho que los muestre. Hacemos esto con la siguiente declaración:
epd. DisplayFrame ();
(En el boceto de E-ink_demo, dejamos esto hasta el final, después de dibujar algunas cosas más, pero puede insertarlo aquí si lo desea, mybe seguido de delay (10000); para que tenga tiempo de admirar su obra.
Paso 7: Dibujar líneas y rectángulos
Veamos cómo dibujar líneas y rectángulos. Vamos a utilizar el mismo objeto de pintura, pero necesitamos reconfigurarlo con 40 píxeles de ancho y 36 píxeles de alto. Lo aclararemos a SIN COLOR.
paint. SetWidth (40);
paint. SetHeight (36); paint. Clear (SIN COLOR);
Vamos a dibujar un rectángulo (COLOREADO) con la esquina superior izquierda (5, 3) y la parte inferior derecha (35, 33), en relación con el objeto de pintura, como de costumbre. También dibujaremos sus diagonales como líneas de (5, 3) a (35, 33) y de (35, 3) a (5, 33). Finalmente, escribiremos el objeto de pintura completo (rojo) en la pantalla en (32, 42).
//FILA SUPERIOR:
// Rectange paint. Clear (SIN COLOR); paint. DrawRectangle (5, 3, 35, 33, COLORED;) paint. DrawLine (5, 3, 35, 33, COLORED); paint. DrawLine (35, 3, 5, 33, COLOREADO); epd. SetPartialWindowRed (pintar. GetImage (), 32, 42, pintar. GetWidth (), pintar. GetHeight ());
La biblioteca, como vino, también proporcionó un rectángulo relleno, pero bueno, quería uno sombreado, así que agregué un nuevo método. Haremos dos rectángulos más, uno sombreado y otro relleno, y los colocaremos a la derecha del primero, alternándolos entre negro y rojo.
// Rectangular sombreado paint. Clear (SIN COLOR); paint. DrawShadedRectangle (5, 3, 35, 33); epd. SetPartialWindowBlack (pintar. GetImage (), 72, 42, pintar. GetWidth (), pintar. GetHeight ()); // Rectángulo relleno paint. Clear (SIN COLOR); paint. DrawFilledRectangle (5, 3, 35, 33, COLOREADO); epd. SetPartialWindowRed (pintar. GetImage (), 112, 42, pintar. GetWidth (), pintar. GetHeight ());
Paso 8: Dibujar círculos
Los círculos son igualmente fáciles de dibujar. En lugar de las coordenadas de dos esquinas, tenemos que proporcionar las coordenadas del centro y el radio. Limpiaremos el objeto de pintura y luego colocaremos un círculo en (20, 15) (relativo al objeto de pintura) y el radio 15. Y repetiremos para un círculo sombreado y relleno.
//SEGUNDA FILA
// Círculo paint. Clear (SIN COLOR); paint. DrawCircle (20, 18, 15, COLOREADO); epd. SetPartialWindowBlack (paint. GetImage (), 32, 78, paint. GetWidth (), paint. GetHeight ()); // Círculo sombreado paint. Clear (SIN COLOR); paint. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowRed (pintar. GetImage (), 72, 78, pintar. GetWidth (), pintar. GetHeight ()); // Círculo relleno paint. Clear (SIN COLOR); paint. DrawFilledCircle (20, 18, 15, COLOREADO); epd. SetPartialWindowBlack (pintar. GetImage (), 112, 78, pintar. GetWidth (), pintar. GetHeight ());
Paso 9: SIN COLOR sobre un fondo COLOREADO
¡Nos estamos llevando de maravilla aquí! Entonces, mientras estamos en una buena racha, hagamos 3 círculos más en una fila a continuación, esta vez SIN COLOR en un objeto de pintura COLOREADA, como hicimos con la segunda línea de texto.
//TERCERA FILA
// Círculo paint. Clear (COLORED); paint. DrawCircle (20, 18, 15, SIN COLOR); epd. SetPartialWindowRed (pintar. GetImage (), 32, 114, pintar. GetWidth (), pintar. GetHeight ()); // Círculo sombreado paint. Clear (COLORED) paint. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowBlack (pintar. GetImage (), 72, 114, pintar. GetWidth (), pintar. GetHeight ()); // Círculo relleno paint. Clear (COLORED); paint. DrawFilledCircle (20, 18, 15, SIN COLOR); epd. SetPartialWindowRed (pintar. GetImage (), 112, 114, pintar. GetWidth (), pintar. GetHeight ());
Además del relleno sombreado, también hay un relleno moteado, que colorea píxeles aleatorios. Entonces, en lugar del círculo sombreado de arriba, podríamos haber puesto
paint. DrawSpeckledCircle (20, 18, 15, 25);
El parámetro final (25) es la densidad, es decir, el porcentaje de píxeles que se van a colorear. Si se omite, se asume el 50%.
También hay un DrawSpeckledRectangle, con un parámetro adicional opcional que especifica la densidad.
Paso 10: Rotación
Todo lo que podamos dibujar, lo podemos rotar 90, 180 o 270 grados. (Contamos las rotaciones en el sentido de las agujas del reloj).
Podemos aplicar una propiedad ROTATE a un objeto de pintura, pero es importante entender que no es el objeto de pintura lo que se rota, sino todo lo que escribes en él. Entonces, si desea texto vertical, debe configurar su objeto de pintura tan largo y delgado en una dirección vertical en lugar de horizontalmente.
Entonces, si desea que su texto gire 90 grados en el sentido de las agujas del reloj para que se lea de arriba a abajo (en lugar de de izquierda a derecha), la esquina superior derecha del objeto de pintura será (0, 0) a los efectos de todo lo que escriba o dibuje en él, con x medido desde esa esquina hacia abajo, ey desde esa esquina hacia la izquierda.
Probablemente haya notado que dejamos un espacio en el lado izquierdo de la pantalla. Entonces, escriba un texto allí girado 270 grados, es decir, leyendo de abajo hacia arriba. Esto pondrá (0, 0) en la esquina inferior izquierda.
Tenga en cuenta que, sin embargo, gira un objeto de pintura, la rotación solo se aplica cuando dibuja píxeles en él. Cuando llegas a escribirlo en el dispositivo, siguen siendo las coordenadas de la esquina superior izquierda las que tienes que dar a SetPartialWindow.
Entonces, para recapitular, configuremos nuestro objeto de pintura para que tenga un ancho de 32 y una altura de 110, y le daremos una propiedad ROTATE_270. No es que tengamos que hacer todo esto antes de escribir o dibujar algo.
paint. SetWidth (32);
paint. SetHeight (110); pintar. SetRotate (ROTATE_270);
Lo borraremos a COLOREADO y le escribiremos una cadena SIN COLOR, luego lo colocaremos en (0, 42). (Recuerda que esa es la esquina superior izquierda. Olvídate de la rotación de los píxeles).
paint. Clear (COLOREADO); paint. DrawStringAt (8, 8, "¡De lado!", & Font16, SIN COLOR); epd. SetPartialWindowBlack (pintar. GetImage (), 0, 42, pintar. GetWidth (), pintar. GetHeight ());
Finalmente, necesitamos decirle al dispositivo que muestre todos los píxeles que le hemos dado. Y si no vamos a querer cambiarlo por un tiempo y queremos conservar la energía de la batería, podemos ponerlo en reposo, y por qué no poner el Arduino en reposo también, para que se despierte cuando sea el momento de tomar y mostrar otro. medición.
epd. DisplayFrame ();
epd. Sueño ();
Un segundo boceto de ejemplo muestra una rotación de 90, 180 y 270 grados. A estas alturas, debería poder seguirlo usted mismo.
Paso 11: Dibujar mapas de bits
La demostración del proveedor incluye la visualización de un par de imágenes de mapa de bits. Estos son fáciles de crear usando una herramienta que se puede descargar desde
www.buydisplay.com/image2lcd
Viene como un archivo zip que contiene un archivo de instalación.exe y un archivo de texto que contiene una clave de licencia. Expanda y luego haga doble clic en el archivo.exe para instalarlo.
Claramente, existen restricciones bastante severas sobre lo que puede mostrar, ya que los píxeles de tinta electrónica solo pueden estar activados o desactivados y, por lo tanto, no pueden representar niveles de gris. Pero es posible superponer un objeto de pintura rectangular sobre una imagen. Es posible que desee mostrar un logotipo, símbolos o texto fijo en una fuente elegante, sobre la que podría superponer texto o gráficos variables, como una barra o un gráfico circular, tal vez indicando algo como un nivel de líquido.
Puede crear su imagen con cualquier software de dibujo con el que esté familiarizado, o puede escanear un boceto o dibujo, pero en cualquier caso debe poder reducirlo a solo 2 niveles. Guárdelo como.gif,-j.webp
Inicie Image2Lcd. En la parte inferior, verá una pestaña de Registro. Haga clic en esto e ingrese el código de registro que vino en un archivo de texto en el archivo zip que descargó. Esto eliminará una superposición en la imagen.
En Image2Lcd, abra su archivo de imagen. En el panel de la izquierda, asegúrese de tener
- Tipo de archivo de salida: matriz C
- Modo de escaneo: escaneo horizontal
- BitsPixel: Monocromo
- Anchura y altura máximas: el tamaño de su pantalla y
- Incluir datos de cabecera debe estar desmarcado.
Haga clic en el botón junto a Ancho y alto máximo para procesar. Se mostrará el resultado del procesamiento. Es posible que deba ajustar los controles deslizantes de Brillo y Contraste para obtener los mejores resultados.
Haga clic en la casilla de verificación Invertir color sobre el control deslizante Brillo, convirtiéndola en una imagen negativa, que por alguna razón es necesaria, luego haga clic en Guardar para guardarla como imagedata.cpp en la carpeta que contiene su boceto de Arduino. La próxima vez que abra el boceto con el IDE de Arduino, debería verlo como una nueva pestaña.
Paso 12: Visualización de su mapa de bits
En el archivo principal de su boceto de Arduino, inmediatamente después de las líneas #include en la parte superior, inserte:
#include "imagedata.h"
Cree una nueva pestaña (haga clic en la flecha hacia abajo al final de la línea de pestañas) y llámela imagedata.h. Inserte las siguientes 2 líneas en él:
extern const unsigned char IMAGE_BLACK ;
extern const unsigned char IMAGE_RED ;
En su archivo imagedata.cpp, la primera línea comenzará con
const unsigned char gImage_image [2888] = {
(El número entre corchetes será diferente si no está usando la pantalla de 1.54 ). Reemplace esto por
const unsigned char IMAGE_BLACK PROGMEM = {
Esto es para una imagen en blanco y negro. Si lo quieres rojo y blanco, cámbialo a
const unsigned char IMAGE_RED PROGMEM = {
Justo antes de esta línea, agregue
#incluir
#include "imagedata.h"
Ahora está listo para mostrar su imagen. En loop () en su archivo principal, agregue
epd. ClearFrame ();
epd. DisplayFrame (IMAGE_BLACK, NULL);
O, si era una imagen roja que había creado, la segunda línea debería ser
epd. DisplayFrame (NULL, IMAGE_RED);
De hecho, puede crear una imagen combinada de rojo y negro convirtiendo las partes rojas y negras por separado con Image2Lcd y mostrándolas ambas con
epd. DisplayFrame (IMAGE_BLACK, IMAGE_RED);
Sin embargo, cualquier píxel que se especifique tanto como negro en la imagen en blanco y negro como rojo en la roja y blanca, aparecerá en rojo.
Finalmente, puede superponer su imagen con cualquiera de las funciones de texto o gráficos que aprendimos anteriormente. Quería agregar mi nombre de usuario de Twitter, así que agregué
Pintar pintura (imagen, 20, 152); // el ancho debe ser múltiplo de 8
pintar. SetRotate (ROTATE_270); paint. Clear (SIN COLOR); paint. DrawStringAt (20, 2, "@pleriche", & Font16, COLOREADO); epd. SetPartialWindowRed (pintar. GetImage (), 0, 0, pintar. GetWidth (), pintar. GetHeight ()); epd. SetPartialWindowRed (pintar. GetImage (), 0, 0, pintar. GetWidth (), pintar. GetHeight ()); epd. DisplayFrame ();
Recomendado:
Voltímetro preciso con pantalla de tinta electrónica Waveshare (0-90v CC) con Arduino Nano: 3 pasos
Voltímetro preciso de pantalla de tinta electrónica Waveshare (0-90v CC) con Arduino Nano: en este Instructable, uso una pantalla de papel electrónico Waveshare de 2.9 '' con un Arduino Nano, un divisor de voltaje y un ADS1115 para mostrar voltajes precisos de hasta 90 voltios DC en el E-Paper Display. Este instructable combina estos dos proyectos anteriores: - Ardui
GPS de ahorro de energía con pantalla de tinta electrónica: 4 pasos
GPS de ahorro de energía con pantalla de tinta electrónica: todos los veranos hago senderismo en lugares remotos. A veces, cuando el rastro es tenue o incluso desaparece, tengo que usar el GPS de mi teléfono para obtener mis coordenadas y luego verificar mi posición en un mapa de papel (a menudo no tengo señal, por lo que los mapas de papel son obligatorios
Taza con pantalla de tinta electrónica: 8 pasos (con imágenes)
Taza con pantalla de tinta electrónica: esta es una de esas ideas locas que se alojan espontáneamente en mi cerebro. Pensé, ¿no sería genial si hubiera una taza de café que pudieras personalizar sobre la marcha? Una que se parecía mucho a una taza de café corriente. Hice una búsqueda y
Transplante de pantalla de tinta electrónica de Amazon Kindle de un lector Sony: 6 pasos (con imágenes)
Transplante de pantalla de tinta electrónica de Amazon Kindle de un lector de Sony: después de haber comprado el Kindle de Amazon de $ 400, mientras visitaba a mi familia la Navidad pasada, mi hermana pequeña pisó accidentalmente el dispositivo y rompió la pantalla. Estuvo almacenado durante ocho meses antes de que decidiera intentar lo imposible: un cro
Cómo agregar una pantalla VFD MatrixOrbital a su Linux Box: 11 pasos (con imágenes)
Cómo agregar una pantalla VFD MatrixOrbital a su caja Linux: Este instructivo cubre cómo agregar un VFD MatrixOrbital a su caja Linux. Como todos los buenos geeks, tengo una caja Linux sin cabeza en mi red doméstica. Al agregar una pantalla fluorescente al vacío y ejecutar LCDProc, puede mostrar estadísticas de salud y vigilar su