Lo primero presentarme, y gracias por adelantado a todo el que pueda ayudarme, llevo varios dias intentando esta mini prueba para luego pasar a algo mejor pero antes debo hacer funcionar esto.
La idea es que con un solo pulsador ir cambiando de led y apagar el resto, lo consigo con dos van cambiando entre ellos pero no consigo pasar al tercero y que despues de este pase al primero otra vez al pulsar de nuevo, el codigo lo tengo en el otro Pc, llevo ya como 3 o 4 diferentes y no me llegan a funcionar, e buscado en varios sitios pero no encuentro nada, creo que lo que hago mas es guardar mas de dos pulsaciones en el boton... alguna idea?
Lee las Normas del foro y postea tu código usando etiquetas con lo hecho hasta ahora.
Te aseguro que no por que no voy al colegio ya xD, simplemente estoy comenzando en el arduino y necesito conseguir eso para luego mas adelante aplicar un rele y temporizadores pero primero necesito que funciona con los leds y con un solo pulsador
Vale perdona pero no e tenido tiempo hasta ahora, e mezclado tanto mi codigo ya que tengo muchas cosas en comentarios por que eran pruebas que no me han funcionado te voy a mostrar como lo tengo ahora y solo me funciona con dos no consigo pasar al tercero.
const int LED =13;
const int LED2 =12;
const int LED3 =11;
const int BOTON = 6;
int val = 0;
int state = 0;
int old_val = 0;
void setup(){
pinMode(LED,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(BOTON,INPUT);
}
void loop() {
val= digitalRead(BOTON);
if ((val == HIGH) && (old_val == LOW)){
state=1-state;
delay(10);
}
old_val = val;
//for (int state=0; state<3; state++)
//{
/*if ((val == HIGH) && (old_val == LOW)){
state=1-state;
delay(10);
}*/
if (state == 0)
{
digitalWrite(LED, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
}
//old_val = val;
if (state == 1)
{
digitalWrite(LED, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
}
if (state == 2)
{
digitalWrite(LED, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
}
// }
}
solo estás considerando dos estados 0 o 1 no más entonces solo se cumple las dos condiciones, debes al state ir sumando las veces que se a pulsado, entonces si pulsas una vez se enciende el primer led, al segundo pulso el segundo led etc, y ahora para que se repita en la cuarta pulsación deben apagarse todos los leds y reiniciar el valor state, e hecho unos cambios a tu código reviso y las cosas que no entiendas postea aqui tus dudas, no olvides utilizar la resistencia pull down para tu botón .
/*
Name: Pruebas Varias
Created: 17/03/2018 11:38:02
Author: Bryan
*/
const byte
LED = 13,
LED2 = 12,
LED3 = 11,
BOTON = 6;
int
state = 0;
bool
estadoAnterior = 0,
estadoActual;
unsigned int
contador = 0;
void setup() {
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(BOTON, INPUT);
}
boolean haCambiado(int p) {
estadoActual = digitalRead(p);
if (estadoAnterior != estadoActual) // ha habido un cambio de estado
{
contador++; // cuenta los cambios de estado
int validarPar = contador % 2; // solo queremos los cambios pares
if (validarPar != 1) // si el cambio es par
{
estadoAnterior = estadoActual;
return true;
}
else {
estadoAnterior = estadoActual;
return false;
}
}
else return false;
}
void loop() {
if (haCambiado(BOTON)) {
state++;
}
switch (state)
{
case 1:
digitalWrite(LED, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
break;
case 2:
digitalWrite(LED, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
break;
case 3:
digitalWrite(LED, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
break;
case 4:
digitalWrite(LED, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
state = 0;
break;
}
}
Bueno yo me imagine que conectastes un botón a 5v y por lo tanto debe ser pull down, como no especificastes como son tus conexiones, pero puedes conectarlo de las 2 formas, eso ya dependerá de como tienes tus conexiones
scorpone:
PD: Ahora si quiero añadir para mas leds simplemente tendre que añadir mas estados me imagino no?
Si tienes que añadir más estados y cambiar el estado en el cual reinicia y apaga todos los leds, o puedes ingeniarte algún código que vaya apagando el led anterior y encienda el siguiente sin usar tanto estado, eso ya dependera de ti.
Swift:
Bueno yo me imagine que conectastes un botón a 5v y por lo tanto debe ser pull down, como no especificastes como son tus conexiones, pero puedes conectarlo de las 2 formas, eso ya dependerá de como tienes tus conexiones
Si tienes que añadir más estados y cambiar el estado en el cual reinicia y apaga todos los leds, o puedes ingeniarte algún código que vaya apagando el led anterior y encienda el siguiente sin usar tanto estado, eso ya dependera de ti.
Tengo puesto otros pulsadores con resistencias de 220 y funciona igual, al principio iba a ser cada led con su pulsador cosa que era sencillo pero al final tiene que ser con uno solo, mañana seguire haciendo pruebas gracias por la ayuda