Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Аналоговые, цифровые часы и термометр на ЖК-дисплее 128x64

Компоненты и расходные материалы

Arduino Nano R3
× 1
Maxim Integrated DS3231M - ± 5ppm, часы реального времени I2C
× 1
Однооборотный потенциометр - 10 кОм
× 1
Кнопочный переключатель, мгновенный
× 1
графический ЖК-дисплей 128x64
× 1

Необходимые инструменты и машины

Паяльник (общий)

Об этом проекте

На веб-странице Arduinoecia представлены часы Arduino с графическим ЖК-дисплеем 128x64, потенциометр для регулировки контрастности дисплея, модуль DS3231 RTC и кнопка. Модуль RTC подключается к Arduino на выводах A4 (SDA) и A5 (SCL). Кнопка подключена к цифровому выводу 3, при этом внутренний подтягивающий резистор Arduino активируется через программное обеспечение. Программа использует некоторые библиотеки, которые вам необходимо установить перед компиляцией. Разархивируйте библиотеки и поместите их в папку LIBRARIES IDE Arduino.

Программа имеет два экрана:первый (screen_1) показывает аналоговые часы, цифровые часы, а также текущую дату и температуру.

Второй экран (screen_2) показывает цифровые часы, день недели, дату и информацию о текущей температуре, минимальную и максимальную температуру. Экраны выбираются нажатием кнопки, подключенной к цифровому контакту 3.

Чтобы установить дату и время модуля RTC DS3231, используйте монитор последовательного порта и введите информацию в формате года, месяца, дня, часа, минуты, секунды.

Если вы ввели информацию правильно, отобразится сообщение "".

Код

  • код
  • библиотеки
код Arduino
 // Программа:Display LCD 128x64 e RTC DS3231 // Автор:Arduino e Cia # include  #include  #include  #include  #include  // Линия abaixo, определенная как conexoes, отображает e deve ser // ajustada conorme o modelo utilizadoU8GLIB_ST7920_128X64_1X u8g (6, 5, 4, 7); // Включить, RW, RS, RESETint X2 =0; int Y2 =0; int X3 =0; int Y3 =0; float angulo =0; int posicao =0; int posicaoh =0; int temperatura =0; int min_temp =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 [] ={"Солнце", "Пн. "," Вт "," Ср "," Чт "," Пт "," Сб "}; void tela_1 () {u8g.drawRFrame (0, 0, 128, 64, 3); // Самая температура u8g.setPrintPos (20, 30); у8г.принт (температура); u8g.drawStr (42, 30, «С»); u8g.drawCircle (37, 34, 2); mostra_relogio_digital (); // Mostra relogio analogico fundo_relogio (); // Atualiza Ponteiro de horas desenha_ponteiro (hour () - 1, 12.0, 10); // Atualiza Ponteiro de minutos desenha_ponteiro (минута () - 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, "МИН"); u8g.drawStr (78, 53, «МАКС»); u8g.setFont (u8g_font_6x13); u8g.setPrintPos (25, 41); u8g.print (dia_da_semana [(будний день () - 1)]); // Самая высокая температура u8g.setPrintPos (83, 19); у8г.принт (температура); u8g.drawStr (105, 19, «С»); u8g.drawCircle (100, 12, 2); // Минимальная температура u8g.setPrintPos (98, 36); u8g.print (min_temp); u8g.drawCircle (113, 29, 2); // Максимальная температура 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 =ScreenWithC + Radius * cos (англ.); Y2 =ScreenHeightC + Radius * sin (angulo); 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 =Экран с C + 25 * cos (англо); Y2 =ScreenHeightC + 25 * sin (angulo); X3 =Экран с C + 25 * cos (англ.); Y3 =ScreenHeightC + 25 * sin (angulo); u8g.drawLine (X2, Y2, X3, Y3); }} void mostra_relogio_digital () {// Большинство данных u8g.setFont (u8g_font_5x8); u8g.setPrintPos (8, 55); u8g.print (день ()); u8g.drawStr (19, 55, "/"); u8g.setPrintPos (24, 55); u8g.print (месяц ()); u8g.drawStr (35, 55, "/"); u8g.setPrintPos (41, 55); u8g.print (год ()); // Самые лучшие минуты u8g.drawRBox (3, 4, 62, 21,2); u8g.setColorIndex (0); u8g.setFont (u8g_font_fub17); u8g.drawStr (29,21, ":"); // Проверить позицию по цифре, если я хочу // изменить позицию по очереди 10 if (hour () <10) {u8g.drawStr (3,23, "0"); posicaoh =16; } else posicaoh =3; u8g.setPrintPos (posicaoh, 23); u8g.print (час ()); // Проверить позицию по цифре в минуту // перейти по ссылке 10 if (minute () <10) {u8g.drawStr (38,23, "0"); posicao =51; } else posicao =38; u8g.setPrintPos (posicao, 23); u8g.print (минута ()); u8g.setColorIndex (1);} установка void () {pinMode (3, INPUT_PULLUP); Serial.begin (9600); если (u8g.getMode () ==U8G_MODE_R3G3B2) u8g.setColorIndex (255); // белый иначе if (u8g.getMode () ==U8G_MODE_GRAY2BIT) u8g.setColorIndex (3); // максимальная интенсивность else if (u8g.getMode () ==U8G_MODE_BW) u8g.setColorIndex (1); // пиксель на setSyncProvider (RTC.get); Последовательный < =max_temp) {max_temp =temperatura; } если (температура <=min_temp) {min_temp =temperatura; } static time_t tLast; time_t t; tmElements_t tm; // Подтверждение задано для нового времени // Формат: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 =время изготовления (tm); RTC.set (t); setTime (t); Серийный < 0) Serial.read (); }} t =сейчас (); если (t! =tLast) {tLast =t; printDateTime (t); Серийный < 0) Serial < 
библиотеки Arduino
 Нет предварительного просмотра (только загрузка). 

Схема


Производственный процесс

  1. Аналоговые и цифровые сигналы
  2. Типы аналоговых и цифровых датчиков с приложениями
  3. Часы видения Arduino pov
  4. Основные часы
  5. ЖК-анимация и игры
  6. Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
  7. Цифровые часы TM1637 с функцией настройки времени и будильника
  8. DIY вольтметр с Arduino и дисплеем Nokia 5110
  9. BME280 Температура, влажность и давление на дисплее Nextion
  10. Простой будильник с DS1302 RTC