Los pines de Arduino Nano siempre son altos

0

Comencé a construir un transmisor de infrarrojos (comandante). Utilizo 4 pulsadores para izquierda, derecha, arriba, abajo. Estos botones están bajando cuando se presionan. Utilicé resistencias internas pullup. Mi problema es que el arduino está viendo un pin como alto (no se puede cambiar presionando el botón) y el otro como bajo (no se puede cambiar presionando los botones). No está reconociendo los cambios.

He intentado lo siguiente para resolver:

  • Primero usé Pulldowns y el resultado fue el mismo. Entonces busqué una alternativa y encontré pullupp. El mismo problema.
  • Probé otros pines. Mismo problema.
  • Comprobado las conexiones de soldadura. Todo está bien.
  • Luego medí los voltajes para el primer pin. Cuando no se presiona nada la tensión entre el pin A0 y tierra es 0V y cuando se presiona, la tensión entre el pin A0 y tierra es 0V.
  • Tomé una resistencia externa (1k) en lugar de un pullup interno. Conocer el problema con el que se soluciona solo. Los voltajes cuando se presionan y no se presionan están bien. Pero los pines del controlador no están reconociendo los cambios.

El último punto es muy extraño, esperaba 5V cuando no se presionaba y 0V cuando se presionaba.

Aquí está mi código:

    #include <IRremote.h>
    #include <IRremoteInt.h>

    IRsend irsend;

    // The configuration of the output pin will be made by the library
    // The output pin is a different one for different arduinos
    // Arduino UNO:  Output = D3
    // Arduino MEGA: Output = D9
    // You will find a full list of output pins on the website:
    // http://z3t0.github.io/Arduino-IRremote/


    #define TASTE_HOCH 19       //A0
    #define TASTE_RECHTS 22     //A3
    #define TASTE_UNTEN 21      //A2
    #define TASTE_LINKS 20      //A1

    int aktiveTaste = 0;        //Taste die momentan gedrückt ist

    void setup()
    {
    pinMode(TASTE_HOCH, INPUT_PULLUP);     
    pinMode(TASTE_RECHTS, INPUT_PULLUP);   
    pinMode(TASTE_UNTEN, INPUT_PULLUP);   
    pinMode(TASTE_LINKS, INPUT_PULLUP);    

    Serial.begin(9600);
    }

    // main program loop
    void loop() {


    Serial.print("TASTE_HOCH: ");
    Serial.println(digitalRead(TASTE_HOCH), DEC);

    Serial.print("TASTE_RECHTS: ");
    Serial.println(digitalRead(TASTE_RECHTS), DEC);

    Serial.print("TASTE_UNTEN: ");
    Serial.println(digitalRead(TASTE_UNTEN), DEC);

    Serial.print("TASTE_LINKS: ");
    Serial.println(digitalRead(TASTE_LINKS), DEC);

    delay(3000);

    if(digitalRead(TASTE_HOCH) == LOW){
       aktiveTaste = 1;
    }
    else if(digitalRead(TASTE_RECHTS) == LOW){
       aktiveTaste = 2;
    }
    else if(digitalRead(TASTE_UNTEN) == LOW){
       aktiveTaste = 3;
    }
    else if(digitalRead(TASTE_LINKS) == LOW){
       aktiveTaste = 4;
    }



    if(aktiveTaste > 0){


    // The transmitter sends in this example the signal A90 (hex. dezimal   form) in the encoding "RC5"
    // It will be transmitted 3 times after that it will make a 5 second break
    for (int i = 0; i < 3; i++) {
      irsend.sendRC5(aktiveTaste, 12); // [0xA90] signal | [12] Bit-length signal (hex A90=1010 1001 0000)
      delay(40);
    }

    aktiveTaste = 0;                    //Keine Taste gedrückt
    }
    }

Y esta es la salida de la impresión en serie:

¿Cuál es la causa para no reconocer los cambios?

    
pregunta user8886193

1 respuesta

2

solucioné mi problema. Después del comentario de idfka, me di cuenta de que los pines de los nano tableros son específicos del fabricante. Mi tablero es este: enlace :

Antes de eso usé los números para los pines de este: enlace :

Y esto es de idkfa: enlace

Nunca pensé que fabricantes diferentes usarían pines diferentes.

#define TASTE_HOCH 14       //A0
#define TASTE_RECHTS 17     //A3
#define TASTE_UNTEN 16      //A2
#define TASTE_LINKS 15      //A1

El cambio de los números resolvió mi problema.

    
respondido por el user8886193

Lea otras preguntas en las etiquetas