Arduino Due Цифровые входы без ответа

На двух моих Arduino Due при подключении контакта 3.3V к любым цифровым входам (37,36,35 ,34), в качестве вывода не выдается ни последовательное сообщение, ни LED_BUILTIN, только сообщение Test.

Цифровые контакты по умолчанию устанавливаются как INPUT. Blink работает.

Я никогда не подключал к этим контактам ничего другого, даже 5 В.

Что мне не хватает?

void setup() {
    Serial.begin(115200);
    while(!Serial);
    pinMode(LED_BUILTIN,OUTPUT);
    Serial.print("Test");
}

void loop() {
    if (digitalRead(37))
        Serial.print("37");
    if (digitalRead(36))
        Serial.print("36");
    if (digitalRead(35))
        Serial.print("35");
    if (digitalRead(34))
        Serial.print("34");
    digitalWrite(LED_BUILTIN,digitalRead(37));
}

, 👍0

Обсуждение

Нет. По умолчанию они не определены как INPUT (??)., @Brethlosze

И если вы вручную установите эти контакты на ВХОД, он начнет работать?, @Majenko

Да... в этом была проблема..., @Brethlosze

Я предполагаю, что, поскольку эти контакты также являются контактами PWM, альтернативная функция застряла в режиме PWM, пока вы вручную не заставили ее измениться. Возможно, из какого-то более раннего эскиза или чего-то еще. Я недостаточно хорошо знаком с чипами SAM, чтобы знать, как работают функции выводов., @Majenko


1 ответ


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

2

Хорошей практикой является установка режима выводов для всех выводов, используемых скетчем.

void setup() {
    Serial.begin(115200);
    while(!Serial);
    pinMode(34, INPUT);
    pinMode(35, INPUT);
    pinMode(36, INPUT);
    pinMode(37, INPUT);
    pinMode(LED_BUILTIN, OUTPUT);
    Serial.print("Test");
}

Ядро Arduino AVR по умолчанию устанавливает режим выводов на INPUT, но ядро Arduino SAM этого не делает. SAM MCU гораздо более продвинутый и позволяет включать и выключать порты и множество других функций.

Ура!

,