// Oefening OOP
// Simons Erik
// Knop aan/uit zet het looplicht in werking. Als je een 2de maal drukt dan blijft stop de activiteit van het looplicht.
// Als de activiteit van het looplicht is gestopt dan blijft het betreffende ledje zoals het was tijdens op het drukke op de knop.
// Druk je op de richtingsknop dan wisselt de richting van het looplicht. Ook als het looplicht niet actief is.
// De Potentiometer verandert de tijd tussen het wisselen tussen 40ms en 5000ms
// Knoppen blijven ten alle tijde actief ook als het "lopen" uit staat.
// Bibliotheken aangeven.
#include "knop.h"
#include "led.h"
#include "pot.h"
// CONSTANTEN
const int PIN_BLAUW = 9;
const int PIN_ROOD = 10;
const int PIN_GEEL = 11;
const int PIN_GROEN = 12;
const int PIN_KNOPACTIEF = 4;
const int PIN_KNOP_RICHTING = 3;
//KnopObject aanmaken
Drukknop knopL(PIN_KNOP_L);
/* De klasse knop kent:
- method (functie) ->lees()
- property PIN
- property toestand die enkel de waarde STIJGEND HOOG DALEND of DALEND kan hebben alnaargelang de knoppen bediend werden.*/
Drukknop knopActief(PIN_ACTIEF);
Drukknop knopRichting(PIN_RICHTING);
//initialiseer de potentiometer
/* Momenteel is de method potMeter nog geen klasse. Dit moeten we nog aanpassen.
PotMeter maakt gebruik van een structure PotmeterT.
potMeter heeft:
- properties : adcWaarde -> de waarde die aan de pin wordt uitgelezen.
potWaarde -> de uitgelezen waarde binnen de aangegeven grenzen.
potMin -> de minimum grens
potMax -> de maximum grens
- methods : bepaalToestand -> leest de waarde van de betreffende pin uit en limiteerd ze. */
//LED OBJECTEN aanmaken.
LedFiche ledblauw = { PIN_BLAUW }; // De structuur van Ledfiche is. PIN = pinnummer van de led. Waarde = led aan/uit.
LedFiche ledrood = { PIN_ROOD };
LedFiche ledgeel = { PIN_GEEL };
LedFiche ledgroen = { PIN_GROEN };
// (GLOBALE) VARIABELEN
int loopLichtPositie = 0;
// VOORBEREIDING
void setup() {
}
// UITVOERING
void loop() {
// INVOER
knopL.lees();
knopR.lees();
// VERWERKING
if (knopL.krijgToestand() == STIJGENDE_FLANK) {
loopLichtPositie++;
loopLichtPositie %= 4;
}
if (knopR.krijgToestand() == STIJGENDE_FLANK) {
loopLichtPositie--;
if (loopLichtPositie < 0) {
loopLichtPositie = 3;
}
}
switch (loopLichtPositie) {
case 0:
led0.aan();
led1.uit();
led2.uit();
led3.uit();
break;
case 1:
led0.uit();
led1.aan();
led2.uit();
led3.uit();
break;
case 2:
led0.uit();
led1.uit();
led2.aan();
led3.uit();
break;
case 3:
led0.uit();
led1.uit();
led2.uit();
led3.aan();
break;
default:
led0.aan();
led1.aan();
led2.aan();
led3.aan();
break;
}
// UITVOER
delay(DENDER_TIJD);
}