Устройство на Ardiuno для контроля пересечения барьера.

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Друг Кота
Сообщения: 9188
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

Massaraksh7 писал(а): Пт июн 19, 2026 05:00:30
roman.com писал(а): Чт июн 18, 2026 23:01:20 Ну вот... Таймеры и прерывания пошли. Сразу же предлагали...
Мне интересен не только результат, но и процесс.
А мне нравится оптимизация.
Все должно быть просто, надёжно и понятно.

"Сделать сложное - просто.
Сделать простое - сложно"

Сказал известный генеральный конструктор.
Реклама
Мудрый кот
Сообщения: 1743
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Massaraksh7 писал(а): Чт июн 18, 2026 13:13:26
jcxz писал(а): Да даже элементарно: у человека на халате пояс развязался и при входе в ванную мотанулся вперёд, на обратном качании прилипнув к телу. Уже получается как будто зашли двое.
Нет, посчитает, как одного.
Неправда.
Massaraksh7 писал(а): Чт июн 18, 2026 13:13:26Я вижу, тут описание алгоритма мало кто читает. И отвечают собственным представлениям.
Прочитали. И не нашли ничего, что решало бы вышеозвученные проблемы.

А впустую сказать "у меня всё работает" может любой.
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

jcxz писал(а): Пт июн 19, 2026 13:19:30 Неправда.
А впустую сказать "у меня всё работает" может любой.
Хорошо, сейчас сниму видео.
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Вот здесь я захожу, выставив перед собой руку. Так что сначала она пересекает барьер, потом я. И выхожу - свет выключается. Этого достаточно?
https://cloud.mail.ru/public/wmSx/5MD28vPVg
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Сообщения: 1743
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Massaraksh7 писал(а): Чт июн 18, 2026 14:10:14Скетч дополнен блоком, симулирующим ждущий мультивибратор с перезапуском, остальное всё почти, как было, только теперь всё на прерываниях.
Что тут можно сказать по поводу этого кода? Мрак и ужас!... :facepalm: Это самое мягкое.
Автор никогда не слышал такого слова как "оптимизация". Про побитовые операции тоже не слышал. 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? :dont_know:
Последний раз редактировалось jcxz Пт июн 19, 2026 13:52:07, всего редактировалось 2 раза.
Реклама
Мудрый кот
Сообщения: 1743
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Massaraksh7 писал(а): Пт июн 19, 2026 13:37:59 Вот здесь я захожу, выставив перед собой руку. Так что сначала она пересекает барьер, потом я. И выхожу - свет выключается. Этого достаточно?
И как же он выключается, если судя по вашему же описанию, в счётчике должно остаться +1 ?
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

jcxz писал(а): Пт июн 19, 2026 13:45:54 Опять же - МК = 8-битный (или ошибаюсь?), а переменные все == int. И чтение/модификация их происходит в разных перекрывающихся ISR. Автор слыхал о таком понятии как "атомарность доступа"? Как именно обеспечивается атомарность работы с длинными переменными в вашем коде на 8-битном МК?
Ага, а это стёрли. )))
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

jcxz писал(а): Пт июн 19, 2026 13:48:09 И как же он выключается, если судя по вашему же описанию, в счётчике должно остаться +1 ?
А для этого надо в коде разбираться внимательнее. )))
Последний раз редактировалось Massaraksh7 Пт июн 19, 2026 13:56:20, всего редактировалось 1 раз.
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Дубль.
Мудрый кот
Сообщения: 1743
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Massaraksh7 писал(а): Пт июн 19, 2026 13:53:24 Ага, а это стёрли. )))
Ага. Не думал, что кто-то в здравом уме станет на 8-битном МК для хранения значений 0 или 1 использовать int. :facepalm:
Это для чего? Чтобы как можно сильнее затормозить программу?
Мудрый кот
Сообщения: 1743
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Massaraksh7 писал(а): Пт июн 19, 2026 13:54:37А для этого надо в коде разбираться внимательнее. )))
Не в чём там разбираться. Работать будет произвольно - от любого болтающегося элемента одежды счётчик будет изменяться произвольно. И свет будет или преждевременно гаснуть или оставаться включённым после ухода.
В мусорку.
Massaraksh7 писал(а): Пт июн 19, 2026 13:37:59 Вот здесь я захожу, выставив перед собой руку. Так что сначала она пересекает барьер, потом я. И выхожу - свет выключается.
Долго тренировались прежде чем удалось так снять, чтобы сработало правильно? :)))
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

jcxz писал(а): Пт июн 19, 2026 13:58:59
Massaraksh7 писал(а): Пт июн 19, 2026 13:53:24 Ага, а это стёрли. )))
Ага. Не думал, что кто-то в здравом уме станет на 8-битном МК для хранения значений 0 или 1 использовать int. :facepalm:
Это для чего? Чтобы как можно сильнее затормозить программу?
Есть принцип достаточности. В данном случае от использования int вместо byte или Boolean (не уверен, что они тут так называются, не помню, я, так-то, последние 30 лет на Паскале работаю) программа не затормозится насколько, чтобы потерять работоспособность.
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

jcxz писал(а): Пт июн 19, 2026 14:02:18 Долго тренировались прежде чем удалось так снять, чтобы сработало правильно? :)))
Я Вам не буду ничего доказывать. Если Вы не в состоянии прочитать 100 строк кода, и понять, за счёт чего не происходит двойное срабатывание - это Ваши проблемы, не мои.
Друг Кота
Сообщения: 9188
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

О чем вы спорите ?
Там задержка стоит 2 секунды.
Поэтому нет ложных срабатываний.

А если я зайду в ванную и быстро выскачу (менее чем через 2 секунды) то система меня не заметит ? ))
:)
Мудрый кот
Сообщения: 1743
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

roman.com писал(а): Пт июн 19, 2026 14:15:03 Там задержка стоит 2 секунды.
Поэтому нет ложных срабатываний.
Тогда двое могут зайти и это посчитается как один. И когда один выйдет, а второй останется - он останется в темноте.
Только автор виыше уверял, что такое невозможно.
roman.com писал(а): Пт июн 19, 2026 14:15:03Там задержка стоит 2 секунды.
Там весь "код" - сплошные "magic numbers". Это называется г*внокод. Никто в здравом уме не станет пересчитывать все эти такты в секунды. Код должен быть читаемым.
Последний раз редактировалось jcxz Пт июн 19, 2026 14:22:09, всего редактировалось 1 раз.
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

roman.com писал(а): Пт июн 19, 2026 14:15:03 О чем вы спорите ?
Там задержка стоит 2 секунды.
Поэтому нет ложных срабатываний.
Я и не спорю. Я удивляюсь "крутым" IT-шникам, которые не могут это распознать )))
roman.com писал(а): А если я зайду в ванную и быстро выскачу (менее чем через 2 секунды) то система меня не заметит ? ))
:)
Да, будет +1
Хотя с задержкой можно поэкпериметировать.
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Зачем врать? Вот цитата.
Massaraksh7 писал(а): Чт июн 18, 2026 13:13:26
jcxz писал(а): Это уж не говоря про всякие случаи прохода двух человек вместе, вплотную,
Это да. Но обмануть можно любую систему.
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

jcxz писал(а): Пт июн 19, 2026 14:20:35 Это называется г*внокод.
Ну да, первый признак, что обосрался - это употребление термина "говнокод".
Вот roman.com, почему-то, увидел )))
Мудрый кот
Сообщения: 1743
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение 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Ну да, первый признак, что обосрался - это употребление термина "говнокод".
Я выше привёл множество вопросов к вашему "коду". Будут какие-то ответы по существу? Или только ЧСВ своё чесать способны?
Открыл глаза
Аватара пользователя
Сообщения: 78
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

jcxz писал(а): Пт июн 19, 2026 14:27:50 Я выше привёл множество вопросов к вашему "коду". Будут какие-то ответы по существу? Или только ЧСВ своё чесать способны?
Вы мне уже неинтересны.
Ответить

Вернуться в «Arduino»