Primeros pasos con un botón .... y me falla.

Hola,

Estoy dando los primeros pasos con un Kit de Iniciación de Elegoo y me estoy dando de cabezazos con algo que ya no le encuentro explicación.

He creado un simple circuito con un botón y con un led, para encender el led cuando se pulse el botón. De ésto hay ejemplos a miles y además lo he montado con un simulador.

En el simulador me funciona pero no tengo manera de echar a funcionar la placa y por más que he revisado tanto el esquema como la programación lo veo todo bien (y en el simulador va). Soy informático, así que aunque son mis primeros pasos con arduino tampoco me pilla de nuevas.

He puesto algunas trazas mandando a consola a través del Serial y lo que observo es que la evaluación del digitalRead(buttonPin) no es coherente pues me da tanto unos como ceros sin ni siquiera pulsar el botón. Sé que el ruido puede afectar pero protegí el código con un delay(50) para volver a depurar y el resultado era el mismo. Y la pulsación del botón no generaba ningún cambio.

He probado con un par de botones e incluso con otra resistencia pero sigue igual.

¿qué puede ser? Agradezco cualquier ayuda por simple que pueda parecer.

Hola!

Para que el botón funcione correctamente, tienes que ponerle una resistencia o bien configurarlo como PULLDOWN para que se use la resistencia interna del arduino. En este último caso funcionaría con lógica inversa, es decir, el 0 es pulsado.

Un saludo!

Hi,
Creo que lo mejor seria que adjunte un diagrama a mano de como estas instalando el boton .Asi tendremos una idea de ver si tienes un error en la coneccion.
Adjunto esquematico de como se instala para que el arduino pueda leerlo.

Gracias por vuestras respuestas pero creo que tiene que haber algo más.

El esquema es el siguiente:

Google Photos

(Edito … .perdón, pongo un enlace externo pues no sé subir fotos aquí al foro).

Y el código éste:

// constants won’t change. They’re used here to set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 3; // the number of the LED pin

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}

El simulador funciona pero no hay manera cuando lo llevo a la placa.

Hi,
Puedes hacer una prueba y es de conectar el cable verde a los 5 voltios.Trata de leer el voltaje para ver que te lee.

Moderador
Por favor edita tu post usando etiquetas de código.
Y también edita el enlace del mismo modo, con su correspondiente etiqueta para enlace..
Lee las Normas del foro