Menu
CoddyTech

NeoPixel時計:秒

CoddyのArduinoジャーニー「プロジェクト」セクションの一部。レッスン 21/24。

最後のプロジェクトは数字のない時計です。時計の文字盤の12時間のように、12個のNeoPixelを輪状に並べ、それぞれの針を色のついたライトで表します。Pixel 0は一番上の12時の位置にあり、番号は時計回りに増えていきます。2つのボタンで時刻を設定します。

まずは秒針です。1分は60秒で、リングには12個のピクセルがあるため、針は5秒ごとに1ピクセル進みます。

seconds % 60は、時計の秒数と同じように0から59まで数え、その後0から再び始まります。整数除算で5で割ると、0から59が0から11に変換されます。

unsigned long seconds = millis() / 1000;
int secondPixel = (seconds % 60) / 5;

loop()の各回で、リングを最初から描画します。ring.clear()を呼び出し、針のピクセルを設定して、ring.show()を呼び出します。クリアしないと、以前の位置が点灯したままになり、リングが埋まっていきます。1秒に10回の再描画で十分なので、スターターコードの最後にdelay(100)を置きます。

challenge icon

チャレンジ

中級

リングはピン6に接続されています。秒針を描画しましょう。

  • millis() / 1000で電源投入からの秒数を求めます
  • 秒針のピクセルは(seconds % 60) / 5です
  • リングを消灯し、そのピクセルをring.Color(0, 0, 255)で青く点灯させて表示します

delay(100)はそのままにします。Runを押して秒針が一周するのを見てから、Checkを押します。

自分で試してみよう

#include <Adafruit_NeoPixel.h>

const int ringPin = 6;
const int pixelCount = 12;
Adafruit_NeoPixel ring(pixelCount, ringPin, NEO_GRB + NEO_KHZ800);

void setup() {
  ring.begin();
}

void loop() {
  // 秒針の位置を計算し、青色で描画する

  delay(100);  // 1秒間に10回再描画する
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

プロジェクトのすべてのレッスン

自分で練習してみよう: Arduinoプレイグラウンド