несколько герконов
- Войдите на сайт для отправки комментариев
Ср, 25/12/2019 - 15:31
есть 6 герконов, подключено к А0-А5
и 6 светодиодов - D8-D13.
геркон нормально замкнут и когда возле одного из них проходит магнит, соответствующий светодиодид моргает три раза и начинает светится постоянно до перезагрузки.
код прошивки ниже
void setup() { // put your setup code here, to run once: DDRC = B00000000; DDRB = B11111111; PORTB = B00000000; } void loop() { // put your main code here, to run repeatedly: switch(PORTC){ case B00111110: PORTB == B00000100; delay(500); PORTB == B00000000; delay(500); PORTB == B00000100; delay(500); PORTB == B00000000; delay(500); PORTB == B00000100; delay(500); PORTB == B00000000; delay(500); PORTB == B00000100; break; case B00111101: PORTB == B00001000; delay(500); PORTB == B00000000; delay(500); PORTB == B00001000; delay(500); PORTB == B00000000; delay(500); PORTB == B00001000; delay(500); PORTB == B00000000; delay(500); PORTB == B00001000; break; case B00111011: PORTB == B00010000; delay(500); PORTB == B00000000; delay(500); PORTB == B00010000; delay(500); PORTB == B00000000; delay(500); PORTB == B00010000; delay(500); PORTB == B00000000; delay(500); PORTB == B00010000; break; case B00110111: PORTB == B00100000; delay(500); PORTB == B00000000; delay(500); PORTB == B00100000; delay(500); PORTB == B00000000; delay(500); PORTB == B00100000; delay(500); PORTB == B00000000; delay(500); PORTB == B00100000; break; case B00101111: PORTB == B00000010; delay(500); PORTB == B00000000; delay(500); PORTB == B00000010; delay(500); PORTB == B00000000; delay(500); PORTB == B00000010; delay(500); PORTB == B00000000; delay(500); PORTB == B00000010; break; case B00011111: PORTB == B00000001; delay(500); PORTB == B00000000; delay(500); PORTB == B00000001; delay(500); PORTB == B00000000; delay(500); PORTB == B00000001; delay(500); PORTB == B00000000; delay(500); PORTB == B00000001; break; } }
почему то оно не работает, я что то упустил
PORTB == B00000100
Перепутан оператор присваивания с оператором сравнения.
Выпендриваться надо меньше. С портами он работает напрямую - нармальный пацан, не лох какой!
И как стройненько всё. Рядами и колоннами!
Выпендриваться надо меньше. С портами он работает напрямую - нармальный пацан, не лох какой!
ага, с портами работает, а код из одних делеев....
"... ничто не выдавало в нем разведчика.... разве только волочившийся сзади парашют...."
и что из того, что делеев куча, стиль то ардуиновский...
и что из того, что делеев куча, стиль то ардуиновский...
а то что работа с портами напрямую как бы предполагает, что человек что-то понимает в программировании. А вот работа с кнопками через делеи - признак полного чайника.
противоречие, однако...
Зато какой стиль, какие манеры!
ну я не нашел иного способа считать одновременно все 6 входов
ну я не нашел иного способа считать одновременно все 6 входов
как раз считывание входов у вас написано хорошо. А вот все остальное....
Жаль что я не вижу самого "считывания входов"...
Жаль что я не вижу самого "считывания входов"...
ну перепутал чутка :)
поменял геркон на разомкнут и поправил код, все равно не работает
поменял геркон на разомкнут и поправил код, все равно не работает
Схему подключения герконов приведете? Cдается мне, что пины в воздухе болтаются и ловят всякие наводки.
Слабо в 13 строке вывести значение i в консоль? Многое прояснится.
А вот это вообще зачем?
Ну вот. Точно в воздухе. К процессору нужно точку соединения геркона и резистора подключать. В последней программе резистор должен быть подключён к земле, а геркон к +5V.
При таком подключении нужно еще добавить по резистору 5-10К между каждым пином А0-А5 и землей.
При таком подключении нужно еще добавить по резистору 5-10К между каждым пином А0-А5 и землей.
А сколько вольт единица? Если 5к поставить то будет 1.5 вольта при замыкании геркона. Почувствует процессор единицу? Если добавлять от ноги процессора на массу то килоом 50 - 100.
Как то так, я правильно понял?
Да, так. Если геркон замыкается. Если размыкается, то gnd и 5В надо поменять местами.
Да, невнимательно на схему глянул, показалось что там 1К к +5В стоит.
В случае 10К резисторов к 5В нужно будет 20-50К к земле. !00К, пожалуй, многовато, возрастает риск ложных срабатываний. А единица будет надежно детектироваться в случае 0.7 VCC.
Да, невнимательно на схему глянул, показалось что там 1К к +5В стоит.
В случае 10К резисторов к 5В нужно будет 20-50К к земле. !00К, пожалуй, многовато, возрастает риск ложных срабатываний. А единица будет надежно детектироваться в случае 0.7 VCC.
А мне казалось что на входе есть гитерезис и переключение вверх идёт при напряжении больше 1.8 вольта , а вниз при 1.4 вольта. Все цифры для питания 5 вольт. 0.7 Vcc в этот предел входит.
Минимум 0.7Vcc для логической единицы и максимум 0.3Vcc для логического 0 это из даташита, для 100% гарантированной работы.
Если посмотреть там же графики I/O Pin Input Threshold Voltage то получается, что при 5В питании единица считываетя если напряжение на пине больше 2.6В а ноль если меньше 2.2В
Ок. Спасибо.