Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //в конструкторе кода перед сборкой прошивки в окно "Глобальные переменные" вставить 0
- //,а
- // в окно "Количество настроек" этот текст без кавычек : "темпер.......вкл.,темпер......выкл.,час........вкл..1,мин........вкл..1,час.......выкл..1,мин.......выкл..1,час........вкл..2,мин........вкл..2,час.......выкл..2,мин.......выкл..2,влажность....вкл.,влажность...выкл."
- //Датчик sht10, при меньше 11 градусов должно включаться, а при 12 выключаться гпио 16
- //Свет в 6-00 вкл,в 9-00 вык., в 15-00 вкл, в 21-00 вык Реле на 13 гипио
- //Влажность вкл при 80% выкл. при 70 % вентилятор на 5 гипио
- uint8_t i;
- uint8_t cfg[24]= {36,11,36,12,24,6,59,0,24,9,59,0,24,15,59,0,24,21,59,0,100,80,100,70};//массив настроек ,при неправильных ставим рекомендуемое значение
- int32_t tempSave=1;//запоминаемая входная температура ,если это не данные ошибки с датчика
- int32_t tempVhod;//входная температура
- int32_t vlagVhod;//входная влажность
- uint8_t vremia_oshibki=0;//обнуляем счетчик длительности времени в течении которого датчик возможно будет в ошибке
- uint8_t gpio1=16; //номер гпио выход нагрев
- uint8_t gpio2=13; //номер гпио выход свет
- uint8_t gpio3=5; //номер гпио выход влажность
- bool time1=0;
- bool time2=0;
- int32_t ustanovki(){ //обрабатываем массив значений,вызываемая функция
- for(i=0;i<12;i++){
- sensors_param.cfgdes[i] = ( sensors_param.cfgdes[i]<0 || cfg[i*2]<sensors_param.cfgdes[i] ) ? cfg[(i*2)+1]:sensors_param.cfgdes[i];
- }
- }
- void ICACHE_FLASH_ATTR startfunc(){ //ставим гпио на старте в ноль
- digitalWrite(gpio1,0);
- digitalWrite(gpio2,0);
- digitalWrite(gpio3,0);
- }
- void ICACHE_FLASH_ATTR timerfunc(uint32_t timersrc) {
- ustanovki();
- tempVhod = sht10_t ;//датчик температуры
- vlagVhod = sht10_h ;//датчик влажности
- if ( tempVhod != 0 && tempVhod != 850 && tempVhod != 2550 ) {
- tempSave = tempVhod ;
- }
- else {
- vremia_oshibki++ ;
- }
- if ( 60 <= vremia_oshibki ){ //если датчик оборвало работаем минуту по сохраненному значению,если он не восстановится ,тогда уже станем в ошибкy
- tempSave = tempVhod ;
- vremia_oshibki = 0 ;
- }
- if ( tempSave < (sensors_param.cfgdes[0]*10) ) //нагрев при меньше градусов включиться
- digitalWrite(gpio1,1);
- if ( (sensors_param.cfgdes[1]*10) <= tempSave ) //нагрев при градусов больше или равно выключиться
- digitalWrite(gpio1,0);
- if ( sensors_param.cfgdes[2] < sensors_param.cfgdes[4] ) {
- if ( ( time_loc.hour == sensors_param.cfgdes[2] && sensors_param.cfgdes[3] <= time_loc.min ) || ( sensors_param.cfgdes[2] < time_loc.hour && time_loc.hour <sensors_param.cfgdes[4] ) || ( time_loc.hour == sensors_param.cfgdes[4] && time_loc.min < sensors_param.cfgdes[5] ) ) {
- time1 = 1 ;
- } else {
- time1 =0 ;
- }
- } else {
- if ( ( time_loc.hour == sensors_param.cfgdes[2] && sensors_param.cfgdes[3] <= time_loc.min ) || ( sensors_param.cfgdes[2] < time_loc.hour && time_loc.hour <24 ) || ( 0 <= time_loc.hour && time_loc.hour < sensors_param.cfgdes[4] ) || ( time_loc.hour == sensors_param.cfgdes[4] && time_loc.min < sensors_param.cfgdes[5] ) ) {
- time1 = 1 ;
- } else {
- time1 = 0 ;
- }
- }
- if ( sensors_param.cfgdes[6] < sensors_param.cfgdes[8] ) {
- if ( ( time_loc.hour == sensors_param.cfgdes[6] && sensors_param.cfgdes[7] <= time_loc.min ) || ( sensors_param.cfgdes[6] < time_loc.hour && time_loc.hour <sensors_param.cfgdes[8] ) || ( time_loc.hour == sensors_param.cfgdes[8] && time_loc.min < sensors_param.cfgdes[9] ) ) {
- time2 = 1 ;
- } else {
- time2 =0 ;
- }
- } else {
- if ( ( time_loc.hour == sensors_param.cfgdes[6] && sensors_param.cfgdes[7] <= time_loc.min ) || ( sensors_param.cfgdes[6] < time_loc.hour && time_loc.hour <24 ) || ( 0 <= time_loc.hour && time_loc.hour < sensors_param.cfgdes[8] ) || ( time_loc.hour == sensors_param.cfgdes[8] && time_loc.min < sensors_param.cfgdes[9] ) ) {
- time2 = 1 ;
- } else {
- time2 = 0 ;
- }
- }
- if ( time1 || time2 )
- digitalWrite(gpio2,1);
- if ( !time1 && !time2 )
- digitalWrite(gpio2,0);
- if ( (sensors_param.cfgdes[10]*10) <= vlagVhod) //вентилятор при больше или равно влажности включиться
- digitalWrite(gpio3,1);
- if ( vlagVhod < (sensors_param.cfgdes[11]*10) ) //вентилятор при меньше влажности выключиться
- digitalWrite(gpio3,0);
- }
- void webfunc(char *pbuf) {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement