Tabla de contenido:
- Paso 1: los proyectos
- Paso 2: Instale la placa DFRobot FireBeetle ESP32 en el IDE de Arduino
- Paso 3: instale bibliotecas comunes para los proyectos
- Paso 4: La cubierta de la matriz de LED 24x8
- Paso 5: Proyecto 1: un reloj NTP de matriz LED simple con pantalla de hora militar o pantalla AMPM
- Paso 6: Proyecto 2: Pantalla de predicción de pase de ISS,
- Paso 7: Proyecto 3: un letrero de mensaje en movimiento simple usando MQTT
- Paso 11: Vínculos…
Video: 4 proyectos en 1 con DFRobot FireBeetle ESP32 y cubierta de matriz LED: 11 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
Pensé en hacer un instructable para cada uno de estos proyectos, pero al final decidí que realmente la mayor diferencia es el software para cada proyecto. ¡Pensé que era mejor hacer un instructable grande!
El hardware es el mismo para cada proyecto y estamos usando el IDE de Arduino para programar el dispositivo ESP32.
Entonces, ¿qué es el hardware? Todo el hardware lo proporcionaron mis amigos de DFRobot, tienen muy buenos tutoriales y placas centrales fáciles de instalar para esto. También tenga un buen sistema de soporte y envío bastante rápido a los EE. UU.
DF Robot proporcionó información completa sobre la placa Firebeetle ESP32 y la matriz LED, los proyectos presentados y en los videos son míos.
Todos estos proyectos utilizan un microcontrolador IOT DFRobot FireBeetle ESP32
www.dfrobot.com/product-1590.html
La wiki de soporte, con las instrucciones de instalación del núcleo de la placa, se puede encontrar aquí:
www.dfrobot.com/wiki/index.php/FireBeetle_…
También necesitamos una Matriz de LED de 24x8 cubiertas de FireBeetle (AZUL)
www.dfrobot.com/product-1595.html
No me gustan los leds AZULES - También tienen diferentes colores.
VERDE -
ROJO -
BLANCO -
AMARILLO -
Solo necesita una matriz de LED: el color es su elección, todos funcionan de la misma manera.
La wiki de soporte de LED Matrix se puede encontrar aquí:
www.dfrobot.com/wiki/index.php/FireBeetle_…
Aquí encontramos un enlace a la biblioteca Arduino.
github.com/Chocho2017/FireBeetleLEDMatrix
Más sobre esto un poco más adelante….
Algo que es opcional, pero que quizás sea útil tener es un soporte de batería MicroUSB 3xAA.
www.dfrobot.com/product-1130.html
Así que ese es el hardware necesario - ¿Cuáles son los 4 proyectos?
Paso 1: los proyectos
Proyecto 1: Es un reloj NTP de matriz LED simple con pantalla de hora militar o pantalla de hora AMPM, Este reloj se conectará a un NTP (servidor de hora), tomará la hora y aplicará una compensación para que obtenga la hora local. Mostrará la hora en la matriz de LED. - Es un reloj muy simple, y un primer proyecto muy simple.
Proyecto 2: Pantalla de predicción de pases de ISS, este proyecto utiliza el segundo núcleo del procesador. Mostrará qué tan cerca (en millas) está la ISS, cuándo esperar el próximo pase de la ISS en su ubicación (en hora UTC) y, opcionalmente, cuántas personas hay en el espacio. Dado que gran parte de esta información no cambia con frecuencia, usamos el segundo núcleo para verificar solo las actualizaciones de las predicciones de pases, o cuántas personas hay en el espacio cada 15 minutos. Podemos evitar demasiadas llamadas API al servidor de esta manera. Este proyecto es un poco más complicado, pero sigue siendo bastante fácil de hacer.
Proyecto 3: Una señal de mensaje en movimiento simple usando MQTT, volví a visitar un proyecto que se hizo para la mini placa ESP8266 D1, y es una matriz de LED de 8x8: la idea es conectarse a un corredor de MQTT, enviar un mensaje a un tema en el que está el dispositivo escuchar y mostrar ese mensaje. Es bastante fácil y muy simple de hacer una vez que todo está configurado. Y hay algunos pasos para configurar el software de cliente MQTT en una computadora de escritorio. Una vez configurado, MQTT es un protocolo de mensajería muy poderoso utilizado por muchos dispositivos de IoT para enviar y recibir mensajes.
Proyecto 4: Pantalla de la estación meteorológica: basada en la mini estación meteorológica ESP8266 D1 fabricada por Squix78 y ThingPulse. Tomamos nuestros datos de Wunderground y mostramos las condiciones actuales y la temperatura en grados Fahrenheit. Usamos el segundo núcleo del ESP32, para actualizar nuestros datos cada 10 minutos. También es fácil de configurar.
MINI EJEMPLOS DE BOUNS: La biblioteca (y los bocetos anteriores) usan una fuente de 8x4, la biblioteca también contiene una fuente de 5x4, que utilicé para la mayoría de estos mini ejemplos de BOUNS. Hay un par de problemas que puedo notar con la fuente pequeña, uno que parece causar problemas cuando usas el WIFI del dispositivo. Esto es algo que quiero explorar más, pero he tenido tiempo. El otro problema es que no se desplaza, solo la fuente más grande puede desplazarse. Por lo tanto, ninguno de estos ejemplos usa WIFI; solo actualizan la pantalla, y más sobre esto se verá más adelante.
Empecemos…..
Paso 2: Instale la placa DFRobot FireBeetle ESP32 en el IDE de Arduino
Entonces, voy a referirlo a DF Robot Wiki sobre la instalación del núcleo de la placa para Arduino IDE.
Es bastante fácil de hacer con el IDE moderno (1.8.xo mejor).
www.dfrobot.com/wiki/index.php/FireBeetle_…
Descubrí que la biblioteca WiFi incorporada en el IDE de Arduino causa problemas (PD, cualquier otra biblioteca WiFi que esté instalada en el directorio de su biblioteca puede o no causar problemas). La única forma (o al menos la forma más fácil) que encontré para resolver el problema es eliminar la biblioteca WiFi del directorio IDE. Desafortunadamente, no hay una buena manera de decirle dónde puede estar instalado; depende de cómo esté instalado el IDE y del sistema operativo que esté utilizando.
Lo que he hecho es encontrar la biblioteca WiFi que está causando problemas, y simplemente mover el directorio WiFi al escritorio … y reiniciar el IDE. De esa manera, puede conservar la biblioteca en caso de que la necesite para las placas Arduino WIFI.
El 90% de los problemas que he visto se han relacionado con el problema anterior. Si obtiene muchos errores de compilación, relacionados con el uso de WiFi desde el directorio Arduino IDE o el directorio de la biblioteca Arduino, este es el problema que tiene.
Mi segundo problema es que a veces la carga del boceto no se carga, en cuyo caso solo tengo que presionar el botón de carga nuevamente, y funciona.
Y, por último, si tiene la consola serie abierta y luego la cierra, el FireBeetle se congela.
Sé que DF Robot está trabajando activamente en el núcleo de la placa, y en el poco tiempo que tengo la placa, han lanzado un nuevo núcleo. Desafortunadamente, no resolvió el problema de WiFi, que es mi mayor problema.
* Espressif tiene un administrador de núcleo 'genérico' que se puede instalar, el núcleo incluye la placa FireBeetle ESP32, pero tenía un problema con la forma en que tiene los pines numerados. Lo interesante aquí es que la biblioteca WiFi funciona con la biblioteca WiFi incorporada, así que sé que hay una solución para ese problema a la vuelta de la esquina.
Si desea probar los núcleos Espressif, puede encontrar más información aquí:
github.com/espressif/arduino-esp32
Personalmente, me gusta cómo funciona el núcleo DF-Robot, incluso con los pocos problemas que tengo.
** NOTA: Estoy usando LinuxMint 18, que está basado en Ubuntu 16.04, creo, no lo he probado en ninguna otra máquina, pero creo que el problema está presente en todos los sistemas operativos según algunas búsquedas en Internet que hice. **
Paso 3: instale bibliotecas comunes para los proyectos
Todos estos proyectos utilizan algunas bibliotecas comunes, por lo que es más fácil realizar este paso ahora.
Dependiendo de la biblioteca, puede encontrarlo en el administrador de la biblioteca, que es, con mucho, la forma más fácil de instalar una biblioteca.
Otra forma común es instalar a través de un archivo zip, que también funciona. Pero generalmente uso el método de instalación manual. Hay un buen tutorial sobre los tres métodos en el sitio web de Arduino.
www.arduino.cc/en/guide/libraries
Para estas bibliotecas, recomendaría el método manual, debido a que hay algunas bibliotecas diferentes con el mismo nombre, al usar el administrador de bibliotecas puede terminar con la incorrecta.
Todos estos proyectos utilizan un administrador de WiFi para facilitar la conexión a su wifi; decidí hacer esto, así que si necesita mover su proyecto, no necesita reprogramar la placa. Esto es algo que utilizo para las placas ESP8266 y funciona bien, no es perfecto. La suerte de usar la biblioteca ha sido adaptada para usar el ESP32 por un usuario de github llamado bbx10. (Este administrador también debería funcionar con las placas ESP8266)
Necesitamos instalar tres bibliotecas para que esto también funcione.
El WiFiManager -
El servidor web:
Y finalmente el DNSServer -
También es común a todos los bocetos la biblioteca DF Robot DFRobot_HT1632C para la matriz de LED.
www.dfrobot.com/wiki/index.php/FireBeetle_…
La biblioteca se puede encontrar aquí (nuevamente, recomendaría el método de instalación manual)
github.com/Chocho2017/FireBeetleLEDMatrix
Una nota especial: en mi repositorio de github, tengo un par de bibliotecas DFRobot_HT1632C ligeramente modificadas
github.com/kd8bxp/DFRobot-FireBeetle-ESP32…
La modificación es para una fuente más pequeña y solo se usa para algunos de los ejemplos adicionales. Puede usar la biblioteca modificada y no debería causar ningún problema. También hay una biblioteca ligeramente modificada (adjunta a algunos de los bocetos como pestañas) que puede crear imágenes de mapa de bits.
Si opta por utilizar la versión ligeramente modificada, debe cambiar el nombre del directorio de la "biblioteca modificada" a FireBeetleLEDMatrix y mover esa carpeta a su directorio de la biblioteca Arduino. No tiene que usar esta versión para estos proyectos, es necesaria si desea probar algunas de las fuentes más pequeñas de los ejemplos adicionales.
Esas son las bibliotecas comunes; instalaremos algunas bibliotecas específicas para cada proyecto.
Pasemos a la matriz LED….
Paso 4: La cubierta de la matriz de LED 24x8
Pues vamos a seguir junto con el Tutorial del Robot DF para la Matriz LED
www.dfrobot.com/wiki/index.php/FireBeetle_…
Introducción: Esta pantalla de matriz de LED de 24 × 8 está especialmente diseñada para la serie FireBeetle. Admite el modo de bajo consumo de energía y la pantalla de desplazamiento. Con el chip controlador de LED de alto rendimiento HT1632C, cada LED tiene un registro independiente, lo que facilita la conducción por separado. Integra un reloj RC de 256 KHz, solo 5uA en modo de bajo consumo, admite ajuste de brillo PWM de 16 escalas. Este producto también funciona con el otro microcontrolador Arduino como Arduino UNO.
Especificación:
- Voltaje de funcionamiento: 3.3 ~ 5VLED
- Color: un solo color (blanco / azul / amarillo / rojo / verde)
- Chip de unidad: HT1632C
- Corriente de trabajo: 6 ~ 100 mA
- Consumo de baja energía: 5uARC
- reloj: 256 KHz
- Selección de chip (CS): D2, D3, D4, D5 seleccionable
- Soporte de pantalla de desplazamiento
PIN predeterminados:
- DATAD6
- WRD7 (generalmente no se usa)
- CSD2, D3, D4, D5 seleccionable (D2 predeterminado)
- RDD8
- VCC 5VUSB; 3.7V batería lipo
(Todos estos proyectos usan D2 para el pin de selección, esto se puede cambiar fácilmente según sea necesario).
En la parte posterior de la matriz de LED verá 4 pequeños interruptores, asegúrese de seleccionar solo uno de los pines CS. Estos pequeños interruptores son la forma en que selecciona su Pin CS, y el valor predeterminado es D2.
El DF Robot WIKI tiene un código de muestra, este código también se encuentra en los ejemplos de la biblioteca. (Yo creo)
Otra nota: use los números Dx para sus pines; de lo contrario, los números de los pines serán los números / nombres de los pines IO
Y eso puede causarle algunos problemas.
Establecer un punto:
X es de 0 a 23 (o si lo considera una hoja de cálculo, son columnas).
Y es de 0 a 7 (o si lo considera una hoja de cálculo, son filas).
La biblioteca proporciona una función de punto de ajuste.
display.setPoint (x, y) esto colocará el cursor en esa ubicación, donde ahora puede imprimir un mensaje.
display.print ("Hola mundo", 40); // esto hará que la pantalla muestre "Hello World" comenzando en el punto x, y y desplazándose fuera de la pantalla.
También hay setPixel (x, y) y clrPixel (x, y): setPixel encenderá un LED en la ubicación x, y, y clrPixel apagará un LED en la ubicación x, y.
Hay algunas otras cosas que esta biblioteca puede hacer, y la mayoría están incluidas en los ejemplos.
(Recomendaría ejecutar y modificar los ejemplos para ver qué puede hacer).
* Una cosa que parece faltar es dibujar mapas de bits: la biblioteca puede hacer esto, pero por alguna razón es una función privada de la biblioteca. Vea algunos de mis ejemplos adicionales para obtener una versión ligeramente modificada de la biblioteca
** Otra cosa es que incluye un conjunto de fuentes de 5x4, lo cual es bueno tener una fuente más pequeña; sin embargo, está comentado en la biblioteca. Lo descomenté y lo hice funcionar, pero noté algunos problemas con él: el más grande no se desplaza. Y noté que parece causar problemas con el wifi o tal vez con otra biblioteca que quería usar.
Sin embargo, una de las bibliotecas modificadas que incluyo usa la fuente 5x4.
Pasemos a los proyectos…..
Paso 5: Proyecto 1: un reloj NTP de matriz LED simple con pantalla de hora militar o pantalla AMPM
Proyecto 1: Es un reloj NTP de matriz LED simple con pantalla de hora militar o pantalla de hora AMPM, Este reloj se conectará a un NTP (servidor de hora), tomará la hora y aplicará una compensación para que obtenga la hora local. Mostrará la hora en la matriz de LED. - Es un reloj muy simple, y un primer proyecto muy simple.
Antes de comenzar con este sencillo proyecto, puede ser una buena idea saber qué es NTP:
NTP es un protocolo de Internet que se utiliza para sincronizar los relojes de las computadoras con alguna referencia de tiempo. Es un protocolo estándar. NTP son las siglas de Network Time Protocol.
NTP utiliza UTC como hora de referencia (UTC es la hora universal coordinada), evolucionó a partir de GMT (hora media de Greenwich) y, en algunos círculos, se llama hora zulú (militar). UTC se basa en una resonancia cuántica de un átomo de cesio.
NTP es tolerante a fallas y altamente escalable, el protocolo es altamente preciso y utiliza una resolución de menos de un nanosegundo.
*
Un reloj UTC no es de mucha utilidad para la mayoría de las personas, por lo que debemos ajustar nuestro reloj a la hora local. Afortunadamente, podemos hacer esto con bastante facilidad. Así que comencemos con este sencillo reloj NTP….
Primero, necesitamos instalar una biblioteca que facilite la comunicación con los servidores NTP.
github.com/arduino-libraries/NTPClient (esta biblioteca probablemente esté en el administrador de la biblioteca)
¿Se saltó el paso 3 y no está seguro de cómo instalar las bibliotecas (?) Mejor vuelva atrás y lea el paso 3:-)
Debes ir a este sitio web y poner la ciudad más cercana a ti que esté en tu zona horaria.
www.epochconverter.com/timezones
Cuando presiones Intro, verás "Resultados de conversión", y en los resultados obtendrás tu compensación (diferencia con GMT / UTC) en segundos (para mí, eso es -14400).
En el boceto dfrobot_firebeetle_led_matrix_ntp_clock en la línea 66, verá:
#define TIMEOFFSET -14400 // Encuentra tu zona horaria fuera de conjunto aquí https://www.epochconverter.com/timezones OFF Establecer en segundos # define AMPM 1 // 1 = AM PM hora, 0 = MILITAR / 24 HR Hora
reemplace -14400 con su compensación. La siguiente línea verá AMPM 1; esto hará que el reloj muestre la hora en AM / PM; si prefiere verlo en 24 horas, haga que el uno sea cero.
A continuación, cargue el boceto en su tablero, conéctese al punto de acceso (administrador de wifi) e ingrese los detalles de su wifi. Si ya ha hecho esto, debería ver "conectado" desplazarse por la pantalla y unos segundos más tarde debería ver la hora.
Eso es todo por este proyecto: simple y fácil de usar…..
(Posibles mejoras: mostrar el mes, el día y el año, configurar un timbre y alarmas; generalmente controle lo que ve a través de una página web. Esta idea requeriría una gran reescritura del simple boceto actual)
Listo para otro proyecto simple: muestra dónde está la ISS, pasa las predicciones y cuántas personas hay en el espacio. (PD: este boceto usa una página web para controlar lo que se muestra)…..
Paso 6: Proyecto 2: Pantalla de predicción de pase de ISS,
Proyecto 2: Pantalla de predicción de pases de ISS, este proyecto utiliza el segundo núcleo del procesador. Mostrará qué tan cerca (en millas) está la ISS, cuándo esperar el próximo pase de la ISS en su ubicación (en hora UTC) y, opcionalmente, cuántas personas hay en el espacio. Dado que gran parte de esta información no cambia con frecuencia, usamos el segundo núcleo para verificar solo las actualizaciones de las predicciones de pases, o cuántas personas hay en el espacio cada 15 minutos. Podemos evitar demasiadas llamadas API al servidor de esta manera. Este proyecto es un poco más complicado, pero sigue siendo bastante fácil de hacer.
Este proyecto se basa en uno de mis proyectos anteriores que se puede encontrar aquí:
(Un sistema de notificación ISS simple) En eso usé un ESP8266 con una pantalla OLED integrada (D-Duino). En su mayor parte, este proyecto solo usa un sistema de visualización diferente, lo amplié para que pueda cambiar lo que desea ver sobre la marcha a través de una página web. Entonces empecemos….
La mayor parte del crédito por la facilidad de uso va a https://open-notify.org, que tiene una API muy simple y fácil de usar. La API de notificación abierta tiene tres cosas que se pueden mostrar, ubicación de la ISS en latitud y longitud, predicciones de paso basadas en una latitud y longitud determinadas. Y finalmente cuántas personas (y sus nombres) hay en el espacio.
Necesitaremos instalar otra biblioteca: la biblioteca ArduinoJson.
github.com/bblanchon/ArduinoJson
También necesitamos TimeLib.h pero no estoy seguro de dónde lo obtuve o si está incluido en el IDE (lo siento)….
Entonces, ¿por qué predecir dónde estará la ISS? La ISS contiene varios equipos de radioaficionados, y cuando está "por encima", un operador de radioaficionado puede hacer contacto con la ISS utilizando algunas radios muy simples (y baratas). Incluso lo he hecho mientras estaba en movimiento (conduciendo en el coche). Realmente no necesitas mucho para que esto funcione. Lo único que necesita es saber dónde está. Y apuntar la antena en su dirección general ayuda.
Las líneas 57, 58, 59 son algunas variables de visualización: si están configuradas en 1, verá una pantalla, si están configuradas en 0 (cero), no verá una pantalla. (Estas variables se pueden establecer en el boceto o actualizar desde una página web que crea el escarabajo de fuego; más sobre eso más adelante).
int locDis = 1; // Mostrar ubicación de ISSint pasDis = 0; // Mostrar predicciones de pases int pplDis = 1; // Mostrar personas en el espacio
por lo que locDis mostrará la ubicación de la ISS en latitud y longitud; también muestra a cuántas millas se encuentra.
pasDis obtendrá las predicciones de pases de open-notify.org y las mostrará.
y finalmente, pplDis mostrará los nombres y cuántas personas hay en el espacio; esto puede ser muy largo, no
cambiar a menudo tampoco. (puedes cambiarlos o dejarlos, es totalmente opcional)
También necesitamos conocer nuestra latitud y longitud y ponerlas en el boceto.
No es necesario que sea una latitud o una longitud precisas, puede ser el centro de tu ciudad o solo un poco. La huella de la ISS es amplia mientras está por encima de la cabeza, y se pueden cubrir cientos (o miles) de millas, por lo que estar un poco desviado en su lat / long no será un factor decisivo (la mayoría de las veces), la comunicación a más de 500 millas es bastante común.
Si no conoce su latitud y longitud, este sitio web puede ayudarlo.
www.latlong.net Cerca de la línea 84 del boceto, verá algo como esto:
// Encuentra tu latitud y longitud aquí // https://www.latlong.net/ float mylat = 39.360095; flotador mylon = -84.58558;
Eso debería ser todo lo que hay que cambiar. Cargue el boceto y conecte el Firebeetle a Internet; debería ver la ubicación de la ISS en lat / long y cuántas millas se encuentra (recuerde que será una distancia aproximada. La ISS se mueve muy rápido y para cuando finaliza la visualización, la ISS se ha movido muchas millas de donde estaba). También deberías ver a las personas en el espacio. (SI no cambió la variable anterior).
Estamos utilizando el segundo núcleo del ESP32 para ejecutar un sitio web, el uso del sitio nos da control sobre lo que se muestra en la matriz de LED. Debería ser bastante intuitivo sobre cómo funciona, una sección muestra lo que está activado para la visualización, otra sección tiene botones "sí" "no"; al hacer clic en "sí" significa que desea verlo, el "no" significa don ' lo demuestre. También debería ver que la sección superior cambia según los botones.
Lo único que no es tan sencillo aquí es cómo encontrar la dirección IP del Firebeetle; desafortunadamente no pude encontrar una buena manera de encontrarlo, así que solo usé la consola serial del IDE para mostrar eso (9600 baudios).
Abra la consola y debería ver la dirección IP. (ábralo antes de recibir el mensaje de conexión) - mi otra opción fue mostrarlo en la matriz de LED una vez justo al inicio - decidí no hacerlo porque es posible que no esté mirando la hora y se lo perderá. Había considerado enviar un mensaje sms, o algo así, pero al final lo mantengo simple. (También intenté asignar una IP / puerta de enlace / etc.estática, no pude hacer que funcionara correctamente con el administrador de wifi; el código todavía está en el boceto, así que si alguien lo averigua, avíseme)
El boceto también avanza en FreeRTOS integrado en el núcleo ESP32: tenemos una tarea que se ejecuta cada 15 minutos aproximadamente, lo que hace es actualizar las predicciones de pases, así como las personas en el espacio. Como dije anteriormente, las personas en el espacio no cambian tanto, por lo que probablemente podría trasladarse a otra tarea y tal vez ejecutarse una vez cada 12 horas (o 6 horas), pero esto funciona y mantiene las cosas simples.
Para aquellos que no saben, FreeRTOS es una forma de permitir que un microcontrolador de un solo núcleo ejecute múltiples tareas
Normalmente, debe incluir algunas bibliotecas y otras cosas para que funcione, sin embargo, está integrado en el núcleo del ESP32, lo que hace que el ESP32 sea un dispositivo muy poderoso. para obtener más información sobre FreeRTOS
freertos.org/
MEJORAS: hay una serie de cosas que se pueden mejorar para este proyecto, y casi todos los días pienso en algo que se podría hacer un poco diferente, cambiar o agregar.
Y en el directorio de más ejemplos del repositorio, puede ver algunas de las cosas anteriores / diferentes en las que pensé: algunas de estas no funcionaron, otras simplemente cambiaron y algunas se incluyeron en el boceto actual.
* En un momento intenté agregar un neopixel a la pantalla para que se pareciera un poco más a mi proyecto anterior; nunca logré que funcionara del todo bien (encontré que era un problema de energía que no había considerado). trabajando en una forma de mejorar esta idea *
Mientras escribía este paso, pensé, tal vez pueda agregar una forma de actualizar su latitud y longitud en el sitio web; de esa manera, el boceto nunca necesitaría ser modificado, también pensaré en este un poco más.
Una forma mejorada de obtener la dirección IP es otra cosa que me gustaría hacer (todavía estoy pensando en eso también)
Pasemos a nuestro próximo proyecto…..
Paso 7: Proyecto 3: un letrero de mensaje en movimiento simple usando MQTT
"cargando =" perezoso "" cargando = "perezoso"
Así que resulta que la biblioteca puede mostrar imágenes (aunque por alguna razón esa función parece ser "privada"), bueno, para los siguientes bocetos modifiqué la biblioteca una vez más e hice de drawImage una función pública.
Esta vez, puse la biblioteca modificada en el directorio de bocetos, por lo que no es necesario volver a instalar la biblioteca, el boceto se mira a sí mismo primero, luego se buscará en el directorio de la biblioteca, ¡así que estamos bien!
*** Estoy planeando enviar este cambio a DFRobot, ya que es realmente genial y agradable poder hacer este tipo de bocetos ***
Boceto de imágenes de matriz de LED, aquí estaba primero tratando de averiguar qué quería la biblioteca y qué funcionaría y no funcionaría, con diversos grados de éxito. Descubrí que las imágenes de 8x8 funcionan mejor, pero también puedes hacer que otras funcionen. También encontré algunos editores de matrices led en línea, algunos funcionan mejor que otros.
xantorohara.github.io/led-matrix-editor/ - parece funcionar bien, crea imágenes de 8x8 y las quiere como matrices de bytes.
www.riyas.org/2013/12/online-led-matrix-fo… este funciona bien y tiene la capacidad de hacer pantallas más grandes que 8x8, la pantalla parece estar colocada de lado con esta pantalla sin emabargo. Las matrices de bytes parecen funcionar mejor aquí. Lo usé para hacer los "invasores espaciales" que se ven en el video de arriba.
Entonces, cómo funciona esto, drawImage (byte constante * img, uint8_t width_t, uint8_t height_t, int8_t x, int8_t y, int img_offset);
variable de matriz de bytes de imagen, el ancho de la imagen (8), la altura de la imagen (8), la posición inicial en la pantalla x (0), y (0) generalmente, y un número de desplazamiento, que no soy 100% seguro de lo que hace, así que la mayoría de las veces lo dejé en cero.
En el boceto Imágenes de matriz de LED, hay 8 matrices de bytes diferentes, con tres métodos diferentes también.
- los fuegos artificiales son los primeros arreglos, honestamente, no estoy seguro de cómo funciona este, pero funciona.
a continuación hay una boca: esto realmente no funciona del todo bien, la boca está colocada en el camino equivocado para una, y tratar de hacer cambios solo lo empeora. (aprender qué funciona y qué no es la mitad de la diversión)
Seguido por el primer marioImg - esto es demasiado grande para la pantalla, y creo que aquí es donde entra en juego el desfase - lo usé aquí, y puedes ver el frente de mario, si cambias el desfase a 1 tú ' Veré la espalda de él. (Realmente no puedo decirte por qué o qué hace el desplazamiento. Parece cambiar la imagen, pero por qué 2 la cambia para que puedas ver el frente de él y por qué 1 cambia la otra dirección, no puedo decirte)
IMÁGENES: la matriz de bytes es un signo @ que hice; se parece a lo que hice usando la herramienta en
La matriz de bytes pic1 también se parece a lo que estaba tratando de hacer, solo que es más pequeña de lo que intentaba; no puedo decir qué es, pero puedo decir que en general se parece a lo que estaba haciendo en el editor.
mario2Img: esta es mi propia versión del Mario más grande hecho para un tamaño de pantalla de 8x8, y hay uno o dos píxeles fuera de lugar (mi culpa, no las pantallas) parece un Mario pequeño (más o menos).
invader1 e invader2: ambos son mi idea para un invasor espacial. resultaron bastante buenos, y al poner las imágenes una encima de la otra, puedo crear el efecto de los pies en movimiento.
Hay dos bocetos de fuegos artificiales en el directorio, cada uno es un poco diferente y vale la pena probarlo.
Uno tiene los fuegos artificiales moviéndose por la pantalla, así que un poco más / animación diferente… el otro tiene dos fuegos artificiales exhibidos al mismo tiempo
También hay tres bocetos de "invasores", cada uno es un poco diferente, uno tiene al invasor moviéndose por la pantalla y puedes ver cómo lo hice (tal vez haya mejores formas de hacerlo, no lo sé)
Aún más: hay algunos bocetos en el directorio de prueba del repositorio; la mayoría de ellos no funcionaron como yo quería, o eran ideas que quería hacer, pero no funcionaron como quería. Los dejé porque alguien tuvo algunas ideas * (hice un pequeño "escudo" con un píxel WS2812 para usarlo con la pantalla ISS, pero lo conecté a la línea 3v y no tenía suficiente potencia con la matriz LED funcionando también, el píxel funcionó bien, sin la matriz LED, así que todavía hay algo que podría hacer con él) *
También hay un directorio llamado "Más ejemplos": son variaciones de algunos de los bocetos del proyecto, ya sea que se agregó o eliminó algo, o se modificó de alguna manera. Para estos, funcionan, simplemente no son el proyecto final. Así que los dejé de nuevo, alguien podría sacarles algo útil. (Quizás)
Espero que hayas disfrutado de este instructivo tanto como yo disfruté haciendo estos proyectos:-)
Paso 11: Vínculos…
Este proyecto fue patrocinado y apoyado por DF Robot. Utilice los enlaces a continuación para los productos:
Firebeetle ESP32 -
Matriz LED 24x8 con cubierta Firebeetle -
Mi repositorio de código:
Si encuentra este o alguno de mis proyectos útil o agradable, por favor apóyenme. Todo lo que consigo se destina a comprar más piezas y hacer más / mejores proyectos.
www.patreon.com/kd8bxp
Biblioteca NTPClient
ArduinoJson.h
Biblioteca meteorológica ESP8266
Biblioteca Json-Streaming-Parser
Recomendado:
Matriz de puntos de reloj inteligente IoT Use Wemos ESP8266 - Matriz ESP: 12 pasos (con imágenes)
Matriz de puntos del reloj inteligente de IoT Use Wemos ESP8266 - Matriz de ESP: haga su propio reloj inteligente de IoT que pueda: Mostrar el reloj con un hermoso icono de animación Mostrar Recordatorio-1 a Recordatorio-5 Mostrar Calendario Mostrar tiempos de oración musulmanes Mostrar información meteorológica Mostrar noticias Mostrar consejos Mostrar Pantalla de tasa de Bitcoin
Proyectos Arduino con panel LED RGB 16x16: 5 pasos (con imágenes)
Proyectos Arduino de panel LED RGB 16x16: Hola a todos, estoy publicando este proyecto porque me gustaría que todos tuvieran un lugar sencillo para jugar con uno de estos fantásticos paneles LED RGB 16x16. Tomé ideas de otros proyectos y las modifiqué para este proyecto. Te lo dá
Insane Electric Longboard Budet con cubierta de fibra de carbono: 6 pasos (con imágenes)
Insane Electric Longboard Budet con cubierta de fibra de carbono: oye, antes de hablar sobre mí y por qué decidí emprender este viaje, me gustaría decirte que por favor mira mi video para ver un montaje de conducción épico y mis prácticas de fabricación, lo más importante, suscríbete. realmente ayudará a mi curso universitario, porque
¡10 proyectos básicos de Arduino para principiantes! ¡Realice al menos 15 proyectos con un solo tablero !: 6 pasos
¡10 proyectos básicos de Arduino para principiantes! ¡Realice al menos 15 proyectos con una sola placa !: Proyecto Arduino & Tablero de tutoriales; Incluye 10 proyectos básicos de Arduino. Todos los códigos fuente, el archivo Gerber y más. ¡Sin SMD! Soldadura fácil para todos. Componentes fáciles de quitar y reemplazar. Puedes realizar al menos 15 proyectos con una sola bo
Cubierta giratoria de metacrilato para bricolaje: 6 pasos (con imágenes)
Cubierta giratoria de metacrilato de bricolaje: Entonces, saqué mi viejo vinilo