unsigned long Tp0 = 0; //delay de controle
unsigned long Tp1 = 0;
int tempo = 1000;
double porcentagem = 0; //porcentagem usada para controle da resistencia
double TempoOn = 0;
double TempoOff = 0;
bool estado = 1;
int potencia = 0; //valor que alterna de 0 a 255
void setup(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
Serial.begin(9600);
}
void loop(){
if(Delay1(Tp0, tempo)){
porcentagem = (double)potencia / 100; //divide o valor da potencia(0 a 10) para obter uma porcentagem
TempoOn = 1000 * porcentagem; //multiplica o valor da porcentagem para obter uma porcentagem de 1 segundo
TempoOff = 1000 - TempoOn; //obtem a porcentagem restante de milisegundos que sobrarem para usar como tempo desligado
if(estado == 1 && potencia >= 1){
digitalWrite(2, HIGH);
Serial.println("led ligado");
estado = 0;
tempo = (int)TempoOn; //define o tempo em que a resistencia ficará desligada
Serial.print("tempo deligado: "); Serial.println(tempo);
} else if (potencia >= 1 ){
digitalWrite(2, LOW);
Serial.println("led Desligado");
estado = 1;
tempo = (int)TempoOff; //Define o tempo em que a resistencia ficará ligada;
Serial.print("tempo Ligado: "); Serial.println(tempo);
}
}
}
bool Delay1(unsigned long &TempoAnterior, unsigned long intervalo){
if (millis() - TempoAnterior >= intervalo){
TempoAnterior = millis();
return true;
} else {return false;}
}