lnwshop logo
  • ตอบกระทู้
  • ตั้งกระทู้ใหม่
QUOTE 

การตั้งเวลาด้วย DS1302

ครูต๊ะ
ครูต๊ะ
IP: 171.4.91.x
2 เดือนที่ผ่านมา

ถ้าผมต้องการที่จะตั้งค่าให้เปิดปิดเครื่องใช้ไฟฟ้าให้ได้หลายช่วงเวลา เช่น เปิด 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);

}

QUOTE 
ความคิดเห็นที่ #1
เจ้าของร้าน
เจ้าของร้าน
2 เดือนที่ผ่านมา

จากโคดน่าจะพอใช้ได้แล้ว แก้เวลาให้ตรงตามต้องการ ทดลองอีกนิดน่าจะใช้ได้ครับ

1
แสดงความคิดเห็นที่ 1-1 จากทั้งหมด 1 ความคิดเห็น
ข้อความ
ชื่อผู้โพส
ข้อมูลสำหรับการติดต่อกลับ (ไม่เปิดเผย เห็นเฉพาะเจ้าของร้าน)
อีเมล
เบอร์มือถือ
  • ตอบกระทู้

หมวดหมู่สินค้า

สมาชิก Arduino All

เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

ยังไม่มีบัญชีเทพ สร้างบัญชีใหม่ ไม่เกิน 5 นาที
สมัครสมาชิก (ฟรี)

Arduino All ขายดี

รหัสสินค้า A015
270.00 บาท
  • สั่งซื้อ
รหัสสินค้า A233
5.00 บาท
  • สั่งซื้อ
รหัสสินค้า A115
10.00 บาท
  • สั่งซื้อ
รหัสสินค้า A238
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A097
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A014
90.00 บาท
  • สั่งซื้อ
รหัสสินค้า A474
5.00 บาท
  • สั่งซื้อ
รหัสสินค้า A237
4.00 บาท
  • สั่งซื้อ
Go to Top