Ну дык...
Устройство на Ardiuno для контроля пересечения барьера.
- Сообщения: 486
- Зарегистрирован: Пн фев 16, 2026 17:30:02
- Реклама
В чём? В электронике - большинство участников форума. В программировании - Вы правы. )))Rapra писал(а): Пт июн 19, 2026 14:35:26 Ну дык...А кто для вас является авторитетом, кроме вас самих?
![]()
- Сообщения: 486
- Зарегистрирован: Пн фев 16, 2026 17:30:02
Ну конечно - в программировании у вас уникальный собственный стиль, особенно в именах, которые не соответствуют смыслу, и в степени запутывания кода
Это называется "горе от ума"
- Сообщения: 1743
- Зарегистрирован: Вт авг 15, 2017 10:51:13
Автор лжёт.Massaraksh7 писал(а): Пт июн 19, 2026 14:07:13 я, так-то, последние 30 лет на Паскале работаю) программа не затормозится насколько, чтобы потерять работоспособность.
Невозможно на работе писать нормально, а дома быдлокодить.
- Сообщения: 486
- Зарегистрирован: Пн фев 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 писал(а):Вот здесь я захожу, выставив перед собой руку.
Кстати, обратите внимание на количество лучей на турникетах в метро.
- Сообщения: 486
- Зарегистрирован: Пн фев 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 герц.


