Остается ли контакт (входной контакт Arduino) плавающим при подключении к GPIO на RPI?

pins input

В настоящее время я тестирую свое приложение на Arduino и испытываю проблемы с плавающими пинами. Моя программа считывает состояние пинов входных пинов, которые настроены как

pinMode(5, INPUT);
digitalWrite(5, HIGH);

но все же иногда они имеют тенденцию плавать.

Будет ли это решено, если я подключу вывод напрямую к выводу GPIO на RPI? В частности, когда приложение, работающее на RPI, еще не активно (поэтому вывод GPIO еще не будет активно высоким или низким).

И PI, и Arduino будут получать питание одновременно, но приложение на Arduino будет активным гораздо быстрее, чем приложение на RPI.

Поэтому я беспокоюсь, что пока RPI все еще загружается и загружает приложение, Arduino может все еще «страдать» от плавающих контактов, что приводит к нежелательным выходным сигналам для устройств, которыми управляет мой Arduino.

Или тот факт, что RPI и Arduino имеют питание и используют одну и ту же землю, приведет к стабильному входному сигналу на Arduino?

P.S.: не эксперт по электронике, отсюда и вопрос. Я пока не могу это проверить, так как у меня нет всего оборудования для этого проекта.

, 👍0


2 ответа


Лучший ответ:

3

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

Изменить

pinMode(5, INPUT);

к

pinMode(5, INPUT_PULLUP);

Более подробную информацию см. в разделе цифровые контакты Arduino.

,

Я бы добавил, ради OP, что то, что они делают, использовалось для настройки внутреннего подтягивания до arduino 1.0.1, но это не работает в новых версиях SDK, которые добавили конфигурацию INPUT_PULLUP. Вероятно, есть много руководств и примеров проектов, все еще использующих старый шаблон., @crasic

Спасибо. Не знаю, знал ли я это когда-нибудь., @Transistor

Спасибо за правильный способ сделать это. Тем временем я узнал, что я также могу создать стягивающий резистор невероятно легко! Я подключил резистор 22k к земле и подключил вход моего arduino к этому резистору. Я также подключил свой выход RPI к этому резистору. Это работает отлично, никакого плавающего поведения вообще. Я также попробую ваше решение, так как оно еще проще. Так что спасибо за помощь!, @bas

Хорошая работа. Большинство конструкций используют внутренние подтягивающие резисторы, так как это экономит дополнительные компоненты. Некоторые микросхемы также имеют опцию подтягивающего резистора. Спасибо за отзыв., @Transistor


1

Остается ли контакт (входной контакт Arduino) плавающим при подключении к GPIO на RPI?

Да. Подключение одного плавающего контакта к другому плавающему контакту не заставит ни один из них перестать плавать. Если что, то тот факт, что теперь их соединяет длинный провод (и принимает радиочастоты), вероятно, сделает поведение контактов еще менее предсказуемым.

,