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

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

BOB51 писал(а): Пн июн 08, 2026 10:20:05 Только в зависимости от требований надо ТСОПы подбирать. Есть те, что работают при непрерывном сигнале, а есть те, что только на короткие импульсы отзываются - непрерывный сигнал их "глушит".
А вот это полезное замечание, спасибо. Буду иметь в виду.
Реклама
Rapra
Мучитель микросхем
Сообщения: 456
Зарегистрирован: Пн фев 16, 2026 17:30:02

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

Сообщение Rapra »

Конечно же не мне судить, ведь я в 1982 году еще под стол пешком ходил :))
Однако, сейчас я достаточно неплохо понимаю, что в цифровой технике таких наводок, способных переключать цифровые КМОП-уровни, в бытовых условиях вряд ли встречается. А если всё же надо сделать фильтрацию случайных помех, то можно прямо в показанный метод добавить счетчик, фиксирующий неизменность уровней в течение некоторого времени.

Про TSOP-ы. Вообще-то, это приемник модулированного ИК-сигнала. В него уже встроен демодулятор сигнала. Применяется для пультов дистанционного управления - в телевизорах, кондиционерах и прочей бытовой технике.
Реклама
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

Rapra писал(а): Пн июн 08, 2026 16:10:39 в бытовых условиях вряд ли встречается.
Бережёного бог бережет.
Rapra писал(а):...неизменность уровней в течение некоторого времени.
Ровно это у меня в скетче и сделано, если заметили.
Rapra писал(а): Про TSOP-ы. Вообще-то, это приемник модулированного ИК-сигнала. В него уже встроен демодулятор сигнала.
Да. Я сначала такой по ошибке купил, TL1838. Потом понял, что для моего алгоритма не подойдёт.
Rapra
Мучитель микросхем
Сообщения: 456
Зарегистрирован: Пн фев 16, 2026 17:30:02

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

Сообщение Rapra »

Massaraksh7 писал(а): Пн июн 08, 2026 15:24:23 Значит, Вы просто не поняли его суть. ... У меня же тройная проверка, прежде, чем происходит уверенное срабатывание.
Довольно сложно читать код, написанный как попало, с неинформативными именами переменных. Вот например, что означает переменная rate? Слово rate имеет смысл "число чего-то в единицу времени", или "темп". Какой смысл она имеет в вашем коде - непонятно. Вероятно, ближе по смыслу слово mode - "режим работы".
Во-вторых, насколько я могу понять этот код, "тройная проверка" заключается лишь в трех последовательных считываниях входа с минимальным интервалом. Причем, сомнительна необходимость вот этого действия:

Код: Выделить всё

m1[2]=m1[1];m1[1]=m1[0];m1[0]=mt1;
Сдвигать вовсе не обязательно, достаточно просто сохранять последовательно по возрастанию индексов, и так же по возрастанию потом проверять. Это обычный цикл

Код: Выделить всё

for(int n = 0; n < 3; n++) 
{
    mt1[n] = ReadIn1();
}
А вообще, хороший стиль программирования предполагает правильное именование переменных и функций. Не должно встречаться неинформативных имен типа mt1, а так же неверных именований, вводящих в заблуждение, таких как rate, R_DIR, FIRE.
Последний раз редактировалось Rapra Пн июн 08, 2026 16:48:48, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

Вообще, потенциальным критикам я бы рекомендовал сначала детально разобраться в алгоритме скетча, а только потом высказываться.
Реклама
Rapra
Мучитель микросхем
Сообщения: 456
Зарегистрирован: Пн фев 16, 2026 17:30:02

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

Сообщение Rapra »

Потенциальные критики как раз и начали разбираться в алгоритме скетча и схватились за голову из-за множества откровенных непоняток. Я эти моменты как раз и описываю здесь. Неверные именования переменных и констант, сомнительные алгоритмы со сдвигами в массиве (зачем?? можете объяснить, зачем были нужны сдвиги по массиву??)

А почему вот это так записано?

Код: Выделить всё

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
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

Rapra писал(а): Пн июн 08, 2026 16:51:03 сомнительные алгоритмы со сдвигами в массиве (зачем?? можете объяснить, зачем были нужны сдвиги по массиву??)
С каким временным интервалом будут записаны значения в Вашем примере в mt1? )))

Код: Выделить всё

for(int n = 0; n < 3; n++) 
{
    mt1[n] = ReadIn1();
}
Rapra
Мучитель микросхем
Сообщения: 456
Зарегистрирован: Пн фев 16, 2026 17:30:02

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

Сообщение Rapra »

А у вас с каким временным интервалом это выполняется?
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

Там же написано - 300мкс
Rapra
Мучитель микросхем
Сообщения: 456
Зарегистрирован: Пн фев 16, 2026 17:30:02

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

Сообщение Rapra »

Блин, вот вы намутили, хрен разгребешь. А еще говорите, что 40 с лишним лет занимаетесь программированием :)) Я в таком стиле писал 20 лет назад, когда только начинал еще.
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

А как бы сейчас написали?
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

На самом деле там всё очень просто. Главный цикл запускается примерно 1 раз в 300 мкс (силами задержки в коде). Переменная rate (ну уж, извините, это название - привычка) хранит текущий статус. При пересечении одной из линий статус меняется, в зависимости от того, какая линия (с учётом тройной проверки). Это ещё не пересечение. А вот если затем пересекается вторая линия (с учётом той же тройной проверки, и при не изменении статуса 1 линии), то считается, что произошло пересечение. Но может случиться, что после пересечения первом линии вторая не пересекается, и первая тоже, тогда всё приходит в исходное состояние.
И мне сложно поверить, что можно написать эффективнее.
Rapra
Мучитель микросхем
Сообщения: 456
Зарегистрирован: Пн фев 16, 2026 17:30:02

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

Сообщение 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 И мне сложно поверить, что можно написать эффективнее.
Можно, именно можно эффективнее. Это приходит, когда начинаете смотреть критически на то, что только что написали.
Впрочем, когда делаете чисто для себя, тут главное, чтобы этот пепелац вообще взлетел. А если взлетел, то... Ха, подавляющее большинство ардуинщиков пишут примерно в таком же стиле. Не всегда оно взлетает, но если уж взлетело...
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

Rapra писал(а): Пн июн 08, 2026 17:19:10 Не rate, а mode или status (если это именно статус),
Это вопрос привычки, уж извините.
Rapra писал(а): Можно задействовать прерывание от таймера для задания периода опроса входов.
Можно. Но, в данном случае, что это улучшит?
Любые инструменты надо применять там, где без них не обойтись. Иначе это стрельба из пушки по воробьям.
Внятного объяснения, чем В ДАННОМ СЛУЧАЕ таймер улучшит работу, нет.
Rapra писал(а): И в -дцатых, есть микроконтроллер STM32 (который есть и в ардуино-варианте на плате STM32 BluePill), который имеет аппаратный модуль инкрементального энкодера (которым и является вот этот самый счетчик входящих/выходящих).
Причём тут STM32?
Rapra писал(а): Можно, именно можно эффективнее. Это приходит, когда начинаете смотреть критически на то, что только что написали.
Впрочем, когда делаете чисто для себя, тут главное, чтобы этот пепелац вообще взлетел. А если взлетел, то... Ха, подавляющее большинство ардуинщиков пишут примерно в таком же стиле. Не всегда оно взлетает, но если уж взлетело...
Это уже Ваше личное бла-бла-бла.
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

И да, жду кода с тем же функционалом.
Rapra
Мучитель микросхем
Сообщения: 456
Зарегистрирован: Пн фев 16, 2026 17:30:02

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

Сообщение Rapra »

Massaraksh7 писал(а): Пн июн 08, 2026 17:31:57 Это уже Ваше личное бла-бла-бла.
Личное, но не "бла-бла-бла".
Нужен код? Хорошо, напишу. Только не для Ардуины, ибо АВР-ками не занимался уже лет 15, а Ардуино-ИДЕ вообще в руки не брал.
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

Rapra писал(а): Пн июн 08, 2026 17:38:35 Нужен код? Хорошо, напишу. Только не для Ардуины, ибо АВР-ками не занимался уже лет 15.
Я тоже, вообще-то, для Arduino последний раз писал тоже лет 10 назад.
И критиковали Вы именно код для Arduino.
Поэтому прошу код, который я потом запишу свою поделку, и покажу всем, как она работает.
roman.com
Друг Кота
Сообщения: 9168
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

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

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

блин... когда уже чат настроят ? чтоб работало не только с телефона))
:tea:
по схеме... усилитель на транзисторах нужен. т.к. сигнал слабый и напрямую к ардуино не подключить.
только нормальные люди так усилители не делают)) нормальные люди делают усилители с автосмещением. чтоб не требовалось подбирать режим работы транзистора по постоянному току и режим работы транзистора не зависил от напряжения питания и температуры.
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

roman.com писал(а): Пн июн 08, 2026 18:11:34 усилители с автосмещением. чтоб не требовалось подбирать режим работы транзистора по постоянному току и режим работы транзистора не зависил от напряжения питания и температуры.
А нарисуйте (с номиналами), я попробую.
Аватара пользователя
Massaraksh7
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

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

Сообщение Massaraksh7 »

roman.com писал(а): Пн июн 08, 2026 18:11:34 ...нормальные люди...
И, нормальные - это какие?
Ответить

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