Estoy escribiendo código en Energia usando la plataforma de lanzamiento mso430g2553 y un botón externo con una resistencia pullup. El código simplemente debe mostrar el estado del botón en el monitor serial, 1 para presionar, 0 para no presionar. Este es el código que estoy usando:
int pushButton = 5;
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
// NOTE this is different from the on-board pushbutton
pinMode(pushButton, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
Serial.println(buttonState);
delay(1); // delay in between reads for stability
}
Esta es la configuración del circuito que estoy usando:
Mi problema es que cuando ejecuto el programa, siempre obtengo 0 sin importar si el botón está presionado o no. Parece que el programa no está leyendo la entrada del botón, o conecté el botón de manera incorrecta. Sin embargo, parece que no puedo encontrar el problema, intenté girar el botón 90 grados y conecté las patas opuestas del botón a tierra y al pin. ¿Sería una solución agregar un condensador antirrebote tal vez? ¡Cualquier ayuda sería muy apreciada!
Según OP en los comentarios, como lo cuestionó @TomCarpenter, el problema era la orientación del interruptor táctil de 4 pines que OP estaba usando. La conexión conmutada no se estaba utilizando, vinculando P1.3 a tierra de forma permanente.
usuario_1818839
int pushButton = 5;
asigna su interruptor al pin de hardware P1.3?María
CL.
María
usuario_1818839
static const uint8_t P1_3 = 5;
entonces el pin se ve bien. Mida los voltajes reales en ese pin a continuación...tom carpintero
María