Пример использования таймера:
void ICACHE_FLASH_ATTR read_esp(){
// тут пишем код, который будет вызываться по таймеру
}
static os_timer_t esp_timer; // глобально объявим таймер esp_timer
// запуск таймера:
os_timer_disarm(&esp_timer);
os_timer_setfn(&esp_timer, (os_timer_func_t *)read_esp, NULL); // read_esp -функцию, которую нужно вызвать по таймеру.
os_timer_arm(&esp_timer, 1000, 1); // 1000 миллисекунд. 1 - многократно. 0 -однократно.
Пример вывода float данных из INT умноженных на 10:
os_sprintf(HTTPBUFF,"dhtt1=%s",strtofl(dht_t1));
Пример вывода данных с датчика без дробной части:
os_sprintf(HTTPBUFF,"dhtt1=%d",dht_t1/10);
Вывод своего текста на LCD:
LCD_print(номер строки,текст);
Вывод своего текста на OLED:
OLED_print(номер строки,текст, шрифт);
Вывод своего текста на TFT дисплее
TFT_print(номер строки,текст,шрифт,цвет,центр 1/0);
Вывод своего текста на MAX7219
MATRIX_print (текст,шрифт, скорость бегущей строки);
Если скорость ровна нулю, то текст не двигается.
Вывод своего текста на Nextion HMI
NEXTION_print(ID поля,текст поля);
Для вывода на дисплеи своего текста необходимо задать в соответствующей строке "Out msg". Для датчиков интервал вывода текста менее 10 секунд не имеет смысла. Используйте if(timersrc%10==0){ код }
Пример тут:
void ICACHE_FLASH_ATTR
startfunc(){
// start funs
}
void ICACHE_FLASH_ATTR
timerfunc(uint32_t timersrc) {
if(timersrc%10==0){
char data[30];
os_sprintf(data,"ROOM: %s t ",strtofl(dht_t1));
// выводим через две os_sprintf и склеиваем , т.к. две strtofl() в одной не работает.
os_sprintf(data+os_strlen(data),"%s %",strtofl(dht_h1));
// нулевая строка, шрифт номер 1.
OLED_print(0,data, 1);
}
}
void webfunc(char *pbuf) {
// пусто
}
Пример вывода времени на LCD (часть кода):
char data[30];
os_sprintf(data, "%02d:%02d", time_loc.hour, time_loc.min);
LCD_print(0,data);
Пример отправки данных на сервер по TCP
static
void ICACHE_FLASH_ATTR
tcpclient_connect_user(void *arg)
{
struct espconn *pespconn = (struct espconn *)arg;
char payload[512];
espconn_regist_sentcb(pespconn, tcpclient_sent_cb);
espconn_regist_disconcb(pespconn, tcpclient_discon_cb);
os_sprintf(payload,"GET /test.php"); // путь к файлу на сервере
os_sprintf(payload+ os_strlen(payload),"?dhtt=%s",strtofl(dht_t1)); // отправка параметра 1
os_sprintf(payload+ os_strlen(payload),"&dhth=%s",strtofl(dht_h1)); // отправка параметра 2
os_sprintf(payload+ os_strlen(payload)," HTTP/1.1\r\nHost: testdomen\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n");
espconn_sent(pespconn, payload, strlen(payload));
}
static
void ICACHE_FLASH_ATTR
sendusertcp() // вызываемая функция
{
struct espconn *pCon = (struct espconn *)os_zalloc(sizeof(struct espconn));
if (pCon == NULL)
{
// ошибка
return;
}
pCon->type = ESPCONN_TCP;
pCon->state = ESPCONN_NONE;
pCon->proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp));
pCon->proto.tcp->local_port = espconn_port();
pCon->proto.tcp->remote_port = 80; // порт
uint32_t ip = ipaddr_addr("192.168.1.100"); // сервер
os_memcpy(pCon->proto.tcp->remote_ip, &ip, 4);
espconn_regist_connectcb(pCon, tcpclient_connect_user); // функция отправки GET запроса
espconn_regist_reconcb(pCon, tcpclient_recon_cb);
espconn_connect(pCon);
}