Vous êtes sur la page 1sur 2

programa controlador

#define lampara1 5 //lapara en el pin pwn


#define sensorlampara1 A0 //sensor en pin A0

#define lampara2 6 //lapara en el pin 6


#define sensorlampara2 A1 //sensor en pin A1

volatile int porcentajedeseado = 0; //porcentaje requerido de la luz


volatile int porcentajeactual = 1; //porcentaje de luz en el momento
volatile int incrementocadansegundos = 0; //ajuste del prorcentaje de luz

volatile long segundos = 0; //contador de segundos


volatile long segundosultimoincremento = 0; //segundos pasados en el momento
#define demorasegiundos 1000 //un segundo

void setup (){


pinMode (lampara1, OUTPUT); //pin como salida
analogWrite (lampara1, 0); //lampara apagada en cero
pinMode (lampara2, OUTPUT); //pin como salida lampara 2
analogWrite (lampara2, 0); //lampara apagada en cero
}
void loop () { //
switch (segundos) { // transcurso de seguncdos a los segundos deceados
case 0: // inicio 0:00 lamparas en 20%
incrementocadansegundos = (2*60-0)/(20-0);//calculo incremento de luz
porcentajedeseado = 20;
break;

case 2*60: //porsentaje de luz en el rango 2:00 a 3:59 es de 40%


incrementocadansegundos = (4*60-2*60)/(40-20);//calculo incremento de luz
porcentajedeseado = 40;
break;

case 4*60: //porsentaje de luz en el rango 4:00 a 6:59 es de 60%


incrementocadansegundos = (7*60-7*60)/(60-40);//calculo incremento de luz
porcentajedeseado = 60;
break;

case 7*60: //porsentaje de luz en el rango 7:00 a 7:59 es de 60%


incrementocadansegundos = (8*60-7*60)/(75-60);//calculo incremento de luz
porcentajedeseado = 75;
break;
}

if(segundos-segundosultimoincremento >= incrementocadansegundos){


porcentajeactual++; //se incrementa 1%
segundosultimoincremento = segundos; //guardado de registro segundos en el
momento
}
ajustarluzlampara1(porcentajeactual); //por medio del pin pwm se controla
luminocidad de lampara
ajustarluzlampara2(porcentajeactual); //controla luminocidad de lampara segun sea
la situacion

delay(demorasegiundos); // 1 segundo
segundos++;
if (segundos == 480){ // 8 minutos
segundos = 0; //inicio de conteo
porcentajedeseado = 0;
}

}
void ajustarluzlampara1 (uint8_t porcentajedeseado){
volatile uint16_t valsensorlamp1 = analogRead(sensorlampara1); //valor sensor de
luz
volatile uint8_t porcentajeluzlamp1 = map(valsensorlamp1, 0, 1023, 0, 100);
//porcentaje de luz
volatile int8_t correccionluz1 = porcentajedeseado - porcentajeluzlamp1;
//calculo de luz
volatile int8_t controlluzlampara1 = correccionluz1 + porcentajedeseado; //
if (controlluzlampara1 < 0){ //ajuste limite
controlluzlampara1 = 0; //
}
else if (controlluzlampara1 > 100){ //ajuste limite si se supera 100%
controlluzlampara1 = 100;
}

volatile uint8_t valorpwm1= map(controlluzlampara1 0, 100, 0, 255);// valores pin


pwm
analogWrite (lampara1, valorpwm1); //cambio de valor pwm
}

void ajustarluzlampara2 (uint8_t porcentajedeseado){


volatile uint16_t valsensorlamp2 = analogRead(sensorlampara2); //valor sensor de
luz
volatile uint8_t porcentajeluzlamp2 = map(valsensorlamp2, 0, 1023, 0, 100);
//porcentaje de luz
volatile int8_t correccionluz2 = porcentajedeseado - porcentajeluzlamp2;
//calculo de luz
volatile int8_t controlluzlampara2 = correccionluz2 + porcentajedeseado; //
if (controlluzlampara2 < 0){ //ajuste limite
controlluzlampara2 = 0; //
}
else if (controlluzlampara2 > 100){ //ajuste limite si se supera 100%
controlluzlampara2 = 100;
}

volatile uint8_t valorpwm2= map(controlluzlampara2 0, 100, 0, 255);// valores pin


pwm
analogWrite (lampara2, valorpwm2); //cambio de valor pwm
}

Vous aimerez peut-être aussi