ถ้าผมต้องการที่จะตั้งค่าให้เปิดปิดเครื่องใช้ไฟฟ้าให้ได้หลายช่วงเวลา เช่น เปิด 9 โมง ปิด 10 โมง แล้วมาเปิดอีกที 14 โมง ปิด 15 โมง ต้องเขียนโปรแกรมลงบอร์ด Arduino NUO R3 ยังไงครับ
อันนี้ Code ที่ผมเขียนครับ ได้โปรดช่วยตอบหน่อยน่ะครับ พอดีหัดทำจะเอาไปช่วยนักเรียน
#define SCK_PIN 2
#define IO_PIN 3
#define RST_PIN 4
#include <DS1302.h>
#include <RTClib.h>
#include <SPI.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//#define I2C_ADDR 0x27 //or 0x3F
//#define BACKLIGHT_PIN 3
//LiquidCrystal_I2C lcd(I2C_ADDR,2,1,0,4,5,6,7);
LiquidCrystal_I2C lcd(0x3F,16,2);
//DS1302 rtc(RST_PIN, IO_PIN, SCK_PIN);
DS1302 rtc(4,3,2);
Time t; //ตัวแปร t ชนิดเวลา
void setup() {
//lcd.begin(16.2); //initializa o lcd
lcd.begin();
//lcd.backlight(); //acende a luz de fundo no lcd
//lcd.setBacklight(BACKLIGHT_PIN,POSITIVE);
//lcd.setBacklight(HIGH);
Serial.begin(9600);
//Serial.printh();
pinMode(7,OUTPUT);
rtc.halt(false);
rtc.writeProtect(false);
}
void loop() {
//Get data from the DS1302
t=rtc.getTime(); //ดึงเวลาเข้ามาไว้ในตัวแปร t
//ตั้งเวลา
//rtc.setDOW(TUESDAY); // Set Day-of-Week to FRIDAY
//rtc.setTime(3, 42, 00); // Set the time to 12:00:00 (24hr format)
//rtc.setDate(2, 7, 2017); // Set the date to August 6th, 2010
Serial.print("\n");
if(t.hour<10){Serial.print(0);}
Serial.print(t.hour,DEC);
Serial.print(":");
if(t.min<10){Serial.print(0);}
Serial.print(t.min,DEC);
Serial.print(":");
if(t.sec<10){Serial.print(0);}
Serial.print(t.sec,DEC);
lcd.setCursor(0,0);
lcd.print("Time");
lcd.setCursor(5,0);
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Day");
lcd.setCursor(5,1);
lcd.print(rtc.getDateStr(FORMAT_SHORT));
if((t.hour==3)&&(t.min==32)&&(t.sec==10))
{
digitalWrite(7,LOW);
}
if((t.hour==3)&&(t.min==32)&&(t.sec==20))
{
digitalWrite(7,HIGH);
}
if((t.hour==3)&&(t.min==32)&&(t.sec==30))
{
digitalWrite(7,LOW);
}
if((t.hour==3)&&(t.min==32)&&(t.sec==40))
{
digitalWrite(7,HIGH);
}
delay(1000);
}
จากโคดน่าจะพอใช้ได้แล้ว แก้เวลาให้ตรงตามต้องการ ทดลองอีกนิดน่าจะใช้ได้ครับ