Цифровые контакты считывают 1 при настройке с помощью internal_pullup

pins arduino-due digital-in

Я работаю с Arduino DUE. Хочу настроить несколько цифровых выводов как входы. Когда микроконтроллер устанавливает эти 4 вывода, DUE должен активироваться. Это что-то вроде вывода DATAREADY в SPI, с которого данные будут отправляться ведомому устройству только при установке вывода в состояние 1.

Согласно техническому описанию, внешний микроконтроллер установит состояние вывода из 0 в 1. Я попробовал эту программу для экспериментов с влиянием цифровых выводов,

int RDY = 52;
void setup() {

 Serial.begin(9600); 
pinMode(RDY,INPUT_PULLUP);
pinMode(50,INPUT);
digitalWrite(RDY,HIGH);

}

void loop() {

digitalRead(RDY);
digitalRead(50);
digitalRead(11);
digitalRead(12);

Serial.println(digitalRead(RDY));
Serial.println(digitalRead(50));
Serial.println(digitalRead(11));
Serial.println(digitalRead(12));

delay(100);
}

Полученные результаты: 1, 1, 0, 0, как и ожидалось. Я не могу найти правильный способ обнаружения изменения состояния контакта (с 0 на 1). Чтобы обнаружить изменения, я подключал/отключал выходной контакт 5 В DUE к соответствующим цифровым контактам. Результаты не менялись при подключении и отключении провода 5 В к любому контакту.

Есть ли какой-либо способ обнаружить изменение состояния контакта, как в режиме INPUT в Arduino DUE? В большинстве примеров речь идет о переключателях, но в моем случае мне нужен пин в качестве входа.

Спасибо

, 👍0


1 ответ


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

4

Нет никакой разницы между переключателем и «штырьком» для входа. Все они либо ВЫСОКОГО, либо НИЗКОГО уровня. Подключаем его к ВЫСОКОМУ уровню с помощью подтягивающего резистора, а затем пробуем подать ВЫСОКИЙ уровень +5 В (Внимание: Due — устройство на 3,3 В, а не на 5 В!).

Вы никогда не подаете на него НИЗКИЙ сигнал (не подключаете вход к GND), так как же он может вообще считывать НИЗКИЙ уровень?

,