Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Analoge, digitale klok en thermometer op 128x64 LCD

Componenten en benodigdheden

Arduino Nano R3
× 1
Maxim Integrated DS3231M - ±5ppm, I2C real-time klok
× 1
Single Turn Potentiometer - 10k ohm
× 1
Drukknop, tijdelijk
× 1
128x64 LCD grafisch display
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Over dit project

Op de arduinoecia-webpagina wordt een Arduino-klok gepresenteerd met een 128x64 LCD-grafisch display, een potentiometer voor het aanpassen van het displaycontrast, de DS3231 RTC-module en een drukknop. De RTC-module is verbonden met de Arduino op de A4 (SDA) en A5 (SCL) pinnen. De knop is verbonden met digitale pin 3, waarbij de interne pull-up-weerstand van de Arduino via software is ingeschakeld. Het programma gebruikt enkele bibliotheken die u moet installeren voordat u gaat compileren. Pak de bibliotheken uit en plaats ze in de LIBRARIES-map van de Arduino IDE.

Programma heeft twee schermen:de eerste ( screen_1 ), toont de analoge klok, de digitale klok, evenals de huidige datum en temperatuur.

Het tweede scherm ( screen_2 ) toont de digitale klok, dag van de week, datum en huidige temperatuurinformatie, minimumtemperatuur en maximumtemperatuur. De schermen worden geselecteerd door op de drukknop te drukken, verbonden met de digitale pin 3.

Om de datum en tijd van de RTC DS3231-module in te stellen, gebruikt u de seriële monitor en voert u de informatie in in jaar, maand, dag, uur, minuut en tweede formaat.

Als u de informatie correct hebt ingevoerd, wordt het bericht " " weergegeven.

Code

  • code
  • bibliotheken
codeArduino
//Programa:Display LCD 128x64 en RTC DS3231//Autor:Arduino en Cia#include #include #include #include #include //A linha abaixo definieert als conexoes de deve ser //ajustada conforme of 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 temperatuur =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", "Wo", "Do", "Vrij", "Zat"};void tela_1() { u8g.drawRFrame(0, 0, 128, 64, 3); //Mostra temperatuur u8g.setPrintPos (20, 30); u8g.afdruk(temperatuur); u8g.drawStr( 42, 30, "C"); 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(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[(weekdag()-1)]); //Mostra temperatuur atual u8g.setPrintPos(83, 19); u8g.afdruk(temperatuur); 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 temperatuurmaxima u8g.setPrintPos(98, 54); u8g.print(max_temp); u8g.drawCircle(113, 47, 2);}void desenha_ponteiro(float valor, float rotacao, int Radius) { angulo =moed * 2.0 * 3.1415 / rotacao - 1.5707; X2 =SchermMetC + Straal * cos(angulo); Y2 =SchermhoogteC + Straal * 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 =SchermMetC + 25 * cos(angulo); Y2 =SchermhoogteC + 25 * sin(angulo); X3 =SchermMetC + 25 * cos(angulo); Y3 =SchermhoogteC + 25 * sin(angulo); u8g.drawLine(X2, Y2, X3, Y3); }}nietig mostra_relogio_digital(){ //Mostra a data u8g.setFont(u8g_font_5x8); u8g.setPrintPos(8, 55); u8g.print(dag()); u8g.drawStr( 19, 55, "/"); u8g.setPrintPos(24, 55); u8g.print(maand()); u8g.drawStr( 35, 55, "/"); u8g.setPrintPos(41, 55); u8g.print(jaar()); //Mostra 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"); posicao =16; } anders posicaoh =3; u8g.setPrintPos(posicaoh, 23); u8g.print(uur()); //Acerta a posicao do digito caso o minuto //seja menor do que 10 if (minute() <10) { u8g.drawStr(38,23,"0"); posicao =51; } anders posicao =38; u8g.setPrintPos(posicao ,23); u8g.print(minuut()); u8g.setColorIndex(1);}void setup() { pinMode(3, INPUT_PULLUP); Serieel.begin(9600); if ( u8g.getMode() ==U8G_MODE_R3G3B2 ) u8g.setColorIndex(255); // wit else if (u8g.getMode() ==U8G_MODE_GRAY2BIT) u8g.setColorIndex(3); // maximale intensiteit anders if (u8g.getMode() ==U8G_MODE_BW) u8g.setColorIndex(1); // pixel op setSyncProvider (RTC.get); Serieel <=max_temp) { max_temp =temperatuur; } if (temperatuur <=min_temp) { min_temp =temperatuur; } statische time_t tLast; tijd_t t; tmElements_t tm; //Verificatie van het aantal nieuwe horario's //Formaat: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.Maand =Serial.parseInt(); tm.Day =Serial.parseInt(); tm.Hour =Serial.parseInt(); tm.Minute =Serial.parseInt(); tm.Second =Serial.parseInt(); t =maakTijd(tm); RTC.set(t); setTime(t); Serieel < 0) Serial.read(); } } t =nu(); if (t!=tLaatste) { tLaatste =t; printDateTime(t); Serieel < 0) Serieel < 
bibliothekenArduino
Geen voorbeeld (alleen downloaden).

Schema's


Productieproces

  1. Analoge en digitale signalen
  2. Soorten analoge en digitale sensoren met toepassingen
  3. Arduino pov vision-klok
  4. Hoofdklok
  5. LCD-animatie en gaming
  6. Arduino Temp. Monitor en realtimeklok met 3.2-weergave
  7. TM1637 digitale klok met tijdinstelling en alarmfunctie
  8. DIY voltmeter met Arduino en een Nokia 5110-display
  9. BME280 temperatuur, vochtigheid en druk op Nextion-display
  10. Sonar met arduino en weergave op verwerkings-IDE
  11. Eenvoudige wekker met DS1302 RTC