Reloj analógico, digital y termómetro en LCD de 128x64
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
|
Acerca de este proyecto
En la página web de arduinoecia se presenta el reloj Arduino con pantalla gráfica LCD de 128x64, un potenciómetro para ajustar el contraste de la pantalla, el módulo DS3231 RTC y un pulsador. El módulo RTC está conectado al Arduino en los pines A4 (SDA) y A5 (SCL). El botón está conectado al pin digital 3, con la resistencia pull-up interna de Arduino habilitada a través del software. El programa usa algunas bibliotecas que tendrás que instalar antes de compilar. Descomprima las bibliotecas y colóquelas dentro de la carpeta BIBLIOTECAS del IDE de Arduino.
El programa tiene dos pantallas:la primera (pantalla_1), muestra el reloj analógico, el reloj digital, así como la fecha y temperatura actual.
La segunda pantalla (screen_2) muestra el reloj digital, el día de la semana, la fecha y la información de temperatura actual, la temperatura mínima y la temperatura máxima. Las pantallas se seleccionan presionando el pulsador, conectado al pin digital 3.
Para configurar la fecha y la hora del módulo RTC DS3231, use el monitor en serie e ingrese la información en formato de año, mes, día, hora, minuto y segundo.
Si escribió la información correctamente, se mostrará el mensaje "".
Código
- código
- bibliotecas
código Arduino
// Programa:Display LCD 128x64 e RTC DS3231 // Autor:Arduino e Cia # include#include #include #include #include // Una linha abaixo define como conexoes do display e deve ser // ajustada conforme o modelo utilizadoU8GLIB_ST7920_128X64_1X u8g (6, 5, 4, 7); // Habilitar, RW, RS, RESETint X2 =0; int Y2 =0; int X3 =0; int Y3 =0; float angulo =0; int posicao =0; int posicaoh =0; int =0; int min_temp temperatura =500; int max_temp =-500; int ScreenWith =128; int ScreenWithC =96; int ScreenHeight =64; int ScreenHeightC =32; #define botao 3int estado_botao =0; char * dia_da_semana [] ={"Sun", "Mon "," Mar "," Mié "," Jue "," Vie "," Sáb "}; void tela_1 () {u8g.drawRFrame (0, 0, 128, 64, 3); // Mostra temperatura u8g.setPrintPos (20, 30); u8g.print (temperatura); u8g.drawStr (42, 30, "C"); u8g.drawCircle (37, 34, 2); mostra_relogio_digital (); // Mostra relogio analogico fundo_relogio (); // Atualiza Ponteiro de horas desenha_ponteiro (hora () - 1, 12.0, 10); // Atualiza Ponteiro de minutos desenha_ponteiro (minuto () - 5, 60.0, 19); // Atualiza Ponteiro de segundos desenha_ponteiro (second () - 5, 60, 21);} void tela_2 () {u8g.drawRFrame (0, 0, 128, 64, 3); u8g.drawRFrame (68, 4, 55, 56, 2); mostra_relogio_digital (); u8g.setFont (u8g_font_5x8); u8g.drawStr (78, 35, "MIN"); u8g.drawStr (78, 53, "MAX"); u8g.setFont (u8g_font_6x13); u8g.setPrintPos (25, 41); u8g.print (dia_da_semana [(día de la semana () - 1)]); // Mostra temperatura atual u8g.setPrintPos (83, 19); u8g.print (temperatura); u8g.drawStr (105, 19, "C"); u8g.drawCircle (100, 12, 2); // Mostra temperatura minima u8g.setPrintPos (98, 36); u8g.print (min_temp); u8g.drawCircle (113, 29, 2); // Mostra temperatura máxima u8g.setPrintPos (98, 54); u8g.print (max_temp); u8g.drawCircle (113, 47, 2);} void desenha_ponteiro (float valor, float rotacao, int Radius) {angulo =valor * 2.0 * 3.1415 / rotacao - 1,5707; X2 =Pantalla con C + Radio * cos (ángulo); Y2 =ScreenHeightC + Radius * sin (ángulo); u8g.drawLine (ScreenWithC, ScreenHeightC, X2, Y2);} void fundo_relogio () {u8g.drawCircle (ScreenWithC, ScreenHeightC, 27); u8g.drawCircle (ScreenWithC, ScreenHeightC, 1); u8g.setFont (u8g_font_6x13); u8g.setFontPosTop (); u8g.drawStr (90, 9, "12"); u8g.drawStr (114, 25, "3"); u8g.drawStr (94, 44, "6"); u8g.drawStr (74, 25, "9"); for (int traco_minuto =0; traco_minuto <12; traco_minuto ++) {// Desenha linhas relogio analogico angulo =traco_minuto / 12.0 * 2 * 3.1415; X2 =ScreenWithC + 25 * cos (angulo); Y2 =ScreenHeightC + 25 * sin (angulo); X3 =ScreenWithC + 25 * cos (angulo); Y3 =ScreenHeightC + 25 * sin (angulo); u8g.drawLine (X2, Y2, X3, Y3); }} void mostra_relogio_digital () {// Muestra un dato u8g.setFont (u8g_font_5x8); u8g.setPrintPos (8, 55); u8g.print (día ()); u8g.drawStr (19, 55, "/"); u8g.setPrintPos (24, 55); u8g.print (mes ()); u8g.drawStr (35, 55, "/"); u8g.setPrintPos (41, 55); u8g.print (año ()); // Mostra hora e minutos u8g.drawRBox (3, 4, 62, 21,2); u8g.setColorIndex (0); u8g.setFont (u8g_font_fub17); u8g.drawStr (29,21, ":"); // Acerta a posicao do digito caso a hora // seja menor do que 10 if (hour () <10) {u8g.drawStr (3,23, "0"); posicaoh =16; } else posicaoh =3; u8g.setPrintPos (posicaoh, 23); u8g.print (hora ()); // Acerta a posicao do digito caso o minuto // seja menor do que 10 if (minute () <10) {u8g.drawStr (38,23, "0"); posicao =51; } else posicao =38; u8g.setPrintPos (posicao, 23); u8g.print (minuto ()); u8g.setColorIndex (1);} configuración vacía () {pinMode (3, INPUT_PULLUP); Serial.begin (9600); if (u8g.getMode () ==U8G_MODE_R3G3B2) u8g.setColorIndex (255); // blanco else if (u8g.getMode () ==U8G_MODE_GRAY2BIT) u8g.setColorIndex (3); // intensidad máxima else if (u8g.getMode () ==U8G_MODE_BW) u8g.setColorIndex (1); // píxel en setSyncProvider (RTC.get); Serie < =max_temp) {max_temp =temperatura; } if (temperatura <=min_temp) {min_temp =temperatura; } tiempo estático_t tLast; time_t t; tmElements_t tm; // Verifica se foi setado um novo horario // Formato:ano, mes, dia, hora, minuto, segundo if (Serial.available ()> =12) {int y =Serial.parseInt (); if (y> =100 &&y <1000) Serial < =1000) tm.Year =CalendarYrToTm (y); else // (y <100) tm.Year =y2kYearToTm (y); tm.Month =Serial.parseInt (); tm.Day =Serial.parseInt (); tm.Hour =Serial.parseInt (); tm.Minute =Serial.parseInt (); tm.Second =Serial.parseInt (); t =makeTime (tm); RTC.set (t); setTime (t); Serial < 0) Serial.read (); }} t =ahora (); if (t! =tLast) {tLast =t; printDateTime (t); Serial < 0) Serial < bibliotecas Arduino
Sin vista previa (solo descarga).Esquemas
Elevador de servicio accionado por Arduino IoT simplificado con UNO, ESP-01, ThingSpeak y MIT App Inventor
Proceso de manufactura
- Señales analógicas y digitales
- Tipos de sensores analógicos y digitales con aplicaciones
- Reloj de visión pov de Arduino
- Reloj maestro
- Animación LCD y juegos
- Arduino Temp. Monitor y reloj en tiempo real con pantalla 3.2
- TM1637 Reloj digital con configuración de hora y funcionalidad de alarma
- Voltímetro de bricolaje con Arduino y una pantalla Nokia 5110
- BME280 Temperatura, humedad y presión en la pantalla Nextion
- Sonda usando arduino y visualización en procesamiento IDE
- Reloj despertador simple con DS1302 RTC