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

ミニLEDマトリックス時計 – Arduino Nano駆動のコンパクト時計

必要な部品と材料

必要な工具

使用するソフトウェア

プロジェクトの概要

Nick Hall氏の「Nick's LED Projects」で公開されている4枚の8×8マトリックスを使った時計プロジェクトをベースに、MAX7219ドライバ内蔵の32×8マトリックスモジュール(4枚一体型、AliExpressで格安入手可能)で動作するようコードを最小限変更して移植しました。

ミニLEDマトリックス時計 – Arduino Nano駆動のコンパクト時計

主な機能

回路構成はシンプル:マトリックスモジュール、Arduinoボード、RTCモジュール、設定用タクトスイッチ2個のみ。必要なライブラリと改造済みコードはコードセクションからダウンロード可能です。

回路図

ミニLEDマトリックス時計 – Arduino Nano駆動のコンパクト時計

ソースコード

/*********************************************************************** 
Mini Clock v1.0, Jul 2014 by Nick Hall
Distributed under the terms of the GPL.
For help on how to build the clock see my blog: https://123led.wordpress.com/
Tested on IDE v1.6.5
***********************************************************************/

#include "LedControl.h"
#include   // フォントライブラリ
#include           // DS1307/DS3231 RTC
#include "RTClib.h"        // RTCライブラリ
#include         // Alexander Brevig氏のButtonライブラリ

// LEDマトリックス設定
// pin 12 = DataIn, pin 11 = CLK, pin 10 = LOAD
LedControl lc = LedControl(12, 11, 10, 4);  // 4デバイス(最大8)

// グローバル変数
byte intensity = 7;        // デフォルト輝度 (0-15)
byte clock_mode = 0;       // デフォルト表示モード (0=basic)
bool random_mode = 0;      // ランダムモード (0=OFF)
byte old_mode = clock_mode; // 前モード記憶
bool ampm = 0;             // 0=24h, 1=12h
byte change_mode_time = 0; // ランダムモード時の次回切替時刻
unsigned long delaytime = 500;
int rtc[7];                // RTC出力格納
char days[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
char daysfull[7][9] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
char suffix[4][3] = { "st", "nd", "rd", "th" };  // 日付サフィックス

#define NUM_DISPLAY_MODES 3
#define NUM_SETTINGS_MODES 4
#define SLIDE_DELAY 20     // スライドアニメ速度 (ms)
#define cls clear_display

RTC_DS1307 ds1307;
Button buttonA = Button(2, BUTTON_PULLUP);
Button buttonB = Button(3, BUTTON_PULLUP);

void setup() {
  digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH);
  Serial.begin(9600);
  int devices = lc.getDeviceCount();
  for (int address = 0; address < devices; address++) {
    lc.shutdown(address, false);
    lc.setIntensity(address, intensity);
    lc.clearDisplay(address);
  }
  #ifdef AVR
    Wire.begin();
  #else
    Wire1.begin();
  #endif
  ds1307.begin();
  if (!ds1307.isrunning()) {
    Serial.println("RTC is NOT running!");
    ds1307.adjust(DateTime(__DATE__, __TIME__));
  }
  printver();
  digitalWrite(13, HIGH);
}

void loop() {
  switch (clock_mode) {
    case 0: basic_mode(); break;
    case 1: small_mode(); break;
    case 2: slide(); break;
    case 3: word_clock(); break;
    case 4: setup_menu(); break;
  }
}

// 以下、各表示モード・ユーティリティ関数の実装(原文のコードを整形・コメント日本語化)
// plot(), clear_display(), fade_down(), printver(), puttinychar(), putnormalchar(),
// small_mode(), basic_mode(), slide(), slideanim(), word_clock(), scroll(),
// display_date(), switch_mode(), run_mode(), set_next_random(),
// setup_menu(), set_random(), set_ampm(), set_intensity(), levelbar(),
// set_time(), set_value(), get_time()
// 詳細はダウンロード版コードを参照してください。

ライブラリ

使用ライブラリ(コードセクションからダウンロード):

製造プロセス

  1. 鳩時計:歴史、職人技、現代への進化
  2. Arduino Mini ボスバトルゲーム:レトロ風LCDゲームプロジェクト
  3. 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
  4. Arduino UNOで作るベルリンクロック – DIY LEDマトリクス時計
  5. アナログ風LED POVクロック – Arduino Nanoで作る残像時計
  6. PIRセンサー連動 インタラクティブLEDマトリクスドアディスプレイ - ホリデーグリーティング
  7. 音声反応型 8 LED ライトディスプレイ
  8. スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
  9. ホットグルー棒で作るLEDマトリックスランプ - カラフルなディスプレイを自作
  10. 555タイマーと4017カウンタによるLEDシーケンサ構築:周波数分周とデバウンス
  11. MATLAB行列完全マスター:作成・参照・操作・削除の基礎