Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Arduino Nano Clock con matriz de LED de 4x64 (nueva versión)

Componentes y suministros

Arduino Nano R3
× 1
matriz de LED
× 1
Foto resistor
× 1
Breadboard (genérico)
× 1
DS3231
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto


Leer la pantalla de un reloj en una habitación a varios metros requiere una pantalla de matriz LED de este tipo.

Habiendo comprado a buen precio una pantalla de 4 celdas, busqué en Hackster proyectos disponibles:hay varios, para Arduino Nano. Si desea ver horas, minutos y segundos simultáneamente:solo funcionan unos pocos proyectos, porque necesita dígitos más pequeños que los ampliamente disponibles con 5x7 píxeles por dígito. Una opción es usar la biblioteca MD_Parola, pero el tamaño del código es demasiado grande para un reloj simple. La otra opción probada fue la biblioteca Max72xxPanel, pero esta es demasiado antigua y llama a otras bibliotecas. Finalmente, el proyecto se basa en la biblioteca de interfaz básica MD_MAX722XX, incluida en todas las demás.

Los comentarios de este sitio me hicieron revisar los aspectos del hardware y el código.

- Hay muchas bibliotecas llamadas DS3231. Yo uso este:http://www.rinkydinkelectronics.com/library.php?id=73

Compatibilidad con la biblioteca Arduino / chipKit para el reloj en tiempo real DS3231 I2C Copyright (C) 2015 Rinky-Dink Electronics, Henning Karlsen. Todos los derechos reservados

- Primero:la pantalla de matriz LED. Hay varios modelos en el mercado, por lo que es muy probable que la pantalla muestre cosas extrañas después de cargar este código. Solución:cargue este ejemplo de la biblioteca "MD_MAX72xx_lib.h":"MD_MAX72xx_HW_Mapper.ino" y busque su modelo de hardware. En mi código se definió el modelo:#define HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW, ¡pero es posible que esto no funcione hasta que configure el modelo correcto!

- ¿Los pequeños segundos agradables no aparecieron últimamente? Ahora (v2), las fuentes para estos segundos están incluidas en el código, por lo que no es necesario cambiar ninguna otra biblioteca.

- Se produjo una larga lista de advertencia de compilación debido a las actualizaciones de Arduino. Ahora, los meses están en una matriz de caracteres bidimensional y ya no usan un puntero. Cualquier otra advertencia proviene de la biblioteca DS3231.h, pero puede ignorarse.

- ¡Los puntos parpadeantes ahora son solo 2 puntos! Los segundos exactos se muestran, usando mis fuentes de 3x5, después de "hh:mm". Además, los puntos de la columna ":" parpadean casi dos veces por segundo, ¡solo para mostrar que está vivo!

- Responder una solicitud:el tiempo se muestra durante 53 segundos cada minuto y durante los últimos 7 segundos se muestran la fecha y la temperatura.

- El día de la semana también se puede mostrar, si descomenta dos líneas en el bucle (). En este caso, es posible que prefiera reducir el intervalo de 53 segundos a 51.

- Si prefiere el formato de 12 horas, consulte una de mis respuestas anteriores.

- El tiempo de RTC se puede configurar en el Arduino Serial Monitor escribiendo en el área de entrada DD / MM / YYYY hh:mm:ss (no olvide el espacio entre) y presione Enter / Enviar. Esto se puede hacer siempre que se conecte un cable USB y el Monitor en serie funcione (COM y velocidad en baudios correctos).

El nuevo código usa 13558 bytes (44%) y 372 bytes (18%) para variables, ¡así que es un poco más corto!

La fecha se muestra como "dd Mon" y la temperatura ambiente en grados. Celsius (estimado usando el sensor interno RTC) se muestra en una página separada. El brillo está controlado por una fotorresistencia. Sin embargo, el código funciona incluso sin sensor de luz.

¡Gracias por su interés, mostrado por el botón "respeto"!

Código

  • Versión ANTIGUA - Reloj Arduino Nano Dot Matrix
  • Nueva versión (v2) - Reloj Arduino Nano Dot Matrix
Versión ANTIGUA - Reloj Arduino Nano Dot Matrix Arduino
Dado que muchas bibliotecas cambiaron desde la versión inicial, este código está obsoleto. Utilice la nueva versión Todas las conexiones se describen en el código. Para fuentes pequeñas, cambie algunas líneas en MD_MAX72xx_font.cpp, como se explica en el código.
 / * ADVERTENCIA:El código inicial ahora está obsoleto. Utilice el nuevo (vesion 2) * Reloj Arduino Nano DS3231 con LED Matrix 4x (8x8) SPI * * Arduino Nano 5V lógica - 32kB prog. espacio * Herramientas:Tablero:Arduino Nano; Procesador:ATmega328P (Old Bootloader) !! * LED Matrix 4x (8x8) SPI con conector en el lado derecho (último módulo) * https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html? Rmmds =myorder &cur_warehouse =CN * * CONEXIONES:*>> LCD 4x64 -> Arduino Nano:(usando hardware SPI):* 5V -> pin de 5V * GND -> GND pin * CLK_PIN -> 13 // o SCK * DATA_PIN -> 11 // o MOSI * CS_PIN -> 10 // o SS * *>> DS3231 RTC -> Arduino Nano:* SDA (DAT) -> A4 * SCL ( CLK) -> A5 * Inspirado en:1) Reloj Arduino de AnthoTRONICS Última edición:22 de marzo de 2019 * ¡pero sin MD_parola debido a su gran tamaño! Nueva función getdate. * 2) El reloj digital UNO más simple jamás creado por plouc68000:* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1* 3) LEDDotMatrixClock.ino de Leonardo Sposina, pero aquí sin "Max72xxPanel.h" * https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino* Sin usar Max72xxPanel.h, pero todavía se utilizan dígitos de tamaño pequeño. Código de tamaño reducido aquí. * Reemplazar en la biblioteca MD_MAX72XX / src / MD_MAX72xx_font.cpp:* 1) #define USE_NEW_FONT 1 * 2) fuentes # 148 ... 158 deben reemplazarse con fuentes 3x5:3, 248, 136, 248, / / 48 0 3, 144, 248, 128, // 49 1 3, 200, 168, 184, // 50 2 3, 136, 168, 248, // 51 3 3, 112, 72, 224, // 52 4 3, 184, 168, 232, // 53 5 3, 248, 168, 232, // 54 6 3, 8, 232, 24, // 55 7 3, 248, 168, 248, // 56 8 3 , 184, 168, 248, // 57 9 1, 80, // 58:* * proyecto:13790 bytes (44%); variables 361 bytes (17%) * Autor:MVP https://www.hackster.io/MVP*/#include  #include "DS3231.h" #include "MD_MAX72xx_lib.h" // # include " Font_Data.h "DS3231 rtc (SDA, SCL); // Byte de reloj de tiempo real LDR_PIN =A2; // Pin del sensor LDR # define MAX_DEVICES 4 // Define los pines # define CLK_PIN 13 // o SCK # define DATA_PIN 11 // o MOSI # define CS_PIN 10 // o SS # define HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW # define USE_NEW_FONT 1 # define BUF_SIZE 20 // tamaño de búfer de texto # define CHAR_SPACING 1 // píxeles entre caracteres char buf [BUF_SIZE], secs [4]; uint8_t puntos; // interfaz de hardware SPI // Max72xxPanel matrix =Max72xxPanel (CS_PIN, H_DISPLAYS, V_DISPLAYS); MD_MAX72XX matrix =MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); const byte WAIT =100; const byte SPACER =1; byte FONT_WIDTH; bool timeset =false; void AdjustClock (String data) {byte _day =data.substring (0,2) .toInt (); byte _month =data.substring (3,5) .toInt (); int _year =data.substring (6,10) .toInt (); byte _hora =data.substring (11,13) .toInt (); byte _min =data.substring (14,16) .toInt (); byte _sec =data.substring (17,19) .toInt (); rtc.setTime (_hora, _min, _sec); rtc.setDate (_day, _month, _year); Serial.println (F (">> ¡Fecha y hora establecida correctamente!")); timeset =true;} byte ledintensitySelect (int light) {byte _value =0; if (claro> =0 &&ligero <=127) {_value =12; } más si (claro> =128 &&ligero <=319) {_value =3; } más si (claro> =320 &&claro <=512) {_value =0; } return _value;}; void printText (uint8_t modStart, uint8_t modEnd, char * pMsg) // Imprime la cadena de texto en los módulos de matriz LED especificados .// El área de mensajes se rellena con columnas en blanco después de la impresión. {uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf [FONT_WIDTH]; int16_t col =((modEnd + 1) * COL_SIZE) - 1; matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::OFF); do // máquina de estado finito para imprimir los caracteres en el espacio disponible {cambiar (estado) {caso 0:// Cargar el siguiente carácter de la tabla de fuentes // si llegamos al final del mensaje, restablecer el puntero del mensaje if (* pMsg =='\ 0') {showLen =col - (modEnd * COL_SIZE); // caracteres de relleno state =2; descanso; } // recupera el siguiente carácter del archivo de fuente showLen =matrix.getChar (* pMsg ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen =0; estado ++; // !! pasar deliberadamente al siguiente estado para comenzar a mostrar el caso 1:// mostrar la siguiente parte de la matriz de caracteres.setColumn (col--, cBuf [curLen ++]); // hecho con carácter de fuente, ahora muestra el espacio entre caracteres if (curLen ==showLen) {showLen =CHAR_SPACING; estado =2; } descanso; caso 2:// estado de inicialización para mostrar columnas vacías curLen =0; estado ++; // pasar por el caso 3:// mostrar el espaciado entre caracteres o el final del relleno del mensaje (columnas en blanco) matrix.setColumn (col--, 0); curLen ++; if (curLen ==showLen) state =0; descanso; predeterminado:col =-1; // esto definitivamente termina el ciclo do}} while (col> =(modStart * COL_SIZE)); matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::ON);} void setup () {pinMode (LDR_PIN, INPUT_PULLUP); Serial.begin (9600); Serial.println (F (">> Arduino 32x8 LED Dot Matrix Clock!")); Serial.println (F (">> ¡Use el formato 
para configurar la fecha y hora del reloj!")); rtc.begin (); matrix.begin (); matrix.clear (); FONT_WIDTH =5 + ESPACIADOR; // El ancho de la fuente es de 5 píxeles matrix.control (MD_MAX72XX ::INTENSITY, 2);; // Use un valor entre 0 y 15 para el brillo} void getDate () // Configuración de la fecha:Código para leer la fecha del reloj {char * months [] ={"Jan", "Feb", "Mar", "Apr", "Mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"}; Cadena dts =rtc.getDateStr (); // Obtener cadena dd / mm / aaaa Cadena dds =dts.substring (0,2); // Extraer la cadena de fecha mms =dts.substring (3,5); // Extraer mes int mm =mms.toInt (); // Convertir al número de mes dds.concat (""); dds.concat (Cadena (meses [mm-1])); // Reconstruir la cadena de fecha como "dd Mmm" dds.toCharArray (buf, sizeof (buf)); // devuelve el búfer} void getHour () // Configuración de la fecha:Código para leer la fecha del reloj {String dts =rtc.getTimeStr (); // Obtener hh:mm:ss string String hhs =dts.substring (0,2); // Extraer hora int hh =hhs.toInt (); // Convertir a número if (hh <10) dots =7; si (hh> 19 &&hh <24) puntos =13; si ((hh> 9 &&hh <20) || (hh ==21)) puntos =11; si (hh ==1) puntos =5; si (hh ==11) puntos =10; // Cadena outmsg =dts.substring (0,5); // Extraer hh:mm (opcional) String outmsg =String (hh); // Extrae h si h <10 outmsg.concat (":"); // agregar:outmsg.concat (dts.substring (3,5)); // agregar mm outmsg.toCharArray (buf, BUF_SIZE);} void showsec () {String dts =rtc.getTimeStr (); // Obtener hh:mm:ss string String scs1 =dts.substring (6,7); Cadena scs2 =dts.substring (7); char sc1 =148 + scs1.toInt (); // Convertir al índice de char char sc2 =148 + scs2.toInt (); // Convertir al índice de char matrix.setChar (6, sc1); matrix.setChar (2, sc2);} bucle vacío () {byte ledIntensity =ledintensitySelect (analogRead (LDR_PIN)); matrix.control (MD_MAX72XX ::INTENSIDAD, ledIntensity);; // Usa un valor entre 0 y 15 para el brillo // Muestra hh:mm de buf getHour (); printText (0, MAX_DEVICES-1, buf); retraso (ESPERA); // Dos puntos parpadeantes:for (uint8_t i =0; i <8; i ++) {matrix.setColumn (MAX_DEVICES * 8-dots, 36); showsec (); retraso (250); matrix.setColumn (MAX_DEVICES * 8 puntos, 0); showsec (); retraso (250); } // Salir desplazándose hacia arriba:for (uint8_t i =0; i <8; i ++) {matrix.transform (MD_MAX72XX ::TSU); retraso (2 * WAIT); retraso (ESPERA); } obtener la fecha(); printText (0, MAX_DEVICES-1, buf); retraso (20 * ESPERA); int temp =rtc.getTemp (); temp =temp-1; // Desplazamiento -1 C String outmsg =String (temp); outmsg.concat ("C"); outmsg.toCharArray (buf, BUF_SIZE); printText (0, MAX_DEVICES-1, buf); retraso (20 * ESPERA); // Configuración de la hora en RTC:if (Serial.available ()> 0 &×et ==false) {adjustClock (Serial.readString ()); }}
Nueva versión (v2) - Reloj Arduino Nano Dot Matrix Arduino
Actualizado de acuerdo con las nuevas bibliotecas.
 / * Reloj Arduino Nano DS3231 con LED Matrix 4x (8x8) SPI * Versión 2 - actualizado 15/05 / 2-21 * Arduino Nano 5V lógica - 32kB prog. espacio * Herramientas:Tablero:Arduino Nano; Procesador:ATmega328P (Old Bootloader) !! * LED Matrix 4x (8x8) SPI con conector en el lado derecho (último módulo) * https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html? Rmmds =myorder &cur_warehouse =CN * * CONEXIONES:*>> LCD 4x64 -> Arduino Nano:(usando hardware SPI):* 5V -> pin de 5V * GND -> GND pin * CLK_PIN -> 13 // o SCK * DATA_PIN -> 11 // o MOSI * CS_PIN -> 10 // o SS * *>> DS3231 RTC -> Arduino Nano:* SDA (DAT) -> A4 * SCL ( CLK) -> A5 * Inspirado en:1) Reloj Arduino de AnthoTRONICS Última edición:22 de marzo de 2019 * ¡pero sin MD_parola debido a su gran tamaño! Nueva función getdate. * 2) El reloj digital UNO más simple jamás creado por plouc68000:* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1* 3) LEDDotMatrixClock.ino de Leonardo Sposina, pero aquí sin "Max72xxPanel.h" * https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino* Sin usar Max72xxPanel.h, pero todavía se utilizan dígitos de tamaño pequeño. Código de tamaño reducido aquí. * * Proyecto:113558 bytes (44%); variables 372 bytes (17%) * Autor:MVP https://www.hackster.io/MVP*/#include  #include "DS3231.h" #include "MD_MAX72xx_lib.h" // # include " Font_Data.h "DS3231 rtc (SDA, SCL); // Byte de reloj de tiempo real LDR_PIN =A2; // Clavija del sensor LDR # define MAX_DEVICES 4 // Defina las clavijas # define CLK_PIN 13 // o SCK # define DATA_PIN 11 // o MOSI # define CS_PIN 10 // o SS // Defina a continuación su modelo de hardware de matriz de LED:// # define HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW # define HARDWARE_TYPE MD_MAX72XX ::FC16_HW # define USE_NEW_FONT 1 # define BUF_SIZE 20 // tamaño del búfer de texto # define CHAR_SPACING 1 // píxeles entre caracteres char buf [BUF_SIZE], secs8_t hh, uh, mm ss, dots; // Definición de las fuentes pequeñas:uint8_t Font3x5 [10] [3] ={{248, 136, 248}, // 48 0 {144, 248, 128}, // 49 1 {200, 168 , 184}, // 50 2 {136, 168, 248}, // 51 3 {112, 72, 224}, // 52 4 {184, 168, 232}, // 53 5 {248, 168, 232 }, // 54 6 {8, 232, 24}, // 55 7 {248, 168, 248}, // 56 8 {184, 168, 248}}; // 57 9char meses [12] [4] ={"Ene", "Feb", "Mar", "Abr", "Mayo", "Jun", "Jul", "Ago", "Sep", " Oct "," Nov "," Dec "}; char * wday; // Interfaz de hardware SPI // Matriz Max72xxPanel =Max72xxPanel (CS_PIN, H_DISPLAYS, V_DISPLAYS); MD_MAX72XX matriz =MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); byte constante =100; const byte SPACER =1; byte FONT_WIDTH; bool timeset =false; void AdjustClock (String data) {byte _day =data.substring (0,2) .toInt (); byte _month =data.substring (3,5) .toInt (); int _year =data.substring (6,10) .toInt (); byte _hora =data.substring (11,13) .toInt (); byte _min =data.substring (14,16) .toInt (); byte _sec =data.substring (17,19) .toInt (); rtc.setTime (_hora, _min, _sec); rtc.setDate (_day, _month, _year); Serial.println (F (">> ¡Fecha y hora establecida correctamente!")); timeset =true;} byte ledintensitySelect (int light) {byte _value =0; if (claro> =0 &&ligero <=127) {_value =12; } más si (claro> =128 &&ligero <=319) {_value =3; } más si (claro> =320 &&claro <=512) {_value =0; } return _value;}; void printText (uint8_t modStart, uint8_t modEnd, char * pMsg) // Imprime la cadena de texto en los módulos de matriz LED especificados .// El área de mensajes se rellena con columnas en blanco después de la impresión. {uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf [FONT_WIDTH]; int16_t col =((modEnd + 1) * COL_SIZE) - 1; matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::OFF); do // máquina de estado finito para imprimir los caracteres en el espacio disponible {cambiar (estado) {caso 0:// Cargar el siguiente carácter de la tabla de fuentes // si llegamos al final del mensaje, restablecer el puntero del mensaje if (* pMsg =='\ 0') {showLen =col - (modEnd * COL_SIZE); // caracteres de relleno state =2; descanso; } // recupera el siguiente carácter del archivo de fuente showLen =matrix.getChar (* pMsg ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen =0; estado ++; // !! pasar deliberadamente al siguiente estado para comenzar a mostrar el caso 1:// mostrar la siguiente parte de la matriz de caracteres.setColumn (col--, cBuf [curLen ++]); // hecho con carácter de fuente, ahora muestra el espacio entre caracteres if (curLen ==showLen) {showLen =CHAR_SPACING; estado =2; } descanso; caso 2:// estado de inicialización para mostrar columnas vacías curLen =0; estado ++; // pasar por el caso 3:// mostrar el espaciado entre caracteres o el final del relleno del mensaje (columnas en blanco) matrix.setColumn (col--, 0); curLen ++; if (curLen ==showLen) state =0; descanso; predeterminado:col =-1; // esto definitivamente termina el ciclo do}} while (col> =(modStart * COL_SIZE)); matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::ON);} void setup () {pinMode (LDR_PIN, INPUT_PULLUP); Serial.begin (9600); Serial.println (F (">> Arduino 32x8 LED Dot Matrix Clock!")); Serial.println (F (">> ¡Use el formato 
para configurar la fecha y hora del reloj!")); rtc.begin (); matrix.begin (); matrix.clear (); FONT_WIDTH =5 + ESPACIADOR; // El ancho de la fuente es de 5 píxeles matrix.control (MD_MAX72XX ::INTENSITY, 2);; // Usa un valor entre 0 y 15 para el brillo rtc.setDOW (); // Requerido para un nuevo RTC} void getDate () // Configuración de la fecha:Código para leer la fecha del reloj {String dts =rtc.getDateStr (); // Obtener cadena dd / mm / aaaa Cadena dds =dts.substring (0,2); // Extraer la cadena de fecha mms =dts.substring (3,5); // Extraer mes int mm =mms.toInt (); // Convertir al número de mes dds.concat (""); dds.concat (Cadena (meses [mm-1])); // Reconstruir la cadena de fecha como "dd Mmm" dds.toCharArray (buf, sizeof (buf)); // devuelve el búfer wday =rtc.getDOWStr (2);} void getHour () // Configuración de la fecha:Código para leer la fecha del reloj {String dts =rtc.getTimeStr (); // Obtener hh:mm:ss string String hhs =dts.substring (0,2); // Extraer la cadena de horas mms =dts.substring (3,5); // Extraer minutos hh =hhs.toInt (); // Convertir a número mm =mms.toInt (); // Convertir a número mm ss =(dts.substring (6,8)). ToInt (); // Extrae segundos como número if (hh> =0 &&hh <10) dots =7; si (hh> 9 &&hh <20) puntos =11; si (hh> 19 &&hh <25) puntos =13; si (hh% 10 ==1) puntos- =2; // Cadena outmsg =dts.substring (0,5); // Extraer hh:mm (opcional) String outmsg =String (hh); // Extrae h si h <10 // outmsg.concat (":"); // añadir:¡¡pero en 2 columnas !! outmsg.concat (char (124)); // agrega 1 columna completa entre los números outmsg.concat (dts.substring (3,5)); // agrega mm outmsg.toCharArray (buf, BUF_SIZE);} // Nueva versión de la función, usando la pequeña fuente incrustada void showsec (uint8_t secs) {uint8_t secs1 =secs% 10; uint8_t segundos2 =segundos / 10; para (uint8_t k =0; k <3; k ++) {matrix.setColumn (MAX_DEVICES * 8-26-k, Font3x5 [secs2] [k]); matrix.setColumn (MAX_DEVICES * 8-30-k, Font3x5 [secs1] [k]); }} bucle vacío () {byte ledIntensity =ledintensitySelect (analogRead (LDR_PIN)); matrix.control (MD_MAX72XX ::INTENSIDAD, ledIntensity);; // Usa un valor entre 0 y 15 para brillo getHour (); // Leer tiempo de RTC printText (0, MAX_DEVICES-1, buf); // Muestra hh | mm de buf matrix.setColumn (MAX_DEVICES * 8-dots, 0); // Borrar el | unsigned long inst =millis (); // marca este momento while (ss <53) {// Los primeros 53 segundos de cada minuto muestran el tiempo while (millis () - inst> 1000) {inst =millis (); ss ++; // Incrementa los segundos showsec (ss); // Mostrar segundos para (uint8_t i =0; i <2; i ++) {matrix.setColumn (MAX_DEVICES * 8-dots, 36); // Parpadeo de dos puntos:delay (240); matrix.setColumn (MAX_DEVICES * 8 puntos, 0); retraso (240); }}} // Entonces "tiempo" se desplaza hacia arriba:for (uint8_t i =0; i <8; i ++) {matrix.transform (MD_MAX72XX ::TSU); retraso (3 * WAIT); } // Escribe la fecha actual:getDate (); printText (0, MAX_DEVICES-1, buf); retraso (20 * ESPERA); // Escriba el día de la semana (si no está comentado):// printText (0, MAX_DEVICES-1, wday); // retraso (20 * ESPERA); // Escribe la temperatura ambiente estimada del sensor RTC int temp =rtc.getTemp (); temp =temp-1; // Desplazamiento -1 C String outmsg =String (temp); outmsg.concat ("C"); outmsg.toCharArray (buf, BUF_SIZE); printText (0, MAX_DEVICES-1, buf); retraso (20 * ESPERA); // Configuración de tiempo en RTC si el monitor Serial está activado en Arduino IDE:if (Serial.available ()> 0 &×et ==false) {adjustClock (Serial.readString ()); }}

Esquemas

Inspirado por Leonardo Sposina, pero #define CS_PIN (Matrix) <--> 10 (Nano)
Los esquemas son CASI los mismos para todos los proyectos de Matrix. Aquí la fotorresistencia es original. Como se menciona en el código:#define CS_PIN (Matrix) <--> 10 (Nano) https://github.com/leonardosposina/arduino-led-dot-matrix-clock

Proceso de manufactura

  1. Reloj Arduino con tiempos de oración islámicos
  2. Arduino Temp. Monitor y reloj en tiempo real con pantalla 3.2
  3. ¡Arduino con Bluetooth para controlar un LED!
  4. Jugando con Nextion Display
  5. Matriz LED + Pantalla de puerta con sensor de movimiento [Arduino Holiday]
  6. Arduino Nano:Controla 2 motores paso a paso con joystick
  7. Reloj Flip Arduino de matriz de un solo LED
  8. Controlar una matriz de LED con Arduino Uno
  9. Contador Geiger de mano con Arduino Nano
  10. Multiplexor de cargador de batería inteligente con pantalla inteligente
  11. Pantalla de temperatura OLED de Arduino con reloj en tiempo real