« Linux Mint 19.1 に Virus 対応ソフト ClamAV を Install | Main | Arduino UNO で周囲が暗くなったらLEDを点灯する回路 »

05/26/2019

TM1637を使ってGPS時計を作ってみた

GPS時計は、3つの構成部品とジャンパーケーブルで実現できた。
Img_20190524_164610  Img_20190525_074504
 
構成部品
①GPSユニット:太陽誘電製の小型高感度GPSモジュールGYSFDMAXB
②表示ユニット:4桁7セグメントモジュール TM1637
③Arduino : NANO


Fritzing を使って回路を描いてみた。
 Gpsfritzing2 木造家屋の、窓から約4mの壁に取り付けてみたが、本題なく表示できた。



Sketch

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include "SevenSegmentTM1637.h"
#include "SevenSegmentExtended.h"
static const int RXPin = 4, TXPin = 3;  // TX -> D4, RX -> D3
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
const byte PIN_CLK = 6;   // define CLK pin (any digital pin)
const byte PIN_DIO = 7;   // define DIO pin (any digital pin)
SevenSegmentExtended      display(PIN_CLK, PIN_DIO);
int Satellites = 12;
int hours = 0;
int minutes = 0;
int wasMinute = 99; // used for blanking leading zero
int DSTEST = 9;
int TwelveTwentyFour = 24;
void setup() {
 Serial.begin(115200);
 ss.begin(GPSBaud);
 display.begin();            // initializes the display
 display.setBacklight(100);  // set the brightness to 100 %
 delay(1000);                // wait 1000 ms
 hours = 99;
 minutes = 99;
 display.printTime(hours, minutes, true);  // display time
 pinMode(Satellites, INPUT_PULLUP);
 delay(1000);
}
void loop() {
 while (ss.available() > 0)
   if (gps.encode(ss.read()))
     displayInfo();
 if (millis() > 5000 && gps.charsProcessed() < 10)   {
   Serial.println(F("No GPS detected: check wiring."));
   while (true);
 }
}
void displayInfo() {
 int SW5 = digitalRead(Satellites);
 if (SW5 == LOW) {
   display.print("Sat=");
   delay(500);
   display.clear();
   int temp = gps.satellites.value();
   Serial.print("temp = ");
   Serial.println(temp);
   display.print(gps.satellites.value());
   Serial.print("Satellites Seen = ");
   Serial.println(gps.satellites.value());
   delay(1000);
 }
 Serial.print(F("Location: "));
 if (gps.location.isValid())  {
   Serial.print(gps.location.lat(), 6);
   Serial.print(F(","));
   Serial.print(gps.location.lng(), 6);
 }
 else
 {
   Serial.print(F("INVALID"));
 }
 Serial.print(F("  Date/Time: "));
 if (gps.date.isValid())   {
   Serial.print(gps.date.month());
   Serial.print(F("/"));
   Serial.print(gps.date.day());
   Serial.print(F("/"));
   Serial.print(gps.date.year());
 }
 else
 {
   Serial.print(F("INVALID"));
 }
 Serial.print(F(" "));
 if (gps.time.isValid())   {
   if (gps.time.hour() < 10) Serial.print(F("0"));
   Serial.print(gps.time.hour() + 9 ); // time ZONE mod
   Serial.print(F(":"));
   if (gps.time.minute() < 10) Serial.print(F("0"));
   Serial.print(gps.time.minute());
   Serial.print(F(":"));
   if (gps.time.second() < 10) Serial.print(F("0"));
   Serial.print(gps.time.second());
   Serial.print(F("."));
   if (gps.time.centisecond() < 10) Serial.print(F("0"));
   Serial.print(gps.time.centisecond());
/////////////////To Clock LED Display/////////////////////////////
   int hours = gps.time.hour(); 
   Serial.print(" DST = ");    Serial.print(DSTEST);    int timezonehr = DSTEST;    hours = hours + timezonehr;    if (hours > TwelveTwentyFour - 1) {      hours = hours - TwelveTwentyFour;      if (hours == 0) hours = 12; // make sure shows 12 at noon    }    else {      if (hours < 0) {        hours = hours + TwelveTwentyFour;      }    } /////////////////To Clock LED Display/////////////////////////////    int minutes = gps.time.minute();    if (minutes  != wasMinute) {      Serial.print("Hours just before sent to LED ");      Serial.println(hours);      display.printTime(hours, minutes, false);  // display time      if (   hours <= 9) {        display.print(" ");      }      wasMinute = minutes;    }  }  else  {    Serial.print(F("INVALID"));  }  Serial.println(); }


参考にしたブログ
7セグLED表示 その7 4文字-TM1637
GPS Set Clock ・・・ Sketchは、このブログを引用して作成させて貰った。

« Linux Mint 19.1 に Virus 対応ソフト ClamAV を Install | Main | Arduino UNO で周囲が暗くなったらLEDを点灯する回路 »

GPS」カテゴリの記事

Arduino」カテゴリの記事

Comments

Post a comment

Comments are moderated, and will not appear on this weblog until the author has approved them.

(Not displayed with comment.)

« Linux Mint 19.1 に Virus 対応ソフト ClamAV を Install | Main | Arduino UNO で周囲が暗くなったらLEDを点灯する回路 »

July 2020
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Recent Trackbacks

無料ブログはココログ