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

リアルタイムクロック付きArduinoOLED温度ディスプレイ

コンポーネントと消耗品

>
Arduino UNO
× 1
Adafruit DS3231 RTC
× 1
ディジレントPmodOLED
× 1
Texas InstrumentsLM35温度センサー
× 1
ジャンパー線(汎用)
× 1
ブレッドボード(汎用)
× 1

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

時間、日付、気温を知らせるArduino気象時計を作成します。 LM35センサーは温度を示し、DS3231は日付と時刻を示し、OLEDを使用して温度と日付と時刻を表示します。

必要なコンポーネント

このプロジェクトに必要なコンポーネントは次のとおりです

  • Arduino
  • DS3231(リアルタイムクロックモジュール)
  • OLEDディスプレイ(ここではSSD1306を使用)
  • SSD1306.pdf
  • Lm35
  • ワイヤーの接続
  • ブレッドボード
lm35.pdf

回路図

まず、OLEDをArduinoに接続します。 OLEDは、SPIおよびI2C通信を介してArduinoと連携しますが、SPI通信を使用して接続しました。 ArduinoのSPIピンはピン8、9、10、11、および13です。OLEDとArduinoの接続は次のとおりです。

  • OLEDのCSをArduinoのピン10に接続します。
  • OLEDのDCをArduinoのピン9に接続します。
  • OLEDのRESをArduinoのピン8に接続します。
  • OLEDのD1をArduinoのピン11に接続します。
  • OLEDのD0をArduinoのピン13に接続します。
  • OLEDのVCCをArduinoの5Vピンに接続します。
  • OLEDのGNDをArduinoのGNDピンに接続します。

その後、DS3231モジュールをArduinoに接続します。 DS3231モジュールは、I2C通信を介してArduinoと連携します。 ArduinoのI2C通信のピンはSDAとSCLです。次のようにDS3231モジュールをArduinoに接続します:

  • DS3231のGNDをArduinoのGNDピンに接続します。
  • DS3231のVCCをArduinoの5Vピンに接続します。
  • OLEDのSDAをArduinoのA4に接続します。
  • OLEDのSCLをArduinoのA5ピンに接続します。

最後に、LM35センサーをArduinoに接続します。 LM35の左側のピンをArduinoの5Vに接続し、中央のピンをArduinoのA0に接続し、左側のピンをArduinoのアースに接続します。

<図>

あなたはを見つけることができます フルサイズの回路図はこちら

コードの説明

まず、DS3231モジュールとOLEDのライブラリを追加しました。 OLED用のAdafruitライブラリは、OLEDに使用される他のライブラリと比較してより多くの機能を備えています。

  #include #include  

次に、DS3231モジュールとOLEDを接続したピンを定義しました。 DS3231モジュールはI2C通信を介してArduinoと連携するため、ArduinoのSDAピンとSCLピンを使用しました。 OLEDはSPI通信を介してArduinoと連携します。したがって、SPI通信用のピン8、9、10、11、13を初期化しました。その後、LM35センサーピンとその他の変数を初期化しました。

  DS3231 rtc(SDA、SCL); #define OLED_MOSI 11 #define OLED_CLK 13 #define OLED_DC 9 #define OLED_CS 10 #define OLED_RESET 8 Adafruit_SSD1306 display(OLED_MOSI、OLED_CLK、OLED_DC、OLED_RESET、OLED_CS); const int Sensor_pin =A0;フロート温度;フロート出力;  

セットアップ機能では、Arduinoがセンサーから入力を受け取るため、LM35センサーピンを入力として宣言しました。次に、DS3231とOLEDにコマンドを送信して、Arduinoとの通信を開始しました。

  pinMode(sensor_pin、INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC);  

以下の行はコードでコメント化されていますが、DS3231モジュールを初めて使用し、曜日、日付、時刻を設定する場合は、これらの行のコメントを解除して設定します。

  //rtc.setDOW(WEDNESDAY); //曜日を日曜日に設定します//rtc.setTime(19、02、0); //時刻を12:00:00(24時間形式)に設定します//rtc.setDate(7、12、2017); //日付を2017年6月6日に設定します 

次に、OLEDに「天気時計」を5秒間印刷しました。

  display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(0,0); display.print( "天気"); display.setCursor(0,17); display.print( "時計"); display.display(); delay(5000);  

ループ関数では、LM35から読み取り、温度を計算しました。次に、日時を取得してOLEDに印刷します。

  output =analogRead(sensor_pin); temp =(output * 500)/ 1023; display.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); display.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr());  

完全なArduinoコード

  #include #include DS3231 rtc(SDA、SCL); #define OLED_MOSI 11#define OLED_CLK 13#define OLED_DC 9#define OLED_CS 10#define OLED_RESET 8Adafruit_SSD1306 display(OLED_MOSI、OLED_CLK、OLED_DC、OLED_RESET、OLED_RESET; const int Sensor_pin =A0; float temp; float output; void setup(){pinMode(sensor_pin、INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW(WEDNESDAY); //曜日を日曜日に設定します//rtc.setTime(19、02、0); //時刻を12:00:00(24時間形式)に設定します//rtc.setDate(7、12、2017); //日付を2017年6月6日に設定しますdisplay.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(0,0); display.print( "天気"); display.setCursor(0,17); display.print( "時計"); display.display(); delay(5000);} void loop(){output =analogRead(sensor_pin); temp =(output * 500)/ 1023; display.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); display.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); display.setTextSize(1); display.setCursor(20,25); display.print( "Temp:"); display.print(temp); display.print( "C"); display.display(); delay(1000);}  

コード

  • コードスニペット#4
  • コードスニペット#5
  • コードスニペット#6
コードスニペット#4 プレーンテキスト
 display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(0,0); display.print( "天気"); display.setCursor(0,17); display.print( "時計"); display.display(); delay(5000); 
コードスニペット#5 プレーンテキスト
 output =analogRead(sensor_pin); temp =(output * 500)/ 1023; display.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); display.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); 
コードスニペット#6 プレーンテキスト
 #include #include DS3231 rtc(SDA、SCL); #define OLED_MOSI 11#define OLED_CLK 13#define OLED_DC 9#define OLED_CS 10#define OLED_RESET 8Adafruit_SSD1306 display(OLED_MOSI、OLED_CLK、OLED_DC、OLED_RESET、OLED_CS); Sensor_pin =A0; float temp; float output; void setup(){pinMode(sensor_pin、INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW(WEDNESDAY); //曜日を日曜日に設定します//rtc.setTime(19、02、0); //時刻を12:00:00(24時間形式)に設定します//rtc.setDate(7、12、2017); //日付を2017年6月6日に設定しますdisplay.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(0,0); display.print( "天気"); display.setCursor(0,17); display.print( "時計"); display.display(); delay(5000);} void loop(){output =analogRead(sensor_pin); temp =(output * 500)/ 1023; display.clearDisplay(); display.setTextSize(2); display.setCursor(20,0); display.print(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0,15); display.print(rtc.getDateStr()); display.setTextSize(1); display.setCursor(70,15); display.print(rtc.getDOWStr()); display.setTextSize(1); display.setCursor(20,25); display.print( "Temp:"); display.print(temp); display.print( "C"); display.display(); delay(1000);} 

回路図


製造プロセス

  1. 実際のセンサーで効果を制御する
  2. Arduinoを使用したDIYの最もシンプルなIV9Numitron時計
  3. イスラムの祈りの時間とArduino時計
  4. ArduinoPongゲーム-OLEDディスプレイ
  5. 単語単位の時間の分分解能を備えた世界時計
  6. マスタークロック
  7. ArduinoTemp。 3.2ディスプレイを備えたモニターとリアルタイムクロック
  8. ベルリン時計
  9. Nextionディスプレイで遊ぶ
  10. 時間設定とアラーム機能を備えたTM1637デジタル時計
  11. DS1302RTCを備えたシンプルな目覚まし時計