7segduino Application (6) GPS Clock7segduino Application (6) GPS Clock
2014 年 7 月 18 日
GPSを使ったシンプルな時計です。
1. 回路図
GPSのシリアル出力を7segduinoにつなげます。
今回、電源はUSBからとりました。GPSの消費電力が大きい様ですので、電池での駆動には工夫が必要です。
2. プログラム
シリアル経由で送られてくる情報から時刻の情報だけを取り出して表示しています。(ダウンロード)
時刻は世界標準時(UTC)なので、9時間を足して日本時間(JST)に変換しています。
/* GPS clock for 7segduino 2014/05/25 morecat_lab */ #include <Sseg.h> // offset = 9 hours, JST #define TIMEZONE 900 Sseg mySseg = Sseg(4, 8, 11, 13, 14, 2, 10, 12, 3, 6, 7, 9); long time = 8888; int sec = 0; void setup() { Serial.begin(9600); mySseg.setZeroSupress(0); mySseg.begin(); } void parseLine(char *s) { char *p; p = strtok(s, ","); if(strcmp(s, "$GPRMC") != 0) { return; } p = strtok(NULL, ","); time = atol(p) / 100 + TIMEZONE; if (time > 2400) { time -= 2400; } sec = atol(p) % 100; } void loop() { static char buf[256]; static int ptr = 0; while (Serial.available() > 0) { if (((buf[ptr] = Serial.read()) == '\n') || ((buf[ptr] == '\r'))) { buf[ptr] = 0; parseLine(buf); ptr = 0; } else { ptr++; } } mySseg.writeNum(time); if ((sec % 2) == 0) { mySseg.setDot(1); } else { mySseg.clearDot(1); } mySseg.updateWithDelay(3); }
3. 実装
GPSモジュールに付属していたコネクタ付きのケーブルを切断して、7segduinoのコネクタに接続しました。
また、同じコネクタから電源を供給するためのケーブルも出しました。
FTDIアダプタ経由で7segduinoにプログラムを書き込んだ後、コネクタをつなげば動作します。
GPSが衛星をとらえるまで5分から10分程度かかります。
(了)