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

アナログ風LED POVクロック – Arduino Nanoで作る残像時計

必要な部品

必要なツール

使用アプリ

プロジェクト概要

Persistence of Vision (POV) ディスプレイ は、高速回転するLED列が一瞬ずつ画像の断面を表示し、人間の残像効果で連続した画像として認識させる技術です。

「hobby project」サイトで紹介されていたアナログ時計風フェイスのPOVクロックを自作。電子部品はArduino Nano、17個のLED、ホール効果センサーで構成。LEDグループ(D1-D11、D12-D16、D17)を色分けして視認性向上。リチウムイオン電池+昇圧コンバーターで駆動。

アナログ風LED POVクロック – Arduino Nanoで作る残像時計

最大の課題は機械的安定性。初版では電池が偏心しており、高速回転で激しい振動発生。電池を回転中心に配置し直して解決。

回転駆動は12V DCモーター+可変電源で速度制御。回転速度に合わせてコード内の delayMicroseconds() 値を調整(低速なら増やす、高速なら減らす)。

動画撮影には高フレームレートカメラが必要で、掲載動画は実物ほど鮮明ではありません。

コード

Arduino Nano POV アナログクロック
// hobbyprojects // ArduinoNanoPropellerLEDAnalogClock20190403A
int LED1 = 2, LED2 = 3, LED3 = 4, LED4 = 5, LED5 = 6;
int LED6 = 7, LED7 = 8, LED8 = 9, LED9 = 10, LED10 = 11;
int LED11 = 12, LED12 = A1, LED13 = A2, LED14 = A3, LED15 = A4, LED16 = A5;
int sensorPin = A0;

unsigned int n, ADCvalue, propeller_posn;
unsigned long previousTime = 0;
byte hours = 12, minutes = 15, seconds = 0;
int val;

void setup() {
  for (int i = 2; i <= 12; i++) pinMode(i, OUTPUT);
  pinMode(A1, OUTPUT); pinMode(A2, OUTPUT); pinMode(A3, OUTPUT);
  pinMode(A4, OUTPUT); pinMode(A5, OUTPUT);
  pinMode(sensorPin, INPUT_PULLUP);
  if (hours == 12) hours = 0;
}

void loop() {
  val = digitalRead(sensorPin);
  while (val == LOW) val = digitalRead(sensorPin); // ホールセンサー通過待ち

  if (millis() >= previousTime) {
    previousTime += 1000;
    seconds++;
    if (seconds == 60) { seconds = 0; minutes++; }
    if (minutes == 60) { minutes = 0; hours++; }
    if (hours == 12) hours = 0;
  }

  propeller_posn = 30;
  n = 0;
  while (n < 60) {
    drawMinuteMarker();
    if (propeller_posn % 5 == 0) drawHourMarker();
    if (propeller_posn % 15 == 0) drawQuarterMarker();
    if (propeller_posn == hours * 5 || (propeller_posn == 0 && hours == 0)) drawHoursHand();
    if (propeller_posn == minutes) drawMinutesHand();
    if (propeller_posn == seconds) drawSecondsHand();

    delayMicroseconds(140); // LEDピクセル幅(モーター速度で調整)
    displayClear();
    drawInner_Circle();
    delayMicroseconds(600); // ピクセル間ギャップ(モーター速度で調整)

    n++;
    propeller_posn++;
    if (propeller_posn == 60) propeller_posn = 0;
  }

  val = digitalRead(sensorPin);
  while (val == HIGH) val = digitalRead(sensorPin); // 次の磁石通過待ち
}

// 描画関数群
void displayClear() { /* 全LED OFF */ }
void drawMinuteMarker() { digitalWrite(LED16, HIGH); }
void drawHourMarker() { digitalWrite(LED15, HIGH); digitalWrite(LED14, HIGH); }
void drawQuarterMarker() { digitalWrite(LED13, HIGH); digitalWrite(LED12, HIGH); }
void drawHoursHand() { for(int i=1;i<=7;i++) digitalWrite(eval("LED"+i), HIGH); }
void drawMinutesHand() { for(int i=1;i<=9;i++) digitalWrite(eval("LED"+i), HIGH); }
void drawSecondsHand() { for(int i=1;i<=11;i++) digitalWrite(eval("LED"+i), HIGH); }
void drawInner_Circle() { digitalWrite(LED1, HIGH); delayMicroseconds(30); digitalWrite(LED1, LOW); }

回路図

アナログ風LED POVクロック – Arduino Nanoで作る残像時計

※ 元コードの eval() 部分はArduinoでは使えないため、実際は配列やswitch文で実装してください。ホールセンサーは磁石通過でパルスを生成し、回転位置の基準(0度点)として使用します。

製造プロセス

  1. 鳩時計:歴史、職人技、現代への進化
  2. 自作LUMAZOID:Arduino音楽ビジュアライザーDIYガイド
  3. Arduino POVクロック:残像効果で浮かび上がるLED時計を自作する
  4. アナログセンサー搭載・高精度圧力&気流測定デバイス
  5. Arduino Nanoで37LEDルーレットゲームを自作:ヨーロピアンスタイル完全再現
  6. 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
  7. 3D RGB アルドゥクロック:Bluetooth対応LED時計(RTC内蔵)
  8. FlightGear用アナログトリムタブホイールをArduino Nanoで自作 ─ Python経由でUDP連携
  9. PIRセンサー連動 インタラクティブLEDマトリクスドアディスプレイ - ホリデーグリーティング
  10. Windows 10 CortanaでBluetooth経由でArduinoのLEDを制御
  11. 555タイマーと4017カウンタによるLEDシーケンサ構築:周波数分周とデバウンス