ความรู้แน่น ฟรีสำหรับชุมชน ArduinoAll ที่นี่เท่านั้น

ฟรีและดีที่สุด คอร์สอบรม Arduino + NodeMCU
ทำเพื่อแบ่งปัน ห้ามนำไปจำหน่าย หรือเก็บเงินค่าเรียน
  !!!


  


AllNewStep รับประกันคุณภาพทุกชิ้น วันจันทร์-ศุกร์แจ้งชำระสินค้าก่อน 14.00 จัดส่งทันทีวันนี้ค่ะ

กรุงเทพ /ภาคกลาง ได้พรุ่งนี้


*** สินค้าทุกชิ้น ถ้าสามารถทำรายการสั่งซื้อได้ แสดงว่ามีครบทุกรายการค่ะ *** 

พิมพ์ค้นหาบทความ หัวข้อกระทู้ และสินค้าในเว็บ AllNewStep ได้ที่นี่
QUOTE 

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

ครูต๊ะ

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

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

แสดงความคิดเห็นที่ 1-1 จากทั้งหมด 1 ความคิดเห็น
ขาย ARDUINO
คุณภาพ อันดับ 1

ได้รับรางวัลร้านยอดเยี่ยม
ตั้งแต่ปี 2558
ขาย Arduino
วีดีโอสอน Arduino

สอน esp8266

สอน Arduino IoT
สอน Arduino แบบเร็ว

สอน NodeMCU

อุปกรณ์ Arduino

MEMBER ZONE

พูดคุย-สอบถาม