¡Ayuda! Arduino 'INPUT_PULLUP' no se invierte

0

Tengo una situación en la que intenté establecer pines en mi Atmel Mega328P en INPUT_PULLUP . Me dijeron que esperara una entrada invertida: a + 5V daría como resultado una lectura de LOW y una GND daría como resultado una lectura de HIGH . Sin embargo, lo que encontré es exactamente lo contrario. Intenté verificar mi + 5V y GND con algunos LED y definitivamente son + 5V y GND.

Debajo está mi código arduino; Sé que no es muy eficiente, pero ese es además mi punto. Mi IDE es Eclipse C ++.

#include "Arduino.h"
int count = 0;
void setup() {
    Serial.begin(115200);
    pinMode(PIN2, INPUT);
    pinMode(PIN4, INPUT);
    pinMode(PIN5, INPUT_PULLUP);
    pinMode(PIN6, INPUT_PULLUP);
}

void loop() {
    byte i = 0;
    if(digitalRead(PIN2) == HIGH) i += 1;
    if(digitalRead(PIN4) == HIGH) i += 2;
    if(digitalRead(PIN5) == HIGH) i += 4;
    if(digitalRead(PIN6) == HIGH) i += 8;
    Serial.println(i, BIN);
    delay(1000);
}
    
pregunta krismath

1 respuesta

2

Con el Atmega328P no es posible cambiar la forma en que los pines IO traducen un voltaje a un valor binario en un registro. (Y el pull-up interno no tiene nada que ver con esto)

Simplemente compruebe la condición opuesta en el código:

if(digitalRead(PIN5) == LOW) i += 4;
if(digitalRead(PIN6) == LOW) i += 8;
    
respondido por el user146139

Lea otras preguntas en las etiquetas