// 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_KNOP_ACTIEF = 4;
const int PIN_KNOP_RICHTING = 3;
//KnopObject aanmaken
/* 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.*/
Knop knopActief(PIN_KNOP_ACTIEF);
Knop knopRichting(PIN_KNOP_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 Ojectten aanmaken.
Led heeft:
Properties :
methods :
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
knopActief.lees();
knopRichting.lees();
// VERWERKING
if (knopRichting.krijgToestand() == STIJGENDE_FLANK) {
loopLichtPositie++;
loopLichtPositie %= 4;
}
//if (knopRichting.krijgToestand() == STIJGENDE_FLANK) {
// loopLichtPositie--;
// if (loopLichtPositie < 0) {
// loopLichtPositie = 3;
// }_________________________________ Eventjes uitgeschakeld omdat knopRichting voortaan als toggle moet werken.
switch (loopLichtPositie) {
case 0:
ledblauw.aan();
ledrood.uit();
ledgeel.uit();
ledgroen.uit();
break;
case 1:
ledblauw.uit();
ledrood.aan();
ledgeel.uit();
ledgroen.uit();
break;
case 2:
ledblauw.uit();
ledrood.uit();
ledgeel.aan();
ledgroen.uit();
break;
case 3:
ledblauw.uit();
ledrood.uit();
ledgeel.uit();
ledgroen.aan();
break;
default:
ledblauw.aan();
ledrood.aan();
ledgeel.aan();
ledgroen.aan();
break;
}
// UITVOER
delay(DENDER_TIJD);
}