Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Analog, Digitaluhr und Thermometer auf 128 x 64-LCD

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
Maxim Integrated DS3231M - ±5 ppm, I2C-Echtzeituhr
× 1
Single Turn Potentiometer - 10k Ohm
× 1
Druckschalter, kurzzeitig
× 1
128x64 LCD-Grafikdisplay
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Über dieses Projekt

Auf der Arduinoecia-Webseite wird die Arduino-Uhr mit 128x64 LCD-Grafikdisplay, einem Potentiometer zum Einstellen des Displaykontrasts, dem DS3231 RTC-Modul und einem Druckknopf vorgestellt. Das RTC-Modul wird über die Pins A4 (SDA) und A5 (SCL) mit dem Arduino verbunden. Der Taster ist mit dem digitalen Pin 3 verbunden, wobei der interne Pullup-Widerstand des Arduino per Software aktiviert ist. Das Programm verwendet einige Bibliotheken, die Sie vor dem Kompilieren installieren müssen. Entpacken Sie die Bibliotheken und legen Sie sie in den Ordner LIBRARIES der Arduino IDE.

Das Programm hat zwei Bildschirme:Der erste ( screen_1 ) zeigt die analoge Uhr, die digitale Uhr sowie das aktuelle Datum und die Temperatur an.

Der zweite Bildschirm ( screen_2 ) zeigt die Digitaluhr, Wochentag, Datum und aktuelle Temperaturinformationen, Mindesttemperatur und Höchsttemperatur. Die Bildschirme werden durch Drücken der Drucktaste ausgewählt, die mit dem digitalen Pin 3 verbunden ist.

Um Datum und Uhrzeit des RTC DS3231-Moduls einzustellen, verwenden Sie den seriellen Monitor und geben Sie die Informationen im Format Jahr, Monat, Tag, Stunde, Minute und Sekunde ein.

Wenn Sie die Informationen richtig eingegeben haben, wird die Meldung " " angezeigt.

Code

  • Code
  • Bibliotheken
codeArduino
//Programme:Display LCD 128x64 und RTC DS3231//Autor:Arduino und Cia#include #include #include #include #include //A linha abaixo definieren als conexoes zeigen e deve ser // ajustada konform oder modelo utilizadoU8GLIB_ST7920_128X64_1X u8g(6, 5, 4 , 7); //Enable, 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[]={ "Sun", "Mon ", "Di", "Mi", "Do", "Fr", "Sa"};void tela_1() { u8g.drawRFrame(0, 0, 128, 64, 3); // Mostra Temperatur u8g.setPrintPos (20, 30); u8g.print (Temperatur); u8g.drawStr( 42, 30, "C"); u8g.drawCircle(37, 34, 2); mostra_relogio_digital(); //Mostra relogio analogico fundo_relogio(); // Atualiza Ponteiro de horas desenha_ponteiro (Stunde () - 1, 12.0, 10); // Atualiza Ponteiro de minutos desenha_ponteiro (Minute () - 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[(Wochentag()-1)]); //Mostra temperatura atual u8g.setPrintPos (83, 19); u8g.print (Temperatur); u8g.drawStr( 105, 19, "C"); u8g.drawCircle(100, 12, 2); // Mostra minimale Temperatur u8g.setPrintPos (98, 36); u8g.print (min_temp); u8g.drawCircle(113, 29, 2); //Mostra Temperaturmaxima 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(angulo); 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 =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 () {//Mostra a data u8g.setFont (u8g_font_5x8); u8g.setPrintPos(8, 55); u8g.print (Tag ()); u8g.drawStr( 19, 55, "/"); u8g.setPrintPos(24, 55); u8g.print (Monat ()); u8g.drawStr( 35, 55, "/"); u8g.setPrintPos(41, 55); u8g.print (Jahr ()); //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"); Posikaoh =16; } sonst Posicaoh =3; u8g.setPrintPos(posicaoh, 23); u8g.print (Stunde ()); //Acerta a posicao do digito caso o minuto //Seja menor do que 10 if (minute() <10) { u8g.drawStr(38,23,"0"); Posicao =51; } sonst Posicao =38; u8g.setPrintPos(posicao,23); u8g.print (Minute ()); u8g.setColorIndex(1);}void setup() { pinMode(3, INPUT_PULLUP); Serial.begin (9600); if ( u8g.getMode() ==U8G_MODE_R3G3B2 ) u8g.setColorIndex(255); // weiß sonst if (u8g.getMode() ==U8G_MODE_GRAY2BIT) u8g.setColorIndex(3); // maximale Intensität sonst if ( u8g.getMode() ==U8G_MODE_BW ) u8g.setColorIndex(1); // Pixel auf setSyncProvider (RTC.get); Seriell <=max_temp) { max_temp =temperatura; } if (temperatura <=min_temp) { min_temp =temperatura; } statische Zeit_t tLast; Zeit_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.Stunde =Serial.parseInt(); tm.Minute =Serial.parseInt(); tm.Second =Serial.parseInt(); t =makeTime(tm); RTC.set(t); setTime(t); Seriell < 0) Serial.read(); } } t =jetzt(); if (t!=tLast) { tLast =t; printDateTime(t); Seriell < 0) Serial < 
BibliothekenArduino
Keine Vorschau (nur Download).

Schaltpläne


Herstellungsprozess

  1. Analoge und digitale Signale
  2. Typen analoger und digitaler Sensoren mit Anwendungen
  3. Arduino-Pov-Vision-Uhr
  4. Hauptuhr
  5. LCD-Animation und -Spiele
  6. Arduino-Temp. Monitor und Echtzeituhr mit 3.2 Display
  7. TM1637 Digitaluhr mit Zeiteinstellung und Alarmfunktion
  8. DIY Voltmeter mit Arduino und einem Nokia 5110 Display
  9. BME280 Temperatur, Luftfeuchtigkeit und Druck auf dem Nextion-Display
  10. Einfacher Wecker mit DS1302 RTC