工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

128x64 LCDのアナログ、デジタル時計、温度計

コンポーネントと消耗品

>
Arduino Nano R3
× 1
Maxim Integrated DS3231M-±5ppm、I2Cリアルタイムクロック
× 1
シングルターンポテンショメータ-10kオーム
× 1
押しボタンスイッチ、モーメンタリ
× 1
128x64LCDグラフィックディスプレイ
× 1

必要なツールとマシン

>
はんだごて(汎用)

このプロジェクトについて

arduinoeciaのWebページには、128x64 LCDグラフィックディスプレイを備えたArduinoクロック、ディスプレイのコントラストを調整するためのポテンショメータ、DS3231RTCモジュールおよびプッシュボタンが表示されます。 RTCモジュールは、A4(SDA)およびA5(SCL)ピンでArduinoに接続されています。ボタンはデジタルピン3に接続され、Arduinoの内部プルアップ抵抗がソフトウェアを介して有効になっています。プログラムは、コンパイルする前にインストールする必要があるいくつかのライブラリを使用します。ライブラリを解凍し、ArduinoIDEのLIBRARIESフォルダー内に配置します。

プログラムには2つの画面があります。最初の画面(screen_1)には、アナログ時計、デジタル時計、および現在の日付と温度が表示されます。

2番目の画面(screen_2)には、デジタル時計、曜日、日付と現在の温度情報、最低気温と最高気温が表示されます。画面は、デジタルピン3に接続されているプッシュボタンを押すことで選択されます。

RTC DS3231モジュールの日付と時刻を設定するには、シリアルモニターを使用して、年、月、日、時、分、秒の形式で情報を入力します。

情報を正しく入力すると、「」というメッセージが表示されます。

コード

  • コード
  • ライブラリ
コード Arduino
 // Programa:ディスプレイLCD 128x64 e RTC DS3231 // Autor:Arduino e Cia#include  #include  #include  #include  #include  // A linha abaixoは、conexoesが表示されるように定義します。 // Enable、RW、RS、RESETint X2 =0; int Y2 =0; int X3 =0; int Y3 =0; float angulo =0; int posicao =0; int posicaoh =0; inttemperatura =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 "、"火 "、"水 "、"木 "、"金 "、"土 "}; void tela_1(){u8g.drawRFrame(0、0、128、64、3); // Mostratemperatura 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(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 [(weekday()-1)]); // Mostratemperatura atual u8g.setPrintPos(83、19); u8g.print(temperatura); u8g.drawStr(105、19、 "C"); u8g.drawCircle(100、12、2); // Mostratemperatura minima u8g.setPrintPos(98、36); u8g.print(min_temp); u8g.drawCircle(113、29、2); // Mostratemperatura maxima 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 +半径* cos(angulo); Y2 =ScreenHeightC +半径* 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(day()); u8g.drawStr(19、55、 "/"); u8g.setPrintPos(24、55); u8g.print(month()); u8g.drawStr(35、55、 "/"); u8g.setPrintPos(41、55); u8g.print(year()); // 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(hour()); // 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(minute()); u8g.setColorIndex(1);} void setup(){pinMode(3、INPUT_PULLUP); Serial.begin(9600); if(u8g.getMode()==U8G_MODE_R3G3B2)u8g.setColorIndex(255); //白elseif(u8g.getMode()==U8G_MODE_GRAY2BIT)u8g.setColorIndex(3); //最大強度elseif(u8g.getMode()==U8G_MODE_BW)u8g.setColorIndex(1); // setSyncProvider(RTC.get);のピクセルシリアル< =max_temp){max_temp =temperatura; } if(temperatura <=min_temp){min_temp =temperatura; } static time_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);シリアル< 0)Serial.read(); }} t =now(); if(t!=tLast){tLast =t; printDateTime(t);シリアル< 0)シリアル< 
ライブラリ Arduino
プレビューなし(ダウンロードのみ)。

回路図


製造プロセス

  1. アナログおよびデジタル信号
  2. アプリケーションを備えたアナログおよびデジタルセンサーの種類
  3. Arduinoハメ撮りビジョンクロック
  4. マスタークロック
  5. LCDアニメーションとゲーム
  6. ArduinoTemp。 3.2ディスプレイを備えたモニターとリアルタイムクロック
  7. 時間設定とアラーム機能を備えたTM1637デジタル時計
  8. ArduinoとNokia5110ディスプレイを備えたDIY電圧計
  9. NextionディスプレイのBME280温度、湿度、および圧力
  10. arduinoを使用したソナーと処理IDEでの表示
  11. DS1302RTCを備えたシンプルな目覚まし時計