#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <TimeLib.h>
#include <WidgetRTC.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
char ssid[] = "xxxxxxxxx";
char pass[] = "xxxxxxxxxxxxxx";
BlynkTimer timer;
WidgetRTC rtc;
int Hours_up = 0;
int Minutes_up = 0;
int Seconds_up = 0;
int HighMillis = 0;
int Rollover = 0;
void uptime()
{
if (millis()>=3000000000){
HighMillis=1;
}
if (millis()<=100000&&HighMillis==1){
Rollover++;
HighMillis=0;
}
long secsUp = millis()/1000;
Seconds_up = secsUp%60;
Minutes_up = (secsUp/60)%60;
Hours_up = (secsUp/(60*60))%24;
}
// Digital clock display of the time
void clockDisplay()
{
char upHours[16];
String currentTime = String(hour()) + " : " + minute() + " : " + second();
String currentDate = String(day()) + " / " + month() + " / " + year();
Serial.print("Current time: ");
Serial.print(currentTime);
Serial.print(" ");
Serial.print(currentDate);
Serial.println();
Blynk.virtualWrite(V1, currentTime);
Blynk.virtualWrite(V2, currentDate);
uptime();
sprintf(upHours, "%02d:%02d:%02d", Hours_up, Minutes_up, Seconds_up);
Blynk.virtualWrite(V3, upHours);
Blynk.virtualWrite(V4, upHours);
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
rtc.begin();
timer.setInterval(1000L, clockDisplay);
}
void loop()
{
if(digitalRead(D0)==LOW){
(Blynk.virtualWrite(V5, 0));
}else{
(Blynk.virtualWrite(V5, 255));
}
if(digitalRead(D5)==LOW){
(Blynk.virtualWrite(V6, 0));
}else{
(Blynk.virtualWrite(V6, 255));
}
Blynk.run();
timer.run();
}
โดยจะเขียนเป็นการจับเวลาค่ะ
คือถ้า ไฟเปิด D0 ให้มีการจับเวลาใน V4 ค่ะ
ควรเขียนตรงไหนคะพี่ ขอคำแนะนำด้วยค่ะ
มีแนะนำวิธีเขียนโคดจับเวลา วิธีใชงาน และโคดตัวอย่างในคอร์สเรียน Arduino Starter เรียนฟรี ที่หน้าเว็บครับ