#include <WiFi.h>
#include <time.h>
unsigned long time_data = 0;
#define JST 3600* 9
//ご自身の環境に合わせて変更して下さい。
const char* ssid = "xxxxxxxxxxxx";
const char* password = "xxxxxxxxxxxx";
int i = 0;
//pinの割り当て
int pinA = 23;
int pinB = 14;
int pinC = 33;
int pinD = 26;
int pinE = 27;
int pinF = 12;
int pinG = 32;
int pinDP = 25;
int D1 = 5;
int D2 = 18;
int D3 = 19;
int D4 = 21;
int t = 250; // time delay
void setup() {
Serial.begin(115200);
delay(100);
Serial.print("\n\nStart\n");
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(500);
}
Serial.println();
Serial.printf("Connected, IP address: ");
Serial.println(WiFi.localIP());
time_data = millis();
configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
// pinの初期化
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(pinDP, OUTPUT); //今回不使用
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
}
void loop() {
time_t t;
struct tm *tm;
t = time(NULL);
tm = localtime(&t);
int h10 = (("%02d",tm->tm_hour) / 10) % 10 ;
int h1 = (("%02d",tm->tm_hour) / 1) % 10 ;
int m10 = (("%02d",tm->tm_min) / 10) % 10 ;
int m1 = (("%02d",tm->tm_min) / 1) % 10 ;
getTime();
//4桁をOFF
write_D1();
print_off();
delay(1);
write_D2();
print_off();
delay(1);
write_D3();
print_off();
delay(1);
write_D4();
print_off();
delay(1);
if(m1 == 0){
write_D1();
print_0();
delay(1);
}
if(m1 == 1){
write_D1();
print_1();
delay(1);
}
if(m1 == 2){
write_D1();
print_2();
delay(1);
}
if(m1 == 3){
write_D1();
print_3();
delay(1);
}
if(m1 == 4){
write_D1();
print_4();
delay(1);
}
if(m1 == 5){
write_D1();
print_5();
delay(1);
}
if(m1 == 6){
write_D1();
print_6();
delay(1);
}
if(m1 == 7){
write_D1();
print_7();
delay(1);
}
if(m1 == 8){
write_D1();
print_8();
delay(1);
}
if(m1 == 9){
write_D1();
print_9();
delay(1);
}
if(m10 == 0){
write_D2();
print_0();
delay(1);
}
if(m10 == 1){
write_D2();
print_1();
delay(1);
}
if(m10 == 2){
write_D2();
print_2();
delay(1);
}
if(m10 == 3){
write_D2();
print_3();
delay(1);
}
if(m10 == 4){
write_D2();
print_4();
delay(1);
}
if(m10 == 5){
write_D2();
print_5();
delay(1);
}
if(h1 == 0){
write_D3();
print_0();
delay(1);
}
if(h1 == 1){
write_D3();
print_1();
delay(1);
}
if(h1 == 2){
write_D3();
print_2();
delay(1);
}
if(h1 == 3){
write_D3();
print_3();
delay(1);
}
if(h1 == 4){
write_D3();
print_4();
delay(1);
}
if(h1 == 5){
write_D3();
print_5();
delay(1);
}
if(h1 == 6){
write_D3();
print_6();
delay(1);
}
if(h1 == 7){
write_D3();
print_7();
delay(1);
}
if(h1 == 8){
write_D3();
print_8();
delay(1);
}
if(h1 == 9){
write_D3();
print_9();
delay(1);
}
if(h10 == 0){
write_D4();
print_0();
delay(1);
}
if(h10 == 1){
write_D4();
print_1();
delay(1);
}
if(h10 == 2){
write_D4();
print_2();
delay(1);
}
}
//30分毎にインターネットと同期
void getTime(){
if(millis()-time_data > 60000 * 30){
configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
time_data = millis();
}
}
//各桁書込み設定
void write_D1()
{
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
digitalWrite(D3, LOW);
digitalWrite(D4, LOW);
}
void write_D2()
{
digitalWrite(D1, LOW);
digitalWrite(D2, HIGH);
digitalWrite(D3, LOW);
digitalWrite(D4, LOW);
}
void write_D3()
{
digitalWrite(D1, LOW);
digitalWrite(D2, LOW);
digitalWrite(D3, HIGH);
digitalWrite(D4, LOW);
}
void write_D4()
{
digitalWrite(D1, LOW);
digitalWrite(D2, LOW);
digitalWrite(D3, LOW);
digitalWrite(D4, HIGH);
}
// 数字書き込み設定
void print_0() // writing 0
{
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
digitalWrite(pinDP, HIGH); // the decimal point is always off by default
}
void print_1() // writing 1
{
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
digitalWrite(pinDP, HIGH);
}
void print_2() // writing 2
{
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, LOW);
digitalWrite(pinDP, HIGH);
}
void print_3() // writing 3
{
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinDP, HIGH);
}
void print_4() // writing 4
{
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinDP, HIGH);
}
void print_5() // writing 5
{
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinDP, HIGH);
}
void print_6() // writing 6
{
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinDP, HIGH);
}
void print_7() // writing 7
{
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
digitalWrite(pinDP, HIGH);
}
void print_8() // writing 8
{
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinDP, HIGH);
}
void print_9() // writing 9
{
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinDP, HIGH);
}
void print_off(){
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
digitalWrite(pinDP, HIGH);
}
//今回は使用してません。
void print_decimal() // writing the decimal point
{
digitalWrite(pinDP, HIGH);
}