Hola nataly!!!
prueba este código, compila bien pero no lo he probado, animo...
enum _estadoBoton // Creamos un tipo nuevo
{
noPulsado=0,
pulsado=1,
};
enum _opcionesBoton
{
ledsApagados=0,
led1Encendido=1,
led2Encendido=2,
};
struct teclado{// creamos una estructura para recoger datos de la variables
// y sus funciones
int pinBoton;
int pinLed1;
int pinLed2;
_estadoBoton estadoBoton; // cremos una variable de tipo _estadoBoton
_opcionesBoton opcionBoton;// cremos una variable de tipo _opcionesBoton
void compruevaEstadoBoton(){
if (digitalRead(pinBoton)==HIGH && estadoBoton==noPulsado){
estadoBoton=pulsado;
sumaOpcion();
actuaOpcion(opcionBoton);
}
else
if (digitalRead(pinBoton)==LOW){
estadoBoton=noPulsado;
}
}
void sumaOpcion(){
if (opcionBoton==ledsApagados){
opcionBoton=led1Encendido;
}
if (opcionBoton==led1Encendido){
opcionBoton=led2Encendido;
}
if (opcionBoton==led2Encendido){
opcionBoton=ledsApagados;
}
}
void actuaOpcion(_opcionesBoton opcion){
if (opcion==ledsApagados){
digitalWrite(pinLed2,LOW);
}
if (opcion==led1Encendido){
digitalWrite(pinLed1,HIGH);
}
if (opcion==led2Encendido){
digitalWrite(pinLed1,LOW);
digitalWrite(pinLed2,LOW);
}
}
}
botones[1];// incrementando el valor obtendremos mas botones
void setup(){
botones[1].pinBoton=5;// definimos los valores dentro de la estructura de datos
botones[1].pinLed1=10;// del boton 1
botones[1].pinLed2=11;
// si quisieramos mas botones:
/*
botones[0].pinBoton=4;
botones[0].pinLed1=9;
botones[0].pinLed2=8;
*/
// definimos los pines
pinMode(botones[1].pinBoton,INPUT);
pinMode(botones[1].pinLed1,OUTPUT);
pinMode(botones[1].pinLed2,OUTPUT);
/*pinMode(botones[0].pinBoton,INPUT);
pinMode(botones[0].pinLed1,OUTPUT);
pinMode(botones[0].pinLed2,OUTPUT);*/
}
void loop(){
// llamo a la función para controlar el estado del boton 1
botones[1].compruevaEstadoBoton();
// llamo a la funcion para controlar el estado del boton 0
//botones[0].compruevaEstadoBoton();
}