powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм поливки на С.
25 сообщений из 46, страница 1 из 2
Алгоритм поливки на С.
    #39145218
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алгоритм поливки.
Есть электрический кран. Его надо открывать\закрывать.
Всего можно запрограмировать 4 открытия\закрыия на каждый день.
К примеру
Понедельник:
Open 12:00
Close 12:30
Open 14:00
Close 15:00
Open 19:00
Close 22:00
Среда:
Open 9:00
Close 11:00
Open 14:00
Close 14:15
Open 18:00
Close 18:30

вот сижу ломаю голову как это покрасивее претворить в жизнь.
у меня есть ощущение что все уже написано до нас. работают же поливочные контроллеры как то.
может кто нибудь решал что нибудь подобное ?
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145220
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

А открытие/закрытие крана - для компьютера это что?
Исполнительное устройство на входе что понимает?
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145221
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftjenya7,

А открытие/закрытие крана - для компьютера это что?
Исполнительное устройство на входе что понимает?

програма бежит на микроконтролере. а програмировать я планирую через терминал UART.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145224
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
открыть\закрыть - контролер даст сигнал на реле.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145247
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно взять 2 будильника. Два устройства.

Один будильник включает реле в 12.00... 14.00 e.t.c.
Другой - только выключает в 12.30 ... e.t.c.

Почему два? Ну.. так проще сигналы обработать.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145293
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7miksoftjenya7,

А открытие/закрытие крана - для компьютера это что?
Исполнительное устройство на входе что понимает?

програма бежит на микроконтролере. а програмировать я планирую через терминал UART.Ну так на микроконтроллере все и программируйте.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145306
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут тема программинга даже не прослеживается. Прошу модератора бросить это в вопрос-ответ.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145334
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

А вот и готовый девайс - geektimes.ru/company/dadget/blog/268466/
Если есть в продаже у нас, то и китайцев можно найти дешевле и в большем ассортименте вариантов.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145360
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftjenya7,

А вот и готовый девайс - geektimes.ru/company/dadget/blog/268466/
Если есть в продаже у нас, то и китайцев можно найти дешевле и в большем ассортименте вариантов.
в продаже есть все. мне надо встроить эту функцию в свой прибор.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145369
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7miksoftjenya7,

А вот и готовый девайс - geektimes.ru/company/dadget/blog/268466/
Если есть в продаже у нас, то и китайцев можно найти дешевле и в большем ассортименте вариантов.
в продаже есть все. мне надо встроить эту функцию в свой прибор.Поскольку вы о своем приборе старательно молчите, то могу только предложить примотать одно к другому синей изолетной.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145381
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftjenya7пропущено...

в продаже есть все. мне надо встроить эту функцию в свой прибор.Поскольку вы о своем приборе старательно молчите, то могу только предложить примотать одно к другому синей изолетной.
при чем тут вообще прибор? я спрашивую про алгоритм опроса програм(вкл\выкл) по дням. научитесь адекватно анализировать прочитанное.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145386
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7при чем тут вообще прибор? я спрашивую про алгоритм опроса програм(вкл\выкл) по дням.Ну так возможности "опроса программ" у каждого прибора свои.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145397
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftjenya7при чем тут вообще прибор? я спрашивую про алгоритм опроса програм(вкл\выкл) по дням.Ну так возможности "опроса программ" у каждого прибора свои.
у меня получилось что то такое
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
//check if the present day is active 
if (flashParam.solDay&(1<<rtc.rtcDayOfWeek))
{
     //run programs for the day
      for (prog_mum = 0; prog_mum < 4; prog_mum++)
	  SOLENOID_RunSol(prog_mum);
}


void SOLENOID_RunSol(uint32_t prog_mum)
{
	switch (solParam[prog_mum].solState)
	{
	    case IDLE:
	        solParam[prog_mum].solState = START;
		break;
	    case START:
	    	if (solParam[prog_mum].solStartHour == rtc.rtcHour && solParam[prog_mum].solStartMinute >= rtc.rtcMin)
	    	{
	    		SolenoidOn();
	    		solParam[prog_mum].solState = STOP;
	    	}
	    break;
	    case STOP:
	    	if ( (solParam[prog_mum].solStopHour == rtc.rtcHour && solParam[prog_mum].solStopMinute >= rtc.rtcMin))
	    	{
	    		SolenoidOff();
	    		solParam[prog_mum].solState = IDLE;
	    	}
	    break;
	    
	}
}


но что то мне это не нравиться.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145399
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7, ну как-то так

Алгоритм!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
while(....) {

 waitForTimerTick();

 getTimeFromTimer(timeis);

 if (stricmp(timeis,"12:00")){
    turnOnYourSink();
 }

 if (stricmp(timeis,"12:30")){
    turnOffYourSink();
 }

...
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145403
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7, а ну ОК. Твой алгоритм тоже наверное неплох.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145424
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonjenya7, ну как-то так

Алгоритм!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
while(....) {

 waitForTimerTick();

 getTimeFromTimer(timeis);

 if (stricmp(timeis,"12:00")){
    turnOnYourSink();
 }

 if (stricmp(timeis,"12:30")){
    turnOffYourSink();
 }

...

А еще лучше при каждом срабатывании "заводить" таймер на следующее время срабатывания.
Тогда микроконтроллер сможет спать все время, кроме сработок по расписанию.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145430
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

+1. Ну ... если есть возможность заводить то я не против.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145554
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145825
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Не будет работать =)

Надо сравнивать на больше или равно, а еще на пересекающиеся интервалы.
Еще могут быть подготовительные операции, типа "подогреть воду".

Идеология тут
https://ru.wikipedia.org/wiki/Конечный_автомат
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145837
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7но что то мне это не нравиться.
И правильно. Не надо тут запускать/останавливать работу девайса. Надо получить состояние которое должно быть в текущий момент, затем сравнить с реальным состоянием, если несовпало - изменить реальное состояние.

IDLE и STOP это чего? Должно быть два состояния IDLE и WORK
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145842
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимарглmayton,

Не будет работать =)

Надо сравнивать на больше или равно, а еще на пересекающиеся интервалы.
Еще могут быть подготовительные операции, типа "подогреть воду".

Идеология тут
https://ru.wikipedia.org/wiki/Конечный_автомат
Привет Зяма. Ты - как всегда - анонимос. Не боишся что затролят?

По сабжу - согласен. По хорошему - надо детектировать фронт импульса джоба. Но мне лениво.
Для полива баклажанов и так сойдет.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145844
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это
jenya7
Код: sql
1.
	    	if (solParam[prog_mum].solStartHour == rtc.rtcHour && solParam[prog_mum].solStartMinute >= rtc.rtcMin)


и это
mayton
Код: plaintext
1.
 if (stricmp(timeis,"12:00")){


жесть. в течении минуты не проверили и капец. Если вкл на час 2-3 раза в неделю, то несработавший выкл вместо часа буде поливать день-два.

Если расписание понедельное, то надо перевести в минуты с полуночи понедельника: ((день_недели * 24) + час) * 60 + минута
Дальше сравнивать на больше/меньше.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145846
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, Дима! Бак-ла-жа-ны... Мать их так.
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39145855
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonDima T, Дима! Бак-ла-жа-ны... Мать их так.
Так смоет же. Это ж не рис и не клюква в болоте

Вобщем я к тому что надо хранить диапазоны когда включать. Дальше примерно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
bool real_work = ... // текущее состояние, true - сейчас поливает
...
void check_state() {
 bool need_work = false;
 for(перебор всех интервалов) {
    if(текущее время попало в интервал вкл.) need_work = true;
 }
 if(need_work != real_state) {
  if(need_work) 
    start_poliv();
  else
    stop_poliv();
 }
}
...
Рейтинг: 0 / 0
Алгоритм поливки на С.
    #39146004
jenya7miksoftпропущено...
Поскольку вы о своем приборе старательно молчите, то могу только предложить примотать одно к другому синей изолетной.
при чем тут вообще прибор? я спрашивую про алгоритм опроса програм(вкл\выкл) по дням. научитесь адекватно анализировать прочитанное.

весь алгоритм
одна команда на включение, одна на выключение
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм поливки на С.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]