/*Timer
Erik Simons*/
//VASTE VARIABELEN (Mogen ook defines zijn)
const int POTTIJD = A0;
const int POTPWM = A1;
const int VERBRUIKER = 13;
const int MAXTIJD=1000; //Hoelang een pulse maximaal mag duren in ms. bvb 1000 = 1Hz
const int MINTIJD=200;// Hoelang een pusle minimum moet duren in ms. bvb 200 = 5Hz
//Globale 'veranderlijke' variabelen
unsigned long nu = 0;// de huidige verstrken tijd in ms
unsigned long vorige = 0;//hoeveel tijd er verstreken sinds de vorige keer in ms
unsigned long voorbij = 0;//hoeveel tijd er VAN DE PWMPULS IS verstreken
int puls = 0;// de totale breedte van een pulse in ms
int pulsHigh = 0;// de duur dat de puls actief is in ms
int tijdPot = 0; // waarde van de potmeter die de PWM frequentie regelt
int pwmPot = 0;// waarde van de potmeter die het pwm signaal regelt
byte waardePwm = false ;// of poort VERBRUIKER hoog of laag is. is een drbug regel
// Eenmalig te doen als voorbereiding.
void setup() {
pinMode(VERBRUIKER, OUTPUT);
pinMode (POTTIJD,INPUT);
Serial.begin(9600);
}
// Herhaal het onderstaande doorlopend.
void loop() {
// Gegevens inlezen.
tijdPot=analogRead(POTTIJD);
pwmPot=analogRead(POTPWM);
nu = millis();
// Gegevens aanpassen voor gebruik
puls =map(tijdPot,0,1023,MINTIJD,MAXTIJD);
pulsHigh =map(pwmPot,0,1023,0,puls);
voorbij=nu-vorige;
// Verwerking
if (pulsHigh < voorbij){
waardePwm=false;// is een debug regel
digitalWrite(VERBRUIKER,false);
}
if (puls <= voorbij && pulsHigh!=0){ // && pulsHigh -> omdat er anders altijd één pulsje is!
waardePwm=true;//is een debug regel
vorige = nu;
digitalWrite(VERBRUIKER,true);
// = Reset
}
//uitvoer
/* DEBUGGING*/
//Serial.print("Frequentie = ");
//Serial.print(1000.00/float(puls));
//Serial.print(" PWM = ");
//Serial.println(pulsHigh);
//Serial.print(" Aan/Uit :");
Serial.print(waardePwm);
//delay(10000);
/*EINDE DEBUGGING */
}