ampliar pulsadores en el mismo programa SOLUCIONADO

const int buttonPin = 8;
const int ledPin = 13;
int estado = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}

void loop(){
if (digitalRead(buttonPin) == HIGH) {
delay(500);
if(estado)
digitalWrite(ledPin, HIGH);
else
digitalWrite(ledPin, LOW);
estado = ~estado;
}
perdonar mi ignorancia he probado este programa para encender y apagar un led con un pulsador y va de maravilla , la pregunta es como se amplia para encender y apagar varios , he probado ampliando las entradas y salidas y me da error , muchas :cold_sweat: gracias

que es lo que has probado exactamente? pon el código.

const int buttonPin = 8;
const int ledPin = 13;
const int buttonPin = 2:
const int ledPin = 12;
int estado = 0;

he ampliado el codigo como aparece arriba intentando habilitar otro pulsador y su correspondiente led me imagino que sera una tonteria y que tengo que hacer mucho mas gracias de antemano

entiendes el codigo dentro del loop() ??

mira mi firma para tutoriales de Arduino básico.

Hola peperruno,

Sergegsx te aconseja bien, miraté los tutoriales del playground, en castellano encontrarás lo que necesitas y más.

Tu problema es que no puedes definir dos variables diferentes con el mismo nombre.

void loop(){
if (digitalRead(buttonPin) == HIGH) {
delay(500);
if(estado)
digitalWrite(ledPin, HIGH);
else
digitalWrite(ledPin, LOW);
estado = ~estado;
}
si mas , menos que mas, entiendo que se lee el estado del buttonPin y segun tenga el valor actua sobre ledPin encendiendolo y apagando , el retardo es para dar tiempo a pulsar , es perfecto lo que no entiendo es como puedo ampliar esta operacion a otros pines y poder conectar mas pulsadores y leds gracias por vuestra paciencia .-

pregunta de ignorante , tiene que haber una variable por cada pulsador?

Por su puesto! Si no sería un solo pulsador! Es decir pulses el que pulses siempre cambiará la misma variable, te interesa tener x pulsadores diferentes.

ok, como diferencio una variable de otra ?

int estado= 0; int estado2=0; int LoQueQuieras=0; . .

muchas gracias creo que tengo que ponerme las pilas con los tutoriales , y volver a intentarlo.- :~

Peperruno, las variables no puedes nombrarlas a todas igual. Ten en cuenta que el nombre de la variable debe ser descriptiva, es decir, si describes un boton, no puedes crear un segundo boton, por eso debes poner boton, boton2 boton3... lo digo por

const int buttonPin = 8;
const int ledPin =  13;
const int buttonPin = 2: //ya has declarado antes esta variable!!!
const int ledPin = 12;  //y esta también, ledPin se suele usar en el pin 13 porque ahí está conectado un led SMD para primeras pruebas
int estado = 0;

Y para no liarte con las variables de estado, te aconsejo que las pongas como estadoBoton1, estadoBoton2... Incluso (esto ya es el método de cada uno) que agrupes las variables comunes, para luego ver con más claridad:

//boton 1
const int buttonPin = 8; 
int estado = 0;
const int ledPin =  13;

//boton 2
const int buttonPin2 = 2:
int estadobutton2 = 0;
const int ledPin2 = 12;

Y comenta el código, no hace falta hacerlo linea a linea, pero sí hacerlo de forma que dentro de unos días (o meses) puedas entender qué hace cada parte del código, o qué querías que hiciera.

const int buttonPin = 2; const int ledPin = 13; const int buttonPin2 = 4; const int ledPin2 = 14; int estado = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); pinMode(ledpin2, OUTPUT); pinMode(buttonPin2 INPUT); } otra de ignorante , seria correcto este codigo para dos pulsadores? muchas gracias :relaxed:

si tienes un arduino Mega... Arduino UNO (y duemilanove, diecimila...) "sólo" tienen 14 entradas/salidas digitales, pero se numeran de 0 a 13 ;)

Por otro lado, te has dejado de nuevo la variable de estado para el boton 2, por lo demás bien.

hola peperruno,yo tambien soy nuevo en esto como tu,aun no me ha yegado la laca,pero ya tengo agun programilla ala espera,te aconsejo si recien empiezas,que te veas algun tuto de estos,se explica bastante bien para iniciados,tiene tambien muchos sobre electronica basica en su canal,espero que sirva a los que estan empezando.

http://www.youtube.com/watch?v=_t2mSglFTvs ------> Introduccion http://www.youtube.com/watch?v=FWnRjhGa6f0 ------> Hola mundo http://www.youtube.com/watch?v=sNsAIAXtLK0 --------> PWM http://www.youtube.com/watch?v=eN4oN5lbdIo --------> Conversor ADC y puerto serie http://www.youtube.com/watch?v=damFkAI_JS0 --------> Pulsadores +estructuras if y switch http://www.youtube.com/watch?v=eeX1-TZj6ZA ---------> LCD http://www.youtube.com/watch?v=idI2z2DlJDM ---------> Uso y aplicacion de resistencias variables en proyectos

Un saludo!

hola franx

superagredecido , empiezo ahora mismo.-

//tres pulsadores by peperruno

//boton 1 const int buttonPin = 2; int estado = 0; const int ledPin = 13; //boton 2 const int buttonPin2 = 4; int estadobutton2 = 0; const int ledPin2 = 12; //boton 3 const int buttonPin3 = 7; int estadobutton3 = 0; const int ledPin3 = 8;

void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); pinMode(ledPin2, OUTPUT); pinMode(buttonPin2, INPUT); pinMode(ledPin3, OUTPUT); pinMode(buttonPin3, INPUT); }

void loop(){

if (digitalRead(buttonPin) == HIGH) { delay(500); if(estado) digitalWrite(ledPin, HIGH); else digitalWrite(ledPin, LOW); estado = ~estado; } if (digitalRead(buttonPin2) == HIGH) { delay(500); if(estado) digitalWrite(ledPin2, HIGH); else digitalWrite(ledPin2, LOW); estado = ~estado; } if (digitalRead(buttonPin3) == HIGH) { delay(500); if(estado) digitalWrite(ledPin3, HIGH); else digitalWrite(ledPin3, LOW); estado = ~estado; } }

me falta conectar y probar pero creo que va a funcionar muchas gracias a todos .-

Llámame agorero, pero no te va a funcionar... :grin:

Utiliza varios estados, no siempre el mismo, que te has olvidado de esa parte. :P

funciona de lujo , a mi me sirve el problema que tengo es cuando lo tenga que usar otro ajeno al dato de que al pulsar hay que hacerlo con cierta pericia no lo haga asi , me refiero al tiempo que mantienes pulsado que logicamente cada uno lo hacemos diferente pero he pedido ayuda a ver si a alguien se le ocurre algo para solucionarlo , de todas formas a que te refieres dos estados y cambia de encendido a apagado y viceversa no es correcto? gracias un saludo .-

Me refiero a que si quieres que el botón 1 sea independiente del botón 2, tendrás que usar un estado para el botón 1 y otro para el 2; void loop(){

if (digitalRead(buttonPin) == HIGH) { delay(500); if(estado) digitalWrite(ledPin, HIGH); else digitalWrite(ledPin, LOW); estado = ~estado; } if (digitalRead(buttonPin2) == HIGH) { delay(500); if(estadobutton2) digitalWrite(ledPin2, HIGH); else digitalWrite(ledPin2, LOW); estadobutton2 = ~estadobutton2; } if (digitalRead(buttonPin3) == HIGH) { delay(500); if(estadobutton3) digitalWrite(ledPin3, HIGH); else digitalWrite(ledPin3, LOW); estadobutton3 = ~estadobutton3; } }