Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Софт:обсуждение программного обеспечения для умного дома

ТЕМА: Простые примера для конструктора кода.

Простые примера для конструктора кода. 04 Фев 2017 23:31 #17032

  • AVL
  • AVL аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Сообщений: 39
  • Спасибо получено: 5
  • Репутация: -1
Всем привет!
Поделитесь, пожалуйста, простыми примерами Конструктоа Кода на Си.
С комментариями, если можно, что б понимать что и для чего деляется.
Спасибо!
Администратор запретил публиковать записи гостям.

Простые примера для конструктора кода. 05 Авг 2018 22:49 #22531

  • romans
  • romans аватар
  • Не в сети
  • Новый участник
  • Сообщений: 12
  • Репутация: 0
а можно бы пример, как засылать в сериал2 esp32 строки
так предполагается управлять подключенным к esp32 дисплеем nextion
Последнее редактирование: 05 Авг 2018 22:50 от romans.
Администратор запретил публиковать записи гостям.

Простые примера для конструктора кода. 11 Авг 2018 19:42 #22567

  • tolyan23
  • tolyan23 аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 84
  • Спасибо получено: 6
  • Репутация: 0
Врядли это подойдет под понятие простого но коментировать лень. Код автоматически управляет светом по датчику движения.
#define out_lamp 13
#define in_door 12
#define in_mov 2
long int N;
char prev_door,status;
char moving,block,in_door_read;
static os_timer_t esp_timer_scan,esp_timer_wait; // глобально объявим таймер esp_timer
// sensors_param.cfgdes[0] режим работы 0 выкл, 1 вкл 2 автоматический  
// sensors_param.cfgdes[1] время через которое будет автоматическое выключение
// valdes[0] status 
// valdes[1] режим работы для обратной связи
// valdes[2] таймаут для обратной связи


void ICACHE_FLASH_ATTR block_off()
{
block=0;
}


void ICACHE_FLASH_ATTR scan_inp()
{
valdes[1]=sensors_param.cfgdes[0];
valdes[2]=sensors_param.cfgdes[1];
if (sensors_param.cfgdes[0]==0)	// если выключено
	{digitalWrite(out_lamp,0);
	valdes[0]=0;
	}
if (sensors_param.cfgdes[0]==1)	// если режим включено
	{digitalWrite(out_lamp,1);
	valdes[0]=1;
	}
if ((sensors_param.cfgdes[0]==2)&&(block==0))	// если режим автоматический
	{
	moving=digitalRead(in_mov);
	if (moving==1)
		{
		N=0;
		digitalWrite(out_lamp,1);
		valdes[0]=1;
		}
	in_door_read=digitalRead(in_door);	
	if (in_door_read==1)
		{
		if (prev_door==0) 
			{
			N=0;
			digitalWrite(out_lamp,1);
			valdes[0]=1;
			}
		
		}	
	prev_door=in_door_read;	
	}	
}

void ICACHE_FLASH_ATTR
startfunc(){
sensors_param.cfgdes[0]=2;		// автоматический
if (sensors_param.cfgdes[1]>1000) {sensors_param.cfgdes[1]=30;}	
// выполняется один раз при старте модуля.
os_timer_disarm(&esp_timer_scan);
os_timer_setfn(&esp_timer_scan, (os_timer_func_t *)scan_inp, NULL); // таймер для опроса датчика 10 раз в секунду
os_timer_arm(&esp_timer_scan, 100, 1); // 100 миллисекунд. 1 - многократно. 0 -однократно.
}


void ICACHE_FLASH_ATTR
 timerfunc(uint32_t  timersrc) {
// выполнение кода каждую 1 секунду
if ((digitalRead(out_lamp))&&(sensors_param.cfgdes[0]==2))	// если лампа горит и режим работы автоматический
	{N++;	// подсчет секунд 
	if (N>=sensors_param.cfgdes[1])		// сравниваем с таймаутом
		{
		N=0;
		digitalWrite(out_lamp,0);
		valdes[0]=0;
		block=1;	// установка блокировки и таймера сброса блокировки
		os_timer_disarm(&esp_timer_wait);
		os_timer_setfn(&esp_timer_wait, (os_timer_func_t *)block_off, NULL); // read_esp -функцию, которую нужно вызвать по таймеру.
		os_timer_arm(&esp_timer_wait, 500, 0); // 0.5 секунд. 1 - многократно. 0 -однократно.
		}
	} 
if(timersrc%30==0){}
}

void webfunc(char *pbuf) {
os_sprintf(HTTPBUFF,"Это корридорный модуль<br>"); // вывод данных на главной модуля
os_sprintf(HTTPBUFF,"Он управляет светом в корридоре<br>");
os_sprintf(HTTPBUFF,"Code options 1 режим работы<br>");
os_sprintf(HTTPBUFF,"0 выкл 1 вкл 2 автоматический<br>");
os_sprintf(HTTPBUFF,"Code options 2 таймаут выключения<br>");
}
Администратор запретил публиковать записи гостям.
Модераторы: FlyRouter, Dolfik
Время создания страницы: 0.101 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.