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)を置きます。
チャレンジ
中級リングはピン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回再描画する
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
プロジェクトのすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド