Está en la página 1de 4

#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

También podría gustarte