ここで紹介する方法では、時計を分解する必要がなく、時計の電池ホルダーから2本の電線でM5StickCと接続するだけで、時計の制御ができます。
全体像です。時計はダイソーで100円で売っているもので、文字盤の直径が11.5cmです。
配線は、時計の電池ボックスのマイナス端子をM5StickCのGND端子へ、プラス端子をM5StickCのG26へ接続します。
M5StickCで下記のスケッチを実行すると、時計の秒針が約1.5秒で2ステップ(2秒に相当)進みますので、約45秒で針が一周します。delay(50)の数値を大きくすると秒針はゆっくり動くようになります。
void setup() {
pinMode(26, OUTPUT);
}
void loop() {
dacWrite(26, 255*15/33);
delay(1450);
dacWrite(26, 0);
delay(50);
}
このスケッチで動いている時計の動画です。
下記のスケッチは、秒針が約0.5秒で2ステップ進みます。ただしこの方式では、loop()内の最初のdelayの数値239はかなり微妙で、値を1増減しただけでも動かなくなったりしました。時計の置き方にも影響され、同じ時計でも個体間差がありそうです。
void setup() {
pinMode(26, OUTPUT);
for (int i=0; i<2; i++) {
dacWrite(26, 255*15/33);
delay(1450);
dacWrite(26, 0);
delay(50);
}
}
void loop() {
dacWrite(26, 255*15/33);
delay(239);
dacWrite(26, 0);
delay(261);
}
このスケッチで動いている時計の動画です。
変わった針の動きの時計や、夏時間と冬時間の自動切換えなどに応用できると思います。
0 件のコメント:
コメントを投稿