//Actividad 2 TP2
int ubicacionpin[10]={15,2,0,4,16,17,5,18,19,21};
#define Encendido 1
#define Apagado 0
int estado;
int intervalo=0;
//creo la estructura
struct ParametrosEncendidoApagado {
int posiIn;
int posiFin;
int Estado;
};
//llamo la estructura dentro de una funcion
void parametrosLed(struct ParametrosEncendidoApagado parametro){
Serial.println(parametro.Estado);
if (parametro.Estado==Encendido){
if (parametro.posiIn < parametro.posiFin){
//apago los pin< al pin inicio
for (int restador=1; (parametro.posiIn-restador)<parametro.posiIn && parametro.posiIn-restador>=0; restador++){
digitalWrite(ubicacionpin[parametro.posiIn-restador], LOW);
}
// apago pin mayores al pin final
for(int sumador=1; (parametro.posiFin+sumador)>parametro.posiFin && parametro.posiFin+sumador<10; sumador++){
digitalWrite(ubicacionpin[parametro.posiFin+sumador], LOW);
}
//enciendo los pines ingresador
intervalo=parametro.posiFin-parametro.posiIn;
for(int igualarint=0; igualarint<=intervalo; igualarint++){
digitalWrite(ubicacionpin[parametro.posiIn+igualarint],HIGH);
}
}
else{ //posiIn>posiFin
// apago los pines mayores a Pin inicial
for(int sumador=1; (parametro.posiIn+sumador)>parametro.posiIn && (parametro.posiIn+sumador)<10; sumador++){
digitalWrite(ubicacionpin[parametro.posiIn+sumador], LOW);
}
// apago los pines menores a pin final
for (int restador=1; (parametro.posiFin-restador)<parametro.posiFin && (parametro.posiFin-restador)>=0; restador++){
digitalWrite(ubicacionpin[parametro.posiFin-restador], LOW);
}
// enciendo los pines designados
intervalo=parametro.posiIn-parametro.posiFin;
for( int igualarint=0; igualarint<= intervalo ; igualarint++){
digitalWrite(ubicacionpin[parametro.posiIn+igualarint], HIGH);
}
}
}
if (parametro.Estado==Apagado){
if (parametro.posiIn < parametro.posiFin){
//enciendo los pin< al pin inicio
for (int restador=1; ((parametro.posiIn-restador)<parametro.posiIn) && parametro.posiIn-restador>=0 ; restador++){
digitalWrite(ubicacionpin[parametro.posiIn-restador], HIGH);
}
// enciendo pin mayores al pin final
for(int sumador=1; (parametro.posiFin+sumador)>parametro.posiFin && parametro.posiFin+sumador<10 ; sumador++){
digitalWrite(ubicacionpin[parametro.posiFin+sumador], HIGH);
}
//apago los pines ingresador
intervalo=parametro.posiFin-parametro.posiIn;
for(int igualarint=0; igualarint<=intervalo; igualarint++){
digitalWrite(ubicacionpin[parametro.posiIn+igualarint],LOW);
}
}
else{ //posiIn>posiFin
// enciendo los pines mayores a Pin inicial
for(int sumador=1; (parametro.posiIn+sumador)>parametro.posiIn && parametro.posiIn+sumador<10; sumador++){
digitalWrite(ubicacionpin[parametro.posiIn+sumador], HIGH);
}
// enciendo los pines menores a pin final
for (int restador=1; (parametro.posiFin-restador)<parametro.posiFin && parametro.posiFin-restador>=0; restador++){
digitalWrite(ubicacionpin[parametro.posiFin-restador], HIGH);
}
// apago los pines designados
intervalo=parametro.posiIn-parametro.posiFin;
for( int igualarint=0; igualarint<= intervalo; igualarint++){
digitalWrite(ubicacionpin[parametro.posiIn+igualarint], LOW);
}
}
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println('Recordar que los el rango del pin va del 0 al 9');
for (int pin=0; pin<10; pin++ ){
pinMode(ubicacionpin[pin], OUTPUT);
Serial.println(pin);
}
}
struct ParametrosEncendidoApagado Parametros= {4,7,0};
void loop() {
// put your main code here, to run repeatedly:
parametrosLed(Parametros);
delay(10); // this speeds up the simulation
}