Аналоговые, цифровые часы и термометр на ЖК-дисплее 128x64
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 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
Нет предварительного просмотра (только загрузка).
Схема
Производственный процесс
- Аналоговые и цифровые сигналы
- Типы аналоговых и цифровых датчиков с приложениями
- Часы видения Arduino pov
- Основные часы
- ЖК-анимация и игры
- Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
- Цифровые часы TM1637 с функцией настройки времени и будильника
- DIY вольтметр с Arduino и дисплеем Nokia 5110
- BME280 Температура, влажность и давление на дисплее Nextion
- Простой будильник с DS1302 RTC