Как я могу digitalRead пин-код, который находится в pinMode OUTPUT? - PullRequest
29 голосов
/ 28 мая 2011

У меня очень простой тест sketch , в котором я пытаюсь установить пин-код на HIGH, а затем прочитать его состояние с помощью digitalRead. Вот мой набросок.

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    delay(1000);

    pinMode(3, OUTPUT);
    digitalWrite(3, HIGH);
    delay(1000);

    pinMode(3, INPUT);
    Serial.println(digitalRead(3));
}

Результат последовательного монитора:

0
0
0
0

Я понял, что изменение pinMode остановит его HIGH. Поэтому, установив контакт на HIGH в режиме OUTPUT, а затем переключившись на режим INPUT, вы измените его на LOW. Поэтому digitalRead всегда будет возвращать 0. Если я не изменю pinMode, он не сможет прочитать пин-код. Итак, как я могу прочитать текущую настройку контакта, который находится в режиме OUTPUT, не теряя значение?

Ответы [ 11 ]

0 голосов
/ 28 мая 2011

Сохраняйте отдельную логическую карту состояний выходных контактов.

Если вывод GPIO микроконтроллера установлен в качестве входа, то его значение при чтении зависит от того, к чему он подключен извне.Это своего рода точка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...