LOW на inout пине с подтягивающим к земле резистором

Adr1aN41
Offline
Зарегистрирован: 07.08.2020

Добрый день! Новичок в ардуино. Использую Ардуино Нано

Пин d11 установлен как INPUT. К нему подключен подтягивающий на землю резистор. После инициализации, до подачи первого HIGH на пин d11, на пине 0, всё нормально то бишь. Далее подаем 1 и тоже, соответственно всё правильно.

А вот после размыкания на пине d11 получается рандомное значение, что должен как раз исправлять подтягивающий резистор. Это диагностируется при последующей подачи 1 на пин - каждый раз анимация находится в рандомном состоянии, а должна начинаться с начала.

Далее, чтобы убедиться, что при отсутствии подачи сигнала на d11 получается рандомное значение при digitalRead(), подключаем Serial.begin(9600) и в цикле пишем Serial.println(digitalRead(11)). И видим, что всё начинает работать - при подаче сигнала получаем 1, при отсутствии сигнала - 0, и при каждой подаче сигнала анимация начинается сначала. Получили стабильность.

И у меня возникло два вопроса: 

1. Почему может не давать эффекта подтягивающий резистор? Всё подключено как в статье https://clck.ru/Q8k2T (на землю).

2. Как вообще может влиять в моём случае подключение Serial?

Adr1aN41
Offline
Зарегистрирован: 07.08.2020

В теме опечатка, извините. Модератор, исправьте, пожалуйста INOUT на INPUT.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Код где?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

1 не может - ищем проблему с подключением - тестером проверяем качество соединения/пайки

2 никак не может влиять

 

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Если схем собрана на беспаечной макетке, то проблема может быть в неконтакте соединительных проводов

Adr1aN41
Offline
Зарегистрирован: 07.08.2020

DetSimen пишет:

Код где?

pinMode(11, INPUT);

Код работает верно, я же описал, что поведение абсолютно разное, а не то, что не работает в принципе как задумано. На протеусе моделирование проходит так, как должно, резистор даёт правильный эффект.

Adr1aN41
Offline
Зарегистрирован: 07.08.2020

andycat пишет:

1 не может - ищем проблему с подключением - тестером проверяем качество соединения/пайки

2 никак не может влиять

Понятно. Собираю через макетку, пробовал менять линии. Попробую спаять и прозвонить повторно

Adr1aN41
Offline
Зарегистрирован: 07.08.2020

v258 пишет:

Если схем собрана на беспаечной макетке, то проблема может быть в неконтакте соединительных проводов

да, на макетке. Спасибо, буду тестером обходить, скорее всего так и есть конечно, чудес не бывает. Просто меня удивило, что подключение монитора меняет поведение - ни в каких теориях это не должно влиять. Эксперимент провёл три раза (для закрепления) - зашивал без сериал, получал рандом, зашивал с сериал, получал ожидаемое поведение.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Это не подключение монитора, а звезды сходились - зацепили провод с плохим контактом, контакт наладился, зацепили в другую сторону - опять пропал

Особенно плохо там держатся резисторы - выводы слишком тонкие, привет подтяжке к земле ))

Adr1aN41
Offline
Зарегистрирован: 07.08.2020

Очень надеюсь, что это действительно так. Проверю спайкой, передам привет и пойду покупать лотерейный билет )

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Вообще, если чувствуете, что провод или вывод резистора заходит в гнездо слишком свободно, попробуйте немного подогнуть, сделать немного волной - обычно помогает, контакт получше

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Недавно столкнулся в этом проекте: http://arduino.ru/forum/proekty/midi-klaviatura-na-baze-roland-k-25m

Если читать/писать не через Ардуино-функции, а через порты, то за счет емкостей/индуктивностей монтажа во избежание ошибок при сканировании матрицы клавиатуры приходится вводить задержку 1-2 мкс между установкой значения на одном пине и чтением другого пина.

Green
Offline
Зарегистрирован: 01.10.2015

andriano пишет:
...во избежание ошибок при сканировании матрицы клавиатуры приходится вводить задержку 1-2 мкс между установкой значения на одном пине и чтением другого пина.


Я вообще ставлю 10 мкс, что бы гарантировано устаканивались переходные процессы.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Green пишет:

Я вообще ставлю 10 мкс, что бы гарантировано устаканивались переходные процессы.

А не слишком расточительно тратить 10*8=80 мкс только на задержки в случае, когда вся процедура опроса должна гарантированно быть менее 166 мкс?

 

Это к тому, что "вообще" нередко оказывается неприменимым к частному случаю.

Green
Offline
Зарегистрирован: 01.10.2015

Ну конечно, в каждом случае свои требования.  В моём случае матрица 3х4 и никаких особенных временных требований. Поэтому 10 мкс при периоде опроса 10 мс, ну сами понимаете.) Просто нужно было гарантированное срабатывание в любой ситуации.