Ну дык...
Устройство на Ardiuno для контроля пересечения барьера.
- Сообщения: 489
- Зарегистрирован: Пн фев 16, 2026 17:30:02
- Реклама
В чём? В электронике - большинство участников форума. В программировании - Вы правы. )))Rapra писал(а): Пт июн 19, 2026 14:35:26 Ну дык...А кто для вас является авторитетом, кроме вас самих?
![]()
- Сообщения: 489
- Зарегистрирован: Пн фев 16, 2026 17:30:02
Ну конечно - в программировании у вас уникальный собственный стиль, особенно в именах, которые не соответствуют смыслу, и в степени запутывания кода
Это называется "горе от ума"
- Сообщения: 1743
- Зарегистрирован: Вт авг 15, 2017 10:51:13
Автор лжёт.Massaraksh7 писал(а): Пт июн 19, 2026 14:07:13 я, так-то, последние 30 лет на Паскале работаю) программа не затормозится насколько, чтобы потерять работоспособность.
Невозможно на работе писать нормально, а дома быдлокодить.
- Сообщения: 489
- Зарегистрирован: Пн фев 16, 2026 17:30:02
Вот еще момент:
кто-нить может понять, что и почему здесь написано:
Вообще, издревле, для вывода цифры на семисегментник использовался вот такой подход:
кто-нить может понять, что и почему здесь написано:
Какой "авторитет" научил такому? Хрен пойми.Код: Выделить всё
//---Записать цифру в индикатор void setDig(int n) { int i,j; for (j=7;j<=13;j++)digitalWrite(j,LOW); for (i=0;i<8;i++) { if (adata[n][i]==0)break; digitalWrite(adata[n][i],HIGH); } }
Вообще, издревле, для вывода цифры на семисегментник использовался вот такой подход:
Код: Выделить всё
#define SEG_A (1 << 0)
#define SEG_B (1 << 1)
#define SEG_C (1 << 2)
#define SEG_D (1 << 3)
#define SEG_E (1 << 4)
#define SEG_F (1 << 5)
#define SEG_G (1 << 6)
#define DIG_0 (SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F )
#define DIG_1 ( SEG_B | SEG_C )
#define DIG_2 (SEG_A | SEG_B | SEG_D | SEG_E | SEG_G)
#define DIG_3 (SEG_A | SEG_B | SEG_C | SEG_D | SEG_G)
#define DIG_4 ( SEG_B | SEG_C | SEG_F | SEG_G)
#define DIG_5 (SEG_A | SEG_C | SEG_D | SEG_F | SEG_G)
#define DIG_6 (SEG_A | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G)
#define DIG_7 (SEG_A | SEG_B | SEG_C )
#define DIG_8 (SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G)
#define DIG_9 (SEG_A | SEG_B | SEG_C | SEG_D | SEG_F | SEG_G)
const uint8_t segments[] = {DIG_0, DIG_1, DIG_2, DIG_3, DIG_4,
DIG_5, DIG_6, DIG_7, DIG_8, DIG_9};
void Print(uint8_t digit)
{
if(digit < sizeof(segments))
GpioA::WritePort(segments[digit]);
}
- Реклама
- Сообщения: 1330
- Зарегистрирован: Вт ноя 19, 2019 06:10:18
Покажите лог программы, в котором будут видны состояния, через которые проходит ваш КА.Massaraksh7 писал(а):Вот здесь я захожу, выставив перед собой руку.
Кстати, обратите внимание на количество лучей на турникетах в метро.
- Сообщения: 489
- Зарегистрирован: Пн фев 16, 2026 17:30:02
Да у него там просто большой таймаут, поэтому и работает норм. Я ж говорил ранее - есть методы определения габаритов предмета по времени прохождения датчиков. И выставив соответствующий таймаут, можно убрать чувствительность к малогабаритным телам.
Перепаял. Внешне ничего не изменилось. Рисунок схемы перезагрузил.roman.com писал(а): Пт июн 19, 2026 12:47:35 Поэтому все нормальные люди делают усилители с автосмещением.
Внешне и не должно ничего меняться.
Раньше делал усилители всякие на транзисторах. Приходилось подбирать транзисторы с одинаковым коэффициентом усиления по току и потом ещё подбирать режим работы транзистора.
В схеме с автосмещением ниче подбирать и настраивать не надо. Просто берём любой транзистор из коробки. Включает. И все работает. В этом вся фишка))
А код пока не оптимален. Ещё есть над чем работать...
Раньше делал усилители всякие на транзисторах. Приходилось подбирать транзисторы с одинаковым коэффициентом усиления по току и потом ещё подбирать режим работы транзистора.
В схеме с автосмещением ниче подбирать и настраивать не надо. Просто берём любой транзистор из коробки. Включает. И все работает. В этом вся фишка))
А код пока не оптимален. Ещё есть над чем работать...
Кстати, я подбирал для приёмника.roman.com писал(а): Пт июн 19, 2026 18:20:52 Приходилось подбирать транзисторы с одинаковым коэффициентом усиления по току
Для предложений по изменению алгоритма я открыт, Welcome.roman.com писал(а): А код пока не оптимален. Ещё есть над чем работать...
Ещё со схемой не закончили))
А зачем там смещение на фотодиод ?
Фотодиод сам является источником сигнала. Далее идёт обычный усилитель сигнала.
В схеме нет порогового элемента (как например в фотореле). Поэтому можно смещение убрать.
А зачем в схеме на выходе конденсатор и резистор ? Ардуине в отличии от триггера не нужен формирователь импульсов))
Поэтому резистор и конденсатор тоже можно убрать.
Я подключаю коллектор выходного транзистора напрямую к МК. Получается схема с открытым коллектором. Точно так же работает фотоприемник типа TSOP и аналогичные от пультов телевизора.
Далее... Рекомендую уменьшить ёмкость конденсаторов связи со 100 нФ до 10 нФ. Это поднимет усиление высоких частот и уменьшит усиление низких особенно наиболее опасных 50 герц. Т.е. усилитель будет менее восприимчив к наводкам от сети 50 герц.
А зачем там смещение на фотодиод ?
Фотодиод сам является источником сигнала. Далее идёт обычный усилитель сигнала.
В схеме нет порогового элемента (как например в фотореле). Поэтому можно смещение убрать.
А зачем в схеме на выходе конденсатор и резистор ? Ардуине в отличии от триггера не нужен формирователь импульсов))
Поэтому резистор и конденсатор тоже можно убрать.
Я подключаю коллектор выходного транзистора напрямую к МК. Получается схема с открытым коллектором. Точно так же работает фотоприемник типа TSOP и аналогичные от пультов телевизора.
Далее... Рекомендую уменьшить ёмкость конденсаторов связи со 100 нФ до 10 нФ. Это поднимет усиление высоких частот и уменьшит усиление низких особенно наиболее опасных 50 герц. Т.е. усилитель будет менее восприимчив к наводкам от сети 50 герц.
Просто посмотрел в интернете типовую схему включения фотодиода - вот эта попалась.roman.com писал(а): Пт июн 19, 2026 18:47:32 А зачем там смещение на фотодиод ?
Фотодиод сам является источником сигнала. Далее идёт обычный усилитель сигнала.
В схеме нет порогового элемента (как например в фотореле). Поэтому можно смещение убрать.
Ну это по принципу: "Кашу маслом не испортишь".roman.com писал(а): А зачем в схеме на выходе конденсатор и резистор ? Ардуине в отличии от триггера не нужен формирователь импульсов))
Логично.roman.com писал(а): Далее... Рекомендую уменьшить ёмкость конденсаторов связи со 100 нФ до 10 нФ. Это поднимет усиление высоких частот и уменьшит усиление низких особенно наиболее опасных 50 герц. Т.е. усилитель будет менее восприимчив к наводкам от сети 50 герц.
Почитал про режимы фотодиода. Я так понимаю, у меня был фотодиодный режим, Вы предлагаете фотовольтаический режим.
Почитал про них:
Почитал про них:
Вот последняя строка меня смутила. На 20 кГц он потянет?Фотовольтаический режим — это режим генерации электроэнергии непосредственно из света за счёт фотовольтаического эффекта в p‑n‑переходе. Он лежит в основе работы:
* солнечных панелей;
* простых световых датчиков;
* автономных маломощных устройств.
Главные плюсы — отсутствие необходимости во внешнем питании и простота схемы.
Главный минус — относительно низкое быстродействие по сравнению с фотодиодным режимом.
Подключался простой светодиод на вход усилителя на 3-х трнзисторх.
Принимал сигнал пульта телевизора частотой 38 кГц. На расстоянии до трёх метров работает.
Подключал смещение на светодиод...Отключал смещение на светодиод... Разницы не заметил.
Принимал сигнал пульта телевизора частотой 38 кГц. На расстоянии до трёх метров работает.
Подключал смещение на светодиод...Отключал смещение на светодиод... Разницы не заметил.
- Вложения
-
- TX.jpg
- (21.19 КБ) 0 скачиваний


