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

Reloj analógico, digital y termómetro en LCD de 128x64

Componentes y suministros

Arduino Nano R3
× 1
Maxim Integrated DS3231M - ± 5ppm, I2C Real-Time Clock
× 1
Potenciómetro de una sola vuelta - 10k ohmios
× 1
Interruptor de botón, momentáneo
× 1
Pantalla gráfica LCD de 128x64
× 1

Herramientas y máquinas necesarias

Soldador (genérico)

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


Proceso de manufactura

  1. Señales analógicas y digitales
  2. Tipos de sensores analógicos y digitales con aplicaciones
  3. Reloj de visión pov de Arduino
  4. Reloj maestro
  5. Animación LCD y juegos
  6. Arduino Temp. Monitor y reloj en tiempo real con pantalla 3.2
  7. TM1637 Reloj digital con configuración de hora y funcionalidad de alarma
  8. Voltímetro de bricolaje con Arduino y una pantalla Nokia 5110
  9. BME280 Temperatura, humedad y presión en la pantalla Nextion
  10. Sonda usando arduino y visualización en procesamiento IDE
  11. Reloj despertador simple con DS1302 RTC