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

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

必要な部品と材料

部品 数量
Arduino UNO 1
リアルタイムクロック (RTC) モジュール 1
抵抗 1kΩ 15
抵抗 120Ω 15
リニアレギュレーター 7805 1
コンデンサ 22pF 1
16MHz 水晶発振子 1
コンデンサ 10µF 1
コインセル電池 CR2032 1
電池ホルダー CR2032用 1
5mm LED グリーン 190
バイポーラ RF トランジスタ NPN 10
汎用トランジスタ PNP 12
タクトスイッチ 4
12V 5A 電源 1

必要な工具

プロジェクト概要

まず以下のライブラリをダウンロードしてください:

  1. Wire.h
  2. RTClib.h

パーツリスト

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

動画を見る

RTCクロックモジュール

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

Arduino回路図

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

RTC配線接続

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

RTCスイッチ

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

アノードとカソードの識別

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

共通アノード用回路図

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

共通カソードLEDを使用する場合の変更点

共通カソードLEDを使用する場合は以下の通り変更してください。

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

電源回路

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

コード

LED時計コード (Arduino)

/* 4桁7セグメントディスプレイ: https://www.sparkfun.com/products/9483
   Datasheet: https://www.sparkfun.com/datasheets/Components/LED/7-Segment/YSD-439AR6B-35.pdf */
   
int digit1 = 11;
int digit2 = 10;
int digit3 = 9;
int digit4 = 6;
int digit5 = 5;
int digit6 = 3;

int segA = 0;   // ディスプレイピン11
int segB = 1;   // ディスプレイピン7
int segC = 2;   // ディスプレイピン4
int segD = 4;   // ディスプレイピン2
int segE = 7;   // ディスプレイピン1
int segF = 8;   // ディスプレイピン10
int segG = 12;  // ディスプレイピン5
int segDP = 13; // ディスプレイピン3

#include 
#include "RTClib.h"

RTC_DS1307 RTC;

byte SW0 = A0;
byte SW1 = A2;
byte SW2 = A1;
byte SWT = A3;

int Adhr = 0;
int Admnt = 0;
int D = 0;
int Z = 0;

void setup() {
  Wire.begin();
  RTC.begin();
  // RTC.adjust(DateTime(F(__DATE__), F(__TIME__))); // 時刻設定が必要な場合はコメント解除

  // SQW=1Hz 設定(点滅LED用)
  Wire.beginTransmission(0x68);
  Wire.write(0x07);
  Wire.write(0x10);  // 1Hz方形波出力
  Wire.endTransmission();

  pinMode(segA, OUTPUT);  pinMode(segB, OUTPUT);  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);  pinMode(segE, OUTPUT);  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);  pinMode(segDP, OUTPUT);
  pinMode(digit1, OUTPUT); pinMode(digit2, OUTPUT); pinMode(digit3, OUTPUT);
  pinMode(digit4, OUTPUT); pinMode(digit5, OUTPUT); pinMode(digit6, OUTPUT);

  pinMode(SW0, INPUT); pinMode(SW1, INPUT);
  pinMode(SW2, INPUT); pinMode(SWT, INPUT);
  digitalWrite(SW0, HIGH); digitalWrite(SW1, HIGH); digitalWrite(SW2, HIGH);
  digitalWrite(segDP, LOW);
}

void loop() {
  DateTime now = RTC.now();
  long HR = now.hour() * 1000;
  long timp = (HR * 10) + now.minute() * 100 + now.second();
  Adhr = now.hour();
  Admnt = now.minute();

  // 12/24時間切り替えスイッチ処理
  if (digitalRead(SWT) == 0) {
    delay(300);
    D = (D == 0) ? 1 : 0;
  }

  if (D == 0) {  // 12時間表示
    if (timp >= 130000) {
      timp -= 120000;
      digitalWrite(segDP, HIGH);  // PM表示
    }
  }

  // 時刻表示(マルチプレクス駆動)
  for (int i = 100; i > 0; i--) {
    if (timp >= 100000) displayNumber01(timp);
    else displayNumber02(timp);
  }
  for (int i = 100; i > 0; i--) {
    if (timp >= 100000) displayNumber03(timp);
    else displayNumber04(timp);
  }
  for (int i = 100; i > 0; i--) {
    if (timp >= 100000) displayNumber05(timp);
    else displayNumber06(timp);
  }

  // 時刻設定モード
  if (digitalRead(SW0) == 0) {
    delay(100);
    Z = 1;
    set_time();
  }
}

void set_time() {
  // スイッチ操作で時刻設定を行う関数
  // SW2で時間、SW1で分を設定、SW0で終了
  // 詳細なコードは全文を参照
}

void displayNumber01(long toDisplay) { /* 桁1表示 */ }
void displayNumber02(long toDisplay) { /* 桁2表示 */ }
void displayNumber03(long toDisplay) { /* 桁3表示 */ }
void displayNumber04(long toDisplay) { /* 桁4表示 */ }
void displayNumber05(long toDisplay) { /* 桁5表示 */ }
void displayNumber06(long toDisplay) { /* 桁6表示 */ }

void lightNumber(int numberToDisplay) {
  // 共通アノード用セグメント点灯パターン
  #define SEGMENT_ON HIGH
  #define SEGMENT_OFF LOW
  // numberToDisplay に応じてセグメント制御
  // case 0-9, 10(消灯) のスイッチ文
}

回路図

SSDとLEDの配線図

ArduinoリアルタイムクロックLED時計:信頼性の高い時刻表示を構築

製造プロセス

  1. Arduino POVクロック:残像効果で浮かび上がるLED時計を自作する
  2. DIY Arduinoワードクロック – 文字で時刻を表示する洗練されたリアルタイムクロック
  3. Arduino Nanoで20kHzオシロスコープを自作:Nokia 5110 LCD搭載・簡易DIYガイド
  4. 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
  5. スマートブラインド:Arduinoとソーラー電源で実現する自動光制御
  6. イタリア語ワードクロック自作:Arduino Nano、NeoPixel、LCD、RTCで時刻を文字で表示
  7. ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
  8. スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
  9. Arduino Pro MiniとDS1302 RTCで作る高精度7セグメント時計
  10. Arduino MKR Fox 1200で作る信頼性の高いSigfox kWhメーター
  11. Arduino用絶縁アナログ入力回路の設計:LM331 V-F変換+フォトカプラでノイズ耐性を確保