Advertisement
Dmitry77

Николаю на курятник 2

Jan 22nd, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.40 KB | None | 0 0
  1. //в конструкторе кода перед сборкой прошивки в окно "Глобальные переменные" вставить 0
  2. //,а
  3. // в окно "Количество настроек" этот текст без кавычек :  "темпер.......вкл.,темпер......выкл.,час........вкл..1,мин........вкл..1,час.......выкл..1,мин.......выкл..1,час........вкл..2,мин........вкл..2,час.......выкл..2,мин.......выкл..2,влажность....вкл.,влажность...выкл."
  4.  
  5. //Датчик sht10, при меньше 11 градусов должно включаться, а при 12 выключаться гпио 16
  6. //Свет в 6-00 вкл,в 9-00 вык., в 15-00 вкл, в 21-00 вык Реле на 13 гипио
  7. //Влажность вкл при 80% выкл. при 70 % вентилятор на 5 гипио
  8.  
  9. uint8_t i;
  10. 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};//массив настроек ,при неправильных ставим рекомендуемое значение
  11. int32_t tempSave=1;//запоминаемая входная температура ,если это не данные ошибки с датчика
  12. int32_t tempVhod;//входная температура
  13. int32_t vlagVhod;//входная влажность
  14. uint8_t vremia_oshibki=0;//обнуляем счетчик длительности времени в течении которого датчик возможно будет в ошибке
  15. uint8_t gpio1=16; //номер гпио выход нагрев
  16. uint8_t gpio2=13; //номер гпио выход свет
  17. uint8_t gpio3=5; //номер гпио выход влажность
  18. bool time1=0;
  19. bool time2=0;
  20.  
  21. int32_t ustanovki(){ //обрабатываем массив значений,вызываемая функция
  22.     for(i=0;i<12;i++){
  23.         sensors_param.cfgdes[i] = ( sensors_param.cfgdes[i]<0 || cfg[i*2]<sensors_param.cfgdes[i] ) ? cfg[(i*2)+1]:sensors_param.cfgdes[i];
  24.     }
  25. }
  26.  
  27. void ICACHE_FLASH_ATTR startfunc(){ //ставим гпио на старте в ноль
  28.     digitalWrite(gpio1,0);
  29.     digitalWrite(gpio2,0);
  30.     digitalWrite(gpio3,0);
  31. }
  32.  
  33. void ICACHE_FLASH_ATTR timerfunc(uint32_t  timersrc) {
  34.    
  35.     ustanovki();
  36.    
  37.     tempVhod = sht10_t ;//датчик температуры
  38.     vlagVhod = sht10_h ;//датчик влажности
  39.    
  40.     if ( tempVhod != 0 && tempVhod != 850 && tempVhod != 2550 ) {
  41.         tempSave = tempVhod ;
  42.     }
  43.     else {
  44.         vremia_oshibki++ ;
  45.     }
  46.    
  47.     if ( 60 <= vremia_oshibki ){ //если датчик оборвало работаем минуту по сохраненному значению,если он не восстановится ,тогда уже станем в ошибкy
  48.         tempSave = tempVhod ;
  49.         vremia_oshibki = 0 ;
  50.     }
  51.    
  52.     if ( tempSave < (sensors_param.cfgdes[0]*10) ) //нагрев при меньше градусов включиться
  53.         digitalWrite(gpio1,1);
  54.     if ( (sensors_param.cfgdes[1]*10) <= tempSave ) //нагрев при градусов больше или равно выключиться
  55.         digitalWrite(gpio1,0);
  56.        
  57.     if ( sensors_param.cfgdes[2] < sensors_param.cfgdes[4] ) {
  58.         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] ) ) {
  59.             time1 = 1 ;
  60.         } else {
  61.             time1 =0 ;
  62.         }
  63.     } else {
  64.         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] ) ) {
  65.             time1 = 1 ;
  66.         } else {
  67.             time1 = 0 ;
  68.         }
  69.     }
  70.    
  71.     if ( sensors_param.cfgdes[6] < sensors_param.cfgdes[8] ) {
  72.         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] ) ) {
  73.             time2 = 1 ;
  74.         } else {
  75.             time2 =0 ;
  76.         }
  77.     } else {
  78.         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] ) ) {
  79.             time2 = 1 ;
  80.         } else {
  81.             time2 = 0 ;
  82.         }
  83.     }  
  84.    
  85.     if ( time1 || time2 )
  86.         digitalWrite(gpio2,1);
  87.    
  88.     if ( !time1 && !time2 )
  89.         digitalWrite(gpio2,0);
  90.    
  91.     if ( (sensors_param.cfgdes[10]*10)  <= vlagVhod) //вентилятор при больше  или равно влажности включиться
  92.         digitalWrite(gpio3,1);
  93.     if ( vlagVhod < (sensors_param.cfgdes[11]*10) ) //вентилятор при меньше влажности выключиться
  94.         digitalWrite(gpio3,0);
  95.        
  96. }
  97. void webfunc(char *pbuf) { 
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement