Aamir Shaheen
New Member
hi all,
Recently i am facing problem while dealing with softRTC alarms, i found that alarm for 1 minuts or 15 minuts and also 25 minuts is working fine, but when i use hourly alarm, then its triggering too early. i found that hourly alarm is triggering just after 43 minutes instead of 1 hour.
i am developing egg hatching machine, for that i need to set alarms for every event. so i dont know where the problem is.
here is SoftRTC test Code i am using
Recently i am facing problem while dealing with softRTC alarms, i found that alarm for 1 minuts or 15 minuts and also 25 minuts is working fine, but when i use hourly alarm, then its triggering too early. i found that hourly alarm is triggering just after 43 minutes instead of 1 hour.
i am developing egg hatching machine, for that i need to set alarms for every event. so i dont know where the problem is.
here is SoftRTC test Code i am using
SofRTC alarm Code:
Sub Process_Globals
Public Serial1 As Serial
Private DT(8) As Byte
Private rtc As ESP8266rtc
Private lcd As LiquidCrystal_I2C
Private beep As Pin
Private Timer1 As Timer
Private counter As Int
End Sub
Private Sub AppStart
Serial1.Initialize(115200)
lcd.Initialize(0x27,16,2)
lcd.Backlight=True
beep.Initialize(0,beep.MODE_OUTPUT)
Timer1.Initialize("Timer_Tick",1000)
lcd.Write("Started")
Log("AppStart")
rtc.Initialize("rtc_Alarm",False)
Log("RTC Initialised")
counter=0
'date .. 10th March 2017 (GMT)
DT(0) = 20 '21st century (ie 2000)
DT(1) = 25 'year
DT(2) = 1 'month
DT(3) = 1 'day
DT(4) = 0 'hour (0-23)
DT(5) = 00 'minute
DT(6) = 00 'seconds
DT(7) = 0 'not required.
rtc.SetClock(DT,0,0) 'offset for Western Australia. DT +08:00
Log("RTC is set")
Log(rtc.ReadClock(DT))
Log("RTC: ",DT(0),",",DT(1),",",DT(2),",",DT(3),",",DT(4),",",DT(5),",",DT(6),",",DT(7))
rtc.SetAlarm(3,rtc.Sec2DT(rtc.DT2Sec(DT)+rtc.SECONDS_1MINUTE*15))
rtc.SetAlarm(4,rtc.Sec2DT(rtc.DT2Sec(DT)+rtc.SECONDS_1MINUTE*30))
rtc.SetAlarm(5,rtc.Sec2DT(rtc.DT2Sec(DT)+rtc.SECONDS_1HOUR))
Timer1.Enabled=True
Log("RTC is running")
End Sub
private Sub rtc_Alarm(index As Byte)
If index=3 Then
'tick every second
rtc.ReadClock(DT)
lcd.Clear
lcd.SetCursor(2,0)
lcd.Write(rtc.Time24(DT))
lcd.SetCursor(2,1)
lcd.Write(rtc.ShortDate(DT))
Log("RTC: ",rtc.ShortDOW(DT),", ",rtc.ShortDate(DT),", ",rtc.Time24(DT))
counter=counter+1
beep.DigitalWrite(True)
Delay(2000)
beep.DigitalWrite(False)
else if index=4 Then
counter=counter+1
beep.DigitalWrite(True)
Delay(2000)
beep.DigitalWrite(False)
else if index=5 Then
counter=counter+1
beep.DigitalWrite(True)
Delay(2000)
beep.DigitalWrite(False)
End If
Log("AlarmEvent: ",index)
Log(rtc.DT2Sec(DT))
End Sub
private Sub Timer_Tick
rtc.ReadClock(DT)
lcd.Clear
lcd.SetCursor(2,0)
lcd.Write(rtc.Time24(DT))
lcd.SetCursor(2,1)
lcd.Write(counter)
Log(rtc.Time24(DT))
End Sub