Страница 3 из 18
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 13:03:23
roman.com
Massaraksh7 писал(а): Пт июн 19, 2026 05:00:30
roman.com писал(а): Чт июн 18, 2026 23:01:20
Ну вот... Таймеры и прерывания пошли. Сразу же предлагали...
Мне интересен не только результат, но и процесс.
А мне нравится оптимизация.
Все должно быть просто, надёжно и понятно.
"Сделать сложное - просто.
Сделать простое - сложно"
Сказал известный генеральный конструктор.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 13:19:30
jcxz
Massaraksh7 писал(а): Чт июн 18, 2026 13:13:26jcxz писал(а):
Да даже элементарно: у человека на халате пояс развязался и при входе в ванную мотанулся вперёд, на обратном качании прилипнув к телу. Уже получается как будто зашли двое.
Нет, посчитает, как одного.
Неправда.
Massaraksh7 писал(а): Чт июн 18, 2026 13:13:26Я вижу, тут описание алгоритма мало кто читает. И отвечают собственным представлениям.
Прочитали. И не нашли ничего, что решало бы вышеозвученные проблемы.
А впустую сказать "у меня всё работает" может любой.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 13:29:01
Massaraksh7
jcxz писал(а): Пт июн 19, 2026 13:19:30
Неправда.
А впустую сказать "у меня всё работает" может любой.
Хорошо, сейчас сниму видео.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 13:37:59
Massaraksh7
Вот здесь я захожу, выставив перед собой руку. Так что сначала она пересекает барьер, потом я. И выхожу - свет выключается. Этого достаточно?
https://cloud.mail.ru/public/wmSx/5MD28vPVg
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 13:45:54
jcxz
Massaraksh7 писал(а): Чт июн 18, 2026 14:10:14Скетч дополнен блоком, симулирующим ждущий мультивибратор с перезапуском, остальное всё почти, как было, только теперь всё на прерываниях.
Что тут можно сказать по поводу этого кода? Мрак и ужас!...

Это самое мягкое.
Автор никогда не слышал такого слова как "оптимизация". Про побитовые операции тоже не слышал. int-ы - везде, где не нужно и это на дохлом 8-битнике, а не ARM!
Это уж не говоря о стиле написания: "magic numbers", отсутствие "const" где нужно и прочие перлы чайников...
Massaraksh7 писал(а): Чт июн 18, 2026 14:10:14
//---Прочитать состояние входов и записать в буфер
void ReadAndShift() {
m1[2]=m1[1];m1[1]=m1[0];m1[0]=sign1;
m2[2]=m2[1];m2[1]=m2[0];m2[0]=sign2;
if (sign1==0) digitalWrite(FB1,LOW); else digitalWrite(FB1,HIGH);
if (sign2==0) digitalWrite(FB2,LOW); else digitalWrite(FB2,HIGH);
}
Здесь - двойные чтения sign1,sign2. Зачем??? Не уверен, что при этом будет правильно работать.
PS: Или в Ардуине нет 8-битных переменных?
Зачем везде int?

Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 13:48:09
jcxz
Massaraksh7 писал(а): Пт июн 19, 2026 13:37:59
Вот здесь я захожу, выставив перед собой руку. Так что сначала она пересекает барьер, потом я. И выхожу - свет выключается. Этого достаточно?
И как же он выключается, если судя по вашему же описанию, в счётчике должно остаться +1 ?
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 13:53:24
Massaraksh7
jcxz писал(а): Пт июн 19, 2026 13:45:54
Опять же - МК = 8-битный (или ошибаюсь?), а переменные все == int. И чтение/модификация их происходит в разных перекрывающихся ISR. Автор слыхал о таком понятии как "атомарность доступа"? Как именно обеспечивается атомарность работы с длинными переменными в вашем коде на 8-битном МК?
Ага, а это стёрли. )))
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 13:54:37
Massaraksh7
jcxz писал(а): Пт июн 19, 2026 13:48:09
И как же он выключается, если судя по вашему же описанию, в счётчике должно остаться +1 ?
А для этого надо в коде разбираться внимательнее. )))
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 13:55:08
Massaraksh7
Дубль.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 13:58:59
jcxz
Massaraksh7 писал(а): Пт июн 19, 2026 13:53:24
Ага, а это стёрли. )))
Ага. Не думал, что кто-то в здравом уме станет
на 8-битном МК для хранения значений 0 или 1 использовать int.
Это для чего? Чтобы как можно сильнее затормозить программу?
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 14:02:18
jcxz
Massaraksh7 писал(а): Пт июн 19, 2026 13:54:37А для этого надо в коде разбираться внимательнее. )))
Не в чём там разбираться. Работать будет произвольно - от любого болтающегося элемента одежды счётчик будет изменяться произвольно. И свет будет или преждевременно гаснуть или оставаться включённым после ухода.
В мусорку.
Massaraksh7 писал(а): Пт июн 19, 2026 13:37:59
Вот здесь я захожу, выставив перед собой руку. Так что сначала она пересекает барьер, потом я. И выхожу - свет выключается.
Долго тренировались прежде чем удалось так снять, чтобы сработало правильно?

Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 14:07:13
Massaraksh7
jcxz писал(а): Пт июн 19, 2026 13:58:59
Massaraksh7 писал(а): Пт июн 19, 2026 13:53:24
Ага, а это стёрли. )))
Ага. Не думал, что кто-то в здравом уме станет
на 8-битном МК для хранения значений 0 или 1 использовать int.
Это для чего? Чтобы как можно сильнее затормозить программу?
Есть принцип достаточности. В данном случае от использования int вместо byte или Boolean (не уверен, что они тут так называются, не помню, я, так-то, последние 30 лет на Паскале работаю) программа не затормозится насколько, чтобы потерять работоспособность.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 14:09:16
Massaraksh7
jcxz писал(а): Пт июн 19, 2026 14:02:18
Долго тренировались прежде чем удалось так снять, чтобы сработало правильно?
Я Вам не буду ничего доказывать. Если Вы не в состоянии прочитать 100 строк кода, и понять, за счёт чего не происходит двойное срабатывание - это Ваши проблемы, не мои.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 14:15:03
roman.com
О чем вы спорите ?
Там задержка стоит 2 секунды.
Поэтому нет ложных срабатываний.
А если я зайду в ванную и быстро выскачу (менее чем через 2 секунды) то система меня не заметит ? ))

Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 14:20:35
jcxz
roman.com писал(а): Пт июн 19, 2026 14:15:03
Там задержка стоит 2 секунды.
Поэтому нет ложных срабатываний.
Тогда двое могут зайти и это посчитается как один. И когда один выйдет, а второй останется - он останется в темноте.
Только автор виыше уверял, что такое невозможно.
roman.com писал(а): Пт июн 19, 2026 14:15:03Там задержка стоит 2 секунды.
Там весь "код" - сплошные "magic numbers". Это называется г*внокод. Никто в здравом уме не станет пересчитывать все эти такты в секунды.
Код должен быть читаемым.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 14:20:44
Massaraksh7
roman.com писал(а): Пт июн 19, 2026 14:15:03
О чем вы спорите ?
Там задержка стоит 2 секунды.
Поэтому нет ложных срабатываний.
Я и не спорю. Я удивляюсь "крутым" IT-шникам, которые не могут это распознать )))
roman.com писал(а):
А если я зайду в ванную и быстро выскачу (менее чем через 2 секунды) то система меня не заметит ? ))
Да, будет +1
Хотя с задержкой можно поэкпериметировать.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 14:22:14
Massaraksh7
Зачем врать? Вот цитата.
Massaraksh7 писал(а): Чт июн 18, 2026 13:13:26
jcxz писал(а):
Это уж не говоря про всякие случаи прохода двух человек вместе, вплотную,
Это да. Но обмануть можно любую систему.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 14:25:16
Massaraksh7
jcxz писал(а): Пт июн 19, 2026 14:20:35
Это называется г*внокод.
Ну да, первый признак, что обосрался - это употребление термина "говнокод".
Вот roman.com, почему-то, увидел )))
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 14:27:50
jcxz
Massaraksh7 писал(а): Пт июн 19, 2026 14:25:16Ну да, первый признак, что обосрался - это употребление термина "говнокод".
Вот roman.com, почему-то, увидел )))
Вот ещё пример г*внокода:
Код: Выделить всё
//---Прерывание таймера 1 канала
ISR(TIMER1_COMPA_vect) {
sign1=1;
}
//---Прерывание по переднему фронту 1 канала
void cannal_1() {
sign1=0;
TCNT1=0;
}
Уже видите где вы здесь обосрались?
Massaraksh7 писал(а): Пт июн 19, 2026 14:25:16Ну да, первый признак, что обосрался - это употребление термина "говнокод".
Я выше привёл множество вопросов к вашему "коду". Будут какие-то ответы по существу? Или только ЧСВ своё чесать способны?
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пт июн 19, 2026 14:34:39
Massaraksh7
jcxz писал(а): Пт июн 19, 2026 14:27:50
Я выше привёл множество вопросов к вашему "коду". Будут какие-то ответы по существу? Или только ЧСВ своё чесать способны?
Вы мне уже неинтересны.