timer function
This commit is contained in:
parent
bf1de69f24
commit
86d4d3f3d1
|
@ -336,7 +336,7 @@ void thread_initialization()
|
|||
eeprom_pwm_updater.onRun(eeprom_pwm_update);
|
||||
eeprom_pwm_updater.setInterval(1000);
|
||||
user_timer_tick.onRun(timer_tick_callback);
|
||||
user_timer_tick.setInterval(5000);
|
||||
user_timer_tick.setInterval(15000);
|
||||
}
|
||||
|
||||
void pwm_state_callback(String topic, String message)
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
#include "espmega_iot_timer.hpp"
|
||||
|
||||
void Timer::loop() {
|
||||
rtctime_t curtime = ESPMega_getTime();
|
||||
if(today!=curtime.day) {
|
||||
today=curtime.day;
|
||||
timer_ran_today = false;
|
||||
ESPMega_FRAM.write8(fram_address,timer_ran_today);
|
||||
}
|
||||
if (!timer_ran_today && (hr < curtime.hours || (hr == curtime.hours && min <= curtime.minutes))) {
|
||||
timer_ran_today = true;
|
||||
ESPMega_FRAM.write8(fram_address,timer_ran_today);
|
||||
timer_callback();
|
||||
}
|
||||
}
|
||||
|
||||
Timer::Timer(uint8_t hour,uint8_t minute,void(*timer_callback)(), uint32_t fram_address) {
|
||||
rtctime_t curtime = ESPMega_getTime();
|
||||
this-> today = curtime.day;
|
||||
this->hr = hour;
|
||||
this->min = minute;
|
||||
this->timer_callback = timer_callback;
|
||||
this->fram_address = fram_address;
|
||||
this-> timer_ran_today = ESPMega_FRAM.read8(fram_address);
|
||||
loop();
|
||||
}
|
||||
|
||||
void Timer::set(uint8_t hour,uint8_t minute) {
|
||||
rtctime_t curtime = ESPMega_getTime();
|
||||
if ((hr < curtime.hours || (hr == curtime.hours && min <= curtime.minutes))) {
|
||||
this->timer_ran_today = true;
|
||||
ESPMega_FRAM.write8(fram_address,timer_ran_today);
|
||||
|
||||
} else {
|
||||
this->timer_ran_today = false;
|
||||
ESPMega_FRAM.write8(fram_address,timer_ran_today);
|
||||
}
|
||||
hr = hour;
|
||||
min = minute;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
#pragma once
|
||||
#include <ESPMegaPRO.h>
|
||||
|
||||
class Timer {
|
||||
public:
|
||||
void loop();
|
||||
Timer(uint8_t hour,uint8_t minute,void(*timer_callback)(), uint32_t fram_address);
|
||||
void set(uint8_t hour,uint8_t minute);
|
||||
private:
|
||||
uint8_t today;
|
||||
uint8_t timer_ran_today;
|
||||
uint8_t hr;
|
||||
uint8_t min;
|
||||
uint32_t fram_address;
|
||||
void (*timer_callback)();
|
||||
};
|
|
@ -1,37 +1,57 @@
|
|||
#include <user_code.hpp>
|
||||
int today = 0;
|
||||
bool timer1_ran_today = false;
|
||||
uint8_t timer1_hr = 0;
|
||||
uint8_t timer1_min = 15;
|
||||
uint8_t today = 0;
|
||||
|
||||
/*
|
||||
This Code will run right after ESPMega PRO's
|
||||
Peripheral Initialization Routine
|
||||
*/
|
||||
void user_pre_init() {
|
||||
|
||||
void user_pre_init()
|
||||
{
|
||||
timer1_ran_today = ESPMega_FRAM.read8(15000);
|
||||
rtctime_t curtime = ESPMega_getTime();
|
||||
today = curtime.day;
|
||||
}
|
||||
|
||||
/*
|
||||
This code will run after every component is initialized
|
||||
*/
|
||||
void user_init() {
|
||||
|
||||
void user_init()
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
This code will run once every event loop
|
||||
*/
|
||||
void user_loop() {
|
||||
|
||||
void user_loop()
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
This code will run when an input pin changed state
|
||||
*/
|
||||
void virtual_interrupt_user_callback(int pin, int state) {
|
||||
|
||||
void virtual_interrupt_user_callback(int pin, int state)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
This code will run every 5 seconds
|
||||
This code will run every 15 seconds
|
||||
*/
|
||||
void timer_tick_callback() {
|
||||
|
||||
void timer_tick_callback()
|
||||
{
|
||||
rtctime_t curtime = ESPMega_getTime();
|
||||
if(today!=curtime.day) {
|
||||
today=curtime.day;
|
||||
timer1_ran_today = false;
|
||||
}
|
||||
if (!timer1_ran_today && (timer1_hr < curtime.hours || (timer1_hr == curtime.hours && timer1_min <= curtime.minutes)))
|
||||
{
|
||||
timer1_ran_today = true;
|
||||
ESPMega_FRAM.write8(15000,timer1_ran_today);
|
||||
pwm_set_state(1,true);
|
||||
pwm_set_value(1,2000);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
#pragma once
|
||||
#include <ESPMegaPRO.h>
|
||||
#include <EasyNextionLibrary.h>
|
||||
|
||||
|
||||
|
||||
#include "espmega_iot_timer.hpp"
|
||||
|
||||
// External LCD Configuration
|
||||
#define ENABLE_EXTERNAL_LCD
|
||||
|
|
Loading…
Reference in New Issue