А вот это полезное замечание, спасибо. Буду иметь в виду.BOB51 писал(а): Пн июн 08, 2026 10:20:05 Только в зависимости от требований надо ТСОПы подбирать. Есть те, что работают при непрерывном сигнале, а есть те, что только на короткие импульсы отзываются - непрерывный сигнал их "глушит".
Устройство на Ardiuno для контроля пересечения барьера.
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
- Реклама
Re: Устройство на Ardiuno для контроля пересечения барьера.
Конечно же не мне судить, ведь я в 1982 году еще под стол пешком ходил
Однако, сейчас я достаточно неплохо понимаю, что в цифровой технике таких наводок, способных переключать цифровые КМОП-уровни, в бытовых условиях вряд ли встречается. А если всё же надо сделать фильтрацию случайных помех, то можно прямо в показанный метод добавить счетчик, фиксирующий неизменность уровней в течение некоторого времени.
Про TSOP-ы. Вообще-то, это приемник модулированного ИК-сигнала. В него уже встроен демодулятор сигнала. Применяется для пультов дистанционного управления - в телевизорах, кондиционерах и прочей бытовой технике.
Однако, сейчас я достаточно неплохо понимаю, что в цифровой технике таких наводок, способных переключать цифровые КМОП-уровни, в бытовых условиях вряд ли встречается. А если всё же надо сделать фильтрацию случайных помех, то можно прямо в показанный метод добавить счетчик, фиксирующий неизменность уровней в течение некоторого времени.
Про TSOP-ы. Вообще-то, это приемник модулированного ИК-сигнала. В него уже встроен демодулятор сигнала. Применяется для пультов дистанционного управления - в телевизорах, кондиционерах и прочей бытовой технике.
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
Бережёного бог бережет.
Ровно это у меня в скетче и сделано, если заметили.Rapra писал(а):...неизменность уровней в течение некоторого времени.
Да. Я сначала такой по ошибке купил, TL1838. Потом понял, что для моего алгоритма не подойдёт.Rapra писал(а): Про TSOP-ы. Вообще-то, это приемник модулированного ИК-сигнала. В него уже встроен демодулятор сигнала.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Довольно сложно читать код, написанный как попало, с неинформативными именами переменных. Вот например, что означает переменная rate? Слово rate имеет смысл "число чего-то в единицу времени", или "темп". Какой смысл она имеет в вашем коде - непонятно. Вероятно, ближе по смыслу слово mode - "режим работы".Massaraksh7 писал(а): Пн июн 08, 2026 15:24:23 Значит, Вы просто не поняли его суть. ... У меня же тройная проверка, прежде, чем происходит уверенное срабатывание.
Во-вторых, насколько я могу понять этот код, "тройная проверка" заключается лишь в трех последовательных считываниях входа с минимальным интервалом. Причем, сомнительна необходимость вот этого действия:
Код: Выделить всё
m1[2]=m1[1];m1[1]=m1[0];m1[0]=mt1;Код: Выделить всё
for(int n = 0; n < 3; n++)
{
mt1[n] = ReadIn1();
}
Последний раз редактировалось Rapra Пн июн 08, 2026 16:48:48, всего редактировалось 1 раз.
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
Вообще, потенциальным критикам я бы рекомендовал сначала детально разобраться в алгоритме скетча, а только потом высказываться.
- Реклама
Re: Устройство на Ardiuno для контроля пересечения барьера.
Потенциальные критики как раз и начали разбираться в алгоритме скетча и схватились за голову из-за множества откровенных непоняток. Я эти моменты как раз и описываю здесь. Неверные именования переменных и констант, сомнительные алгоритмы со сдвигами в массиве (зачем?? можете объяснить, зачем были нужны сдвиги по массиву??)
А почему вот это так записано?
Ведь это можно записать без лишних действий и с верными именами:
Легко читаемо, прозрачно для разбора и понятно по выполняемым действиям.
А почему вот это так записано?
Код: Выделить всё
n=digitalRead(IN1);if (n==LOW) mt1=0; else mt1=1;Код: Выделить всё
for(int n = 0; n < 3; n++)
stateIn1[n] = ReadIn1();
Последний раз редактировалось Rapra Пн июн 08, 2026 16:57:41, всего редактировалось 1 раз.
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
С каким временным интервалом будут записаны значения в Вашем примере в mt1? )))Rapra писал(а): Пн июн 08, 2026 16:51:03 сомнительные алгоритмы со сдвигами в массиве (зачем?? можете объяснить, зачем были нужны сдвиги по массиву??)
Код: Выделить всё
for(int n = 0; n < 3; n++)
{
mt1[n] = ReadIn1();
}
Re: Устройство на Ardiuno для контроля пересечения барьера.
А у вас с каким временным интервалом это выполняется?
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
Там же написано - 300мкс
Re: Устройство на Ardiuno для контроля пересечения барьера.
Блин, вот вы намутили, хрен разгребешь. А еще говорите, что 40 с лишним лет занимаетесь программированием
Я в таком стиле писал 20 лет назад, когда только начинал еще.
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
А как бы сейчас написали?
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
На самом деле там всё очень просто. Главный цикл запускается примерно 1 раз в 300 мкс (силами задержки в коде). Переменная rate (ну уж, извините, это название - привычка) хранит текущий статус. При пересечении одной из линий статус меняется, в зависимости от того, какая линия (с учётом тройной проверки). Это ещё не пересечение. А вот если затем пересекается вторая линия (с учётом той же тройной проверки, и при не изменении статуса 1 линии), то считается, что произошло пересечение. Но может случиться, что после пересечения первом линии вторая не пересекается, и первая тоже, тогда всё приходит в исходное состояние.
И мне сложно поверить, что можно написать эффективнее.
И мне сложно поверить, что можно написать эффективнее.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Да как и подобает тому, кто хотяб пару-тройку лет программирует и сделал хотябы несколько поделок типа часов с будильником и термометром.
Во-первых, понятные и правильные именования переменных, констант, функций. Писал уже. Не rate, а mode или status (если это именно статус), либо event (событие), не R_DIR, а ENTERED (вошедший), EXITED (вышедший, не FIRE, а LOAD_ON, LOAD_OFF (нагрузка вкл, нагрузка выкл).
Во-вторых, есть такая штука, как прерывания и таймеры микроконтроллера. Можно задействовать прерывание от таймера для задания периода опроса входов.
И в -дцатых, есть микроконтроллер STM32 (который есть и в ардуино-варианте на плате STM32 BluePill), который имеет аппаратный модуль инкрементального энкодера (которым и является вот этот самый счетчик входящих/выходящих).
Можно, именно можно эффективнее. Это приходит, когда начинаете смотреть критически на то, что только что написали.Massaraksh7 писал(а): Пн июн 08, 2026 17:16:16 И мне сложно поверить, что можно написать эффективнее.
Впрочем, когда делаете чисто для себя, тут главное, чтобы этот пепелац вообще взлетел. А если взлетел, то... Ха, подавляющее большинство ардуинщиков пишут примерно в таком же стиле. Не всегда оно взлетает, но если уж взлетело...
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
Это вопрос привычки, уж извините.
Можно. Но, в данном случае, что это улучшит?Rapra писал(а): Можно задействовать прерывание от таймера для задания периода опроса входов.
Любые инструменты надо применять там, где без них не обойтись. Иначе это стрельба из пушки по воробьям.
Внятного объяснения, чем В ДАННОМ СЛУЧАЕ таймер улучшит работу, нет.
Причём тут STM32?Rapra писал(а): И в -дцатых, есть микроконтроллер STM32 (который есть и в ардуино-варианте на плате STM32 BluePill), который имеет аппаратный модуль инкрементального энкодера (которым и является вот этот самый счетчик входящих/выходящих).
Это уже Ваше личное бла-бла-бла.Rapra писал(а): Можно, именно можно эффективнее. Это приходит, когда начинаете смотреть критически на то, что только что написали.
Впрочем, когда делаете чисто для себя, тут главное, чтобы этот пепелац вообще взлетел. А если взлетел, то... Ха, подавляющее большинство ардуинщиков пишут примерно в таком же стиле. Не всегда оно взлетает, но если уж взлетело...
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
И да, жду кода с тем же функционалом.
Re: Устройство на Ardiuno для контроля пересечения барьера.
Личное, но не "бла-бла-бла".
Нужен код? Хорошо, напишу. Только не для Ардуины, ибо АВР-ками не занимался уже лет 15, а Ардуино-ИДЕ вообще в руки не брал.
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
Я тоже, вообще-то, для Arduino последний раз писал тоже лет 10 назад.Rapra писал(а): Пн июн 08, 2026 17:38:35 Нужен код? Хорошо, напишу. Только не для Ардуины, ибо АВР-ками не занимался уже лет 15.
И критиковали Вы именно код для Arduino.
Поэтому прошу код, который я потом запишу свою поделку, и покажу всем, как она работает.
Re: Устройство на Ardiuno для контроля пересечения барьера.
блин... когда уже чат настроят ? чтоб работало не только с телефона))
по схеме... усилитель на транзисторах нужен. т.к. сигнал слабый и напрямую к ардуино не подключить.
только нормальные люди так усилители не делают)) нормальные люди делают усилители с автосмещением. чтоб не требовалось подбирать режим работы транзистора по постоянному току и режим работы транзистора не зависил от напряжения питания и температуры.
по схеме... усилитель на транзисторах нужен. т.к. сигнал слабый и напрямую к ардуино не подключить.
только нормальные люди так усилители не делают)) нормальные люди делают усилители с автосмещением. чтоб не требовалось подбирать режим работы транзистора по постоянному току и режим работы транзистора не зависил от напряжения питания и температуры.
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
А нарисуйте (с номиналами), я попробую.roman.com писал(а): Пн июн 08, 2026 18:11:34 усилители с автосмещением. чтоб не требовалось подбирать режим работы транзистора по постоянному току и режим работы транзистора не зависил от напряжения питания и температуры.
- Massaraksh7
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Ср июн 03, 2026 18:51:39
- Откуда: Воронеж
Re: Устройство на Ardiuno для контроля пересечения барьера.
И, нормальные - это какие?


