Страница 2 из 4
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 15:32:16
Massaraksh7
BOB51 писал(а): Пн июн 08, 2026 10:20:05
Только в зависимости от требований надо ТСОПы подбирать. Есть те, что работают при непрерывном сигнале, а есть те, что только на короткие импульсы отзываются - непрерывный сигнал их "глушит".
А вот это полезное замечание, спасибо. Буду иметь в виду.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 16:10:39
Rapra
Конечно же не мне судить, ведь я в 1982 году еще под стол пешком ходил
Однако, сейчас я достаточно неплохо понимаю, что в цифровой технике таких наводок, способных переключать цифровые КМОП-уровни, в бытовых условиях вряд ли встречается. А если всё же надо сделать фильтрацию случайных помех, то можно прямо в показанный метод добавить счетчик, фиксирующий неизменность уровней в течение некоторого времени.
Про TSOP-ы. Вообще-то, это приемник модулированного ИК-сигнала. В него уже встроен демодулятор сигнала. Применяется для пультов дистанционного управления - в телевизорах, кондиционерах и прочей бытовой технике.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 16:38:39
Massaraksh7
Rapra писал(а): Пн июн 08, 2026 16:10:39
в бытовых условиях вряд ли встречается.
Бережёного бог бережет.
Rapra писал(а):...неизменность уровней в течение некоторого времени.
Ровно это у меня в скетче и сделано, если заметили.
Rapra писал(а):
Про TSOP-ы. Вообще-то, это приемник модулированного ИК-сигнала. В него уже встроен демодулятор сигнала.
Да. Я сначала такой по ошибке купил, TL1838. Потом понял, что для моего алгоритма не подойдёт.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 16:42:10
Rapra
Massaraksh7 писал(а): Пн июн 08, 2026 15:24:23
Значит, Вы просто не поняли его суть. ... У меня же тройная проверка, прежде, чем происходит уверенное срабатывание.
Довольно сложно читать код, написанный как попало, с неинформативными именами переменных. Вот например, что означает переменная
rate? Слово
rate имеет смысл "число чего-то в единицу времени", или "темп". Какой смысл она имеет в вашем коде - непонятно. Вероятно, ближе по смыслу слово
mode - "режим работы".
Во-вторых, насколько я могу понять этот код, "тройная проверка" заключается лишь в трех последовательных считываниях входа с минимальным интервалом. Причем, сомнительна необходимость вот этого действия:
Сдвигать вовсе не обязательно, достаточно просто сохранять последовательно по возрастанию индексов, и так же по возрастанию потом проверять. Это обычный цикл
Код: Выделить всё
for(int n = 0; n < 3; n++)
{
mt1[n] = ReadIn1();
}
А вообще, хороший стиль программирования предполагает правильное именование переменных и функций. Не должно встречаться неинформативных имен типа
mt1, а так же неверных именований, вводящих в заблуждение, таких как
rate, R_DIR, FIRE.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 16:48:34
Massaraksh7
Вообще, потенциальным критикам я бы рекомендовал сначала детально разобраться в алгоритме скетча, а только потом высказываться.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 16:51:03
Rapra
Потенциальные критики как раз и начали разбираться в алгоритме скетча и схватились за голову из-за множества откровенных непоняток. Я эти моменты как раз и описываю здесь. Неверные именования переменных и констант, сомнительные алгоритмы со сдвигами в массиве (зачем?? можете объяснить, зачем были нужны сдвиги по массиву??)
А почему вот это так записано?
Код: Выделить всё
n=digitalRead(IN1);if (n==LOW) mt1=0; else mt1=1;
Ведь это можно записать без лишних действий и с верными именами:
Код: Выделить всё
for(int n = 0; n < 3; n++)
stateIn1[n] = ReadIn1();
Легко читаемо, прозрачно для разбора и понятно по выполняемым действиям.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 16:56:55
Massaraksh7
Rapra писал(а): Пн июн 08, 2026 16:51:03
сомнительные алгоритмы со сдвигами в массиве (зачем?? можете объяснить, зачем были нужны сдвиги по массиву??)
С каким временным интервалом будут записаны значения в Вашем примере в mt1? )))
Код: Выделить всё
for(int n = 0; n < 3; n++)
{
mt1[n] = ReadIn1();
}
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 16:58:15
Rapra
А у вас с каким временным интервалом это выполняется?
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 17:01:34
Massaraksh7
Там же написано - 300мкс
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 17:05:11
Rapra
Блин, вот вы намутили, хрен разгребешь. А еще говорите, что 40 с лишним лет занимаетесь программированием

Я в таком стиле писал 20 лет назад, когда только начинал еще.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 17:05:46
Massaraksh7
А как бы сейчас написали?
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 17:16:16
Massaraksh7
На самом деле там всё очень просто. Главный цикл запускается примерно 1 раз в 300 мкс (силами задержки в коде). Переменная rate (ну уж, извините, это название - привычка) хранит текущий статус. При пересечении одной из линий статус меняется, в зависимости от того, какая линия (с учётом тройной проверки). Это ещё не пересечение. А вот если затем пересекается вторая линия (с учётом той же тройной проверки, и при не изменении статуса 1 линии), то считается, что произошло пересечение. Но может случиться, что после пересечения первом линии вторая не пересекается, и первая тоже, тогда всё приходит в исходное состояние.
И мне сложно поверить, что можно написать эффективнее.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 17:19:10
Rapra
Massaraksh7 писал(а): Пн июн 08, 2026 17:05:46
А как бы сейчас написали?
Да как и подобает тому, кто хотяб пару-тройку лет программирует и сделал хотябы несколько поделок типа часов с будильником и термометром.
Во-первых, понятные и правильные именования переменных, констант, функций. Писал уже. Не rate, а mode или status (если это именно статус), либо event (событие), не R_DIR, а ENTERED (вошедший), EXITED (вышедший, не FIRE, а LOAD_ON, LOAD_OFF (нагрузка вкл, нагрузка выкл).
Во-вторых, есть такая штука, как прерывания и таймеры микроконтроллера. Можно задействовать прерывание от таймера для задания периода опроса входов.
И в -дцатых, есть микроконтроллер STM32 (который есть и в ардуино-варианте на плате STM32 BluePill), который имеет аппаратный модуль инкрементального энкодера (которым и является вот этот самый счетчик входящих/выходящих).
Massaraksh7 писал(а): Пн июн 08, 2026 17:16:16
И мне сложно поверить, что можно написать эффективнее.
Можно, именно можно эффективнее. Это приходит, когда начинаете смотреть критически на то, что только что написали.
Впрочем, когда делаете чисто для себя, тут главное, чтобы этот пепелац вообще взлетел. А если взлетел, то... Ха, подавляющее большинство ардуинщиков пишут примерно в таком же стиле. Не всегда оно взлетает, но если уж взлетело...
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 17:31:57
Massaraksh7
Rapra писал(а): Пн июн 08, 2026 17:19:10
Не rate, а mode или status (если это именно статус),
Это вопрос привычки, уж извините.
Rapra писал(а):
Можно задействовать прерывание от таймера для задания периода опроса входов.
Можно. Но, в данном случае, что это улучшит?
Любые инструменты надо применять там, где без них не обойтись. Иначе это стрельба из пушки по воробьям.
Внятного объяснения, чем В ДАННОМ СЛУЧАЕ таймер улучшит работу, нет.
Rapra писал(а):
И в -дцатых, есть микроконтроллер STM32 (который есть и в ардуино-варианте на плате STM32 BluePill), который имеет аппаратный модуль инкрементального энкодера (которым и является вот этот самый счетчик входящих/выходящих).
Причём тут STM32?
Rapra писал(а):
Можно, именно можно эффективнее. Это приходит, когда начинаете смотреть критически на то, что только что написали.
Впрочем, когда делаете чисто для себя, тут главное, чтобы этот пепелац вообще взлетел. А если взлетел, то... Ха, подавляющее большинство ардуинщиков пишут примерно в таком же стиле. Не всегда оно взлетает, но если уж взлетело...
Это уже Ваше личное бла-бла-бла.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 17:34:18
Massaraksh7
И да, жду кода с тем же функционалом.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 17:38:35
Rapra
Massaraksh7 писал(а): Пн июн 08, 2026 17:31:57
Это уже Ваше личное бла-бла-бла.
Личное, но не "бла-бла-бла".
Нужен код? Хорошо, напишу. Только не для Ардуины, ибо АВР-ками не занимался уже лет 15, а Ардуино-ИДЕ вообще в руки не брал.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 17:43:58
Massaraksh7
Rapra писал(а): Пн июн 08, 2026 17:38:35
Нужен код? Хорошо, напишу. Только не для Ардуины, ибо АВР-ками не занимался уже лет 15.
Я тоже, вообще-то, для Arduino последний раз писал тоже лет 10 назад.
И критиковали Вы именно код для Arduino.
Поэтому прошу код, который я потом запишу свою поделку, и покажу всем, как она работает.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 18:11:34
roman.com
блин... когда уже чат настроят ? чтоб работало не только с телефона))
по схеме... усилитель на транзисторах нужен. т.к. сигнал слабый и напрямую к ардуино не подключить.
только нормальные люди так усилители не делают)) нормальные люди делают усилители с автосмещением. чтоб не требовалось подбирать режим работы транзистора по постоянному току и режим работы транзистора не зависил от напряжения питания и температуры.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 18:19:19
Massaraksh7
roman.com писал(а): Пн июн 08, 2026 18:11:34
усилители с автосмещением. чтоб не требовалось подбирать режим работы транзистора по постоянному току и режим работы транзистора не зависил от напряжения питания и температуры.
А нарисуйте (с номиналами), я попробую.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Добавлено: Пн июн 08, 2026 18:21:48
Massaraksh7
roman.com писал(а): Пн июн 08, 2026 18:11:34
...нормальные люди...
И, нормальные - это какие?