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

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


  


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

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


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

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

ใช้ RTC ตั้งเวลา อีเว้น ให้ทำงาน 2 ครั้ง ทำยังไงครับยังไงครับ

Max

 

อยากตั้งเป็นช่วงเวลา 2 ช่วงเวลาให้ทำงสาน 2 ครั้งต้องเขียนยังไงครับ พอดีเขียนแล้วได้ครั้งเดียวครับ

#include "Wire.h"

#include "SPI.h"

#include "RTClib.h"

#include <Servo.h>

 

Servo myservo;

 

RTC_DS3231 RTC;

 

void setup () {

 

  myservo.attach(4);

 

  Serial.begin(9600);

  Wire.begin();

  RTC.begin();

  //RTC.adjust(DateTime(__DATE__, __TIME__));

 

  if (! RTC.isrunning()) {

    Serial.println("RTC is NOT running!");

    RTC.adjust(DateTime(__DATE__, __TIME__));

  }

 

  DateTime now = RTC.now();

  /* ตั้งเวลา ในตัวอย่างนี้ เซตค่าเป็นเวลา 23:09 ถ้าถึงเวลานี้จะให้ทำงานที่ฟังก์ชัน 

    RTC.setAlarm1Simple(23, 9);

   if (RTC.checkIfAlarm(1)) {

   Serial.println("Alarm Triggered");

   }*/

  RTC.setAlarm1Simple(00, 00);

  RTC.turnOnAlarm(1);

 

  if (RTC.checkAlarmEnabled(1)) {

    Serial.println("Alarm Enabled");

  }

 

}

 

void loop () {

 

  DateTime now = RTC.now();

  Serial.print(now.year(), DEC);

  Serial.print('/');

  Serial.print(now.month(), DEC);

  Serial.print('/');

  Serial.print(now.day(), DEC);

  Serial.print(' ');

  Serial.print(now.hour(), DEC);

  Serial.print(':');

  Serial.print(now.minute(), DEC);

  Serial.print(':');

  Serial.print(now.second(), DEC);

 

  //ตั้งเวลา ถึงเลาServoทำงาน//

  if (RTC.checkIfAlarm(1)) {

    myservo.write(0);

    delay(1000);

 

    myservo.write(360);

  }

  Serial.println();

  delay(1000);

}

 

ช่วงสีแดงผมตั้งให้เที่ยงคืนทำงาน 1 ครั้ง แต่ลองตั้งอีเว้นเพิ่มมันทำแต่อันที่ 2 แทนอันที่ 1 ไม่ทำครับ รบกวนช่วยหน่อยครับ

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

จากไลบารี การใช้งานคล้ายกัน

อ้างอิงจากไลบารี https://github.com/danielknox/rtclib/blob/master/RTClib.h

เรียกใช้ฟังก์ชันให้ถูกต้อง  void setAlarm2Simple(byte hour, byte minute);

แต่จากข้อมูลพบว่า setAlarm2Simple อาจจะไม่ทำงาน

 

ให้ลองเปลี่ยนมาใช้ไลบาลีตัวนี้แทน

https://github.com/FabioCuomo/FabioCuomo-DS3231

 

อีกวิธีคือ ใช้แค่ setAlarm1Simple() โดยเมื่อทำงานเวลาแรกเสร็จ ให้ตั้งเวลาใหม่เป็นครั้งต่อไปครับ

QUOTE 
ความคิดเห็นที่ #2
Max

 FabioCuomo ไลบาลีตัวนี้ทำหน้าที่ยังไงครับ ใช้ยังไงและใช้ตรงไหนครับ

แล้ว "อีกวิธีคือ ใช้แค่ setAlarm1Simple() โดยเมื่อทำงานเวลาแรกเสร็จ ให้ตั้งเวลาใหม่เป็นครั้งต่อไปครับ" อันนี้หมายความว่าไงครับ (ผมไม่อยากเข้ามาเซ็คใหม่ในโปรแกรมทุกครั้งครับ)

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

มีโคดตัวอย่างในไลบารีหลายแบบลองแกะตัวอย่าง

ตามที่แนะนำไปแล้ว คือ

ถ้าตั้งครั้งแรกทำงานตอน 12.00 เมื่อถึงเวลา 12.00 ให้เปลี่ยนเป็นตั้วเวลาใหม่คือ 24.00

เมื่อถึงเวลา 24.00 ก็ตั้งใหม่เป็น 12.00 สลับกันแบบนี้ครับ

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

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

สอน esp8266

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

สอน NodeMCU

อุปกรณ์ Arduino

MEMBER ZONE

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