Чтение состояния цифрового контакта 11, когда он установлен как ВЫХОД

Я установил контакт 11 в качестве выхода. pinMode(11, ВЫВОД);

Однако я хочу иметь возможность читать его состояние (если оно HIGH или LOW), однако, поскольку оно установлено как OUTPUT, я не могу использовать digitalRead().

Я нашел это в Интернете:

Serial.println(bitRead(PORTD,3));    
//Читает бит 3 регистра PORTD, который содержит текущее состояние (высокий/низкий) контакта 3

Если я хочу прочитать состояние контакта 11, то это: Serial.println(bitRead(PORTD,11)); будет достаточно? Или мне также нужно изменить ПОРТ?

, 👍-3

Обсуждение

Почему бы не попробовать?, @StarCat

пожалуйста, не спрашивайте что произойдет, если я это сделаю? ... сначала сделайте это, а потом спрашивайте, если вы что-то не понимаете, @jsotola


1 ответ


2

однако, поскольку он установлен как ВЫВОД, я не могу использовать digitalRead().

Где вы это услышали? digitalRead() вернет состояние вывода, установленного в режим OUTPUT. (В этом случае это будет состояние, которое вы установили в последний раз). В качестве демонстрации, это обычная идиома для инвертирования состояния выходного вывода:

digitalWrite(LEDPIN, !digitalRead(LEDPIN));
,