/*
Flipled.
Erik Simons
30/05/2024
*/
// Bibliotheken
#include <AltSoftSerial.h>
#include "Led.h"
#include "Knop.h"
#include "Pot.h"
//Constanten
const int PIN_ROOD = 11;
const int PIN_GROEN = 6;
const int PIN_POT = A0;
const int PIN_KNOP = 7;
const int PIN_nRE_DE = 10; // RS-485 module
//Variabelen
int aanUit;
int dimming=0;
int oudeDimming = 0;
char c_een= "";
char c_twee = "";
// speciale variabelen
status flanK ;//flanK kan nu enkel de waarden RIJZEND, HOOG, DALEND en LAAG hebben
// Zie de uitleg in de "Knop.h" biliotheek
//Aanmaken van objecten
Led Groen(PIN_GROEN, OUTPUT);
Knop Digitaal(PIN_KNOP,aanUit,flanK);
Pot Dim(PIN_POT,0,255);
AltSoftSerial altSerial; // We maken een nieuwe UART aan
void setup() {
// put your setup code here, to run once:
Serial.begin (9600);
altSerial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Groen.aan();
Digitaal.lees();
dimming=Dim.lees();
//Zenden van de knopgegevens
if ((Digitaal.flanK == RIJZEND)||(oudeDimming != dimming)) { // Als de knop ingedrukt wordt OF de potmeter is verandert...
digitalWrite(PIN_nRE_DE, HIGH); // ... zetten we de driver aan ...
delay(1); // ... wachten we voor de driver om actief te worden...
altSerial.print('T'); // ... sturen we een 'T' uit ...
delay(2); // ... wachten we tot het karakter verzonden is ...
altSerial.print(dimming); // ... sturen we het 2de karakter uit
delay(2); // ... wachten we weer tot het verstuurd is.
digitalWrite(PIN_nRE_DE, LOW); // ... en zetten we de driver uit. zodat we weer kunnen ontvangen.
}
// Gegevens ontvangen van aansluiting...
while (altSerial.available() > 0) { //alleen iets doen als er iets verstuurd was naar hier.
c_een = altSerial.read(); //ontvang het eerste teken
c_twee = altSerial.read(); //ontvang het tweede teken
// ... en uitvoeren van wat we ontvangen hebben.
if (c_een == 'T') {Groen.toggle();} //Zet de groene led aan/uit
analogWrite(PIN_ROOD,c_twee); //Dim de rode led volgens waarde
}
//Serial.print(" Dimming->");
//Serial.println(int(dimming));
//analogWrite(PIN_ROOD, dimming);
delay(100);
}