v1.1.3
This commit is contained in:
Binary file not shown.
+55
-23
@@ -2,7 +2,7 @@
|
||||
* LDR-schakelaar berging
|
||||
* Author: Michel Bats
|
||||
* Website: www.batssoft.nl
|
||||
* Revision: 20141118
|
||||
* Revision: 20141202
|
||||
*
|
||||
* Used libraries:
|
||||
* Adafruit_GFX
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
// Bepalingen
|
||||
#define ledPin 13 // Debug LED (13 is standaard on-board)
|
||||
#define sensorldr A0 // Input van LDR
|
||||
#define sensorLdr A0 // Input van LDR
|
||||
#define potSwitch A1 // Input van potmeter voor schakelpunt
|
||||
#define potThreshold A2 // Input van potmeter voor hysteresis
|
||||
#define potDim A3 // Input van potmeter voor dim-niveau
|
||||
@@ -48,9 +48,9 @@ int switchValueLowDispPos;
|
||||
int sensorLdrValueDispPos;
|
||||
int dimLevel;
|
||||
int dimLevelPercent;
|
||||
int currentState = -1;
|
||||
int currentState;
|
||||
int currentDimLevel = -1;
|
||||
int currentSensorLdrValue;
|
||||
int currentsensorLdrValue;
|
||||
int oledConnected;
|
||||
byte iicError;
|
||||
|
||||
@@ -133,55 +133,84 @@ static const unsigned char PROGMEM bulb32_off_bmp[] =
|
||||
|
||||
void setup() {
|
||||
// Start Display
|
||||
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR,HEX); // initialize with the I2C addr 0x3D (for the 128x64)
|
||||
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR,HEX);
|
||||
display.clearDisplay();
|
||||
|
||||
// Opstartscherm
|
||||
// Lamp laten knipperen op het opstartscherm en op de daadwerkelijke schakelaar/dimmer.
|
||||
display.setTextSize(1);
|
||||
display.setTextColor(WHITE);
|
||||
display.setCursor(0,0);
|
||||
display.println("VERLICHTING");
|
||||
display.println("");
|
||||
display.println("v1.1.3 (20141202)");
|
||||
display.println("v1.1.2 (20141118)");
|
||||
display.println("v1.1.1 (20141117)");
|
||||
display.println("v1.1.0 (20141116)");
|
||||
display.println("v1.0.0 (20141116)");
|
||||
transmitter.sendUnit(kakuUnit, false);
|
||||
currentState = 0;
|
||||
display.drawBitmap(97, 0, bulb32_off_bmp, 32, 32, 1);
|
||||
display.display();
|
||||
delay(1000);
|
||||
transmitter.sendUnit(kakuUnit, true);
|
||||
currentState = 1;
|
||||
display.drawBitmap(97, 0, bulb32_on_bmp, 32, 32, 1);
|
||||
display.display();
|
||||
delay(1000);
|
||||
display.display();
|
||||
display.clearDisplay();
|
||||
|
||||
// Start debug-led
|
||||
pinMode(ledPin, OUTPUT);
|
||||
|
||||
// initieel ophalen van LDR-waarde
|
||||
currentSensorLdrValue = analogRead(sensorldr);
|
||||
currentsensorLdrValue = analogRead(sensorLdr);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Ophalen analoge waarden
|
||||
sensorLdrValue = analogRead(sensorldr); // LDR
|
||||
sensorLdrValue = analogRead(sensorLdr); // LDR
|
||||
potSwitchValue = analogRead(potSwitch); // De potmeter voor het schakelpunt
|
||||
potThresholdValue = analogRead(potThreshold); // De potmeter voor de hysteresis
|
||||
potDimValue = analogRead(potDim); // De potmeter voor het dim-niveau
|
||||
|
||||
// In geval van abrupte wijziging in LDR waarde dit opvangen door niet meer als 1 waarde afwijken van vorige meting
|
||||
if (sensorLdrValue > currentSensorLdrValue){
|
||||
currentSensorLdrValue++;
|
||||
sensorLdrValue = currentSensorLdrValue;
|
||||
if (sensorLdrValue > currentsensorLdrValue){
|
||||
currentsensorLdrValue++;
|
||||
sensorLdrValue = currentsensorLdrValue;
|
||||
}
|
||||
else if (sensorLdrValue < currentSensorLdrValue){
|
||||
currentSensorLdrValue--;
|
||||
sensorLdrValue = currentSensorLdrValue;
|
||||
else if (sensorLdrValue < currentsensorLdrValue){
|
||||
currentsensorLdrValue--;
|
||||
sensorLdrValue = currentsensorLdrValue;
|
||||
}
|
||||
|
||||
// Huidige LDR-waarde opslaan voor de volgende ronde.
|
||||
currentSensorLdrValue = sensorLdrValue;
|
||||
currentsensorLdrValue = sensorLdrValue;
|
||||
|
||||
// Berekenen van de hysteresis en de waarde niet onder/boven de LDR-waarde uit laten komen.
|
||||
// Berekenen van de hysteresis en de waarde niet onder/boven de min/max LDR-waarde uit laten komen.
|
||||
switchValueHigh = potSwitchValue+(potThresholdValue/2);
|
||||
if (switchValueHigh > 1023) {
|
||||
switchValueHigh = 1023;
|
||||
if (switchValueHigh > 1022) { // Door 1022 te gebruiken kán er nog geschakeld worden. Bij 1023 valt de LDR bij max altijd in de hysteresis.
|
||||
switchValueHigh = 1022;
|
||||
}
|
||||
switchValueLow = potSwitchValue-(potThresholdValue/2);
|
||||
if (switchValueLow < 0) {
|
||||
switchValueLow = 0;
|
||||
if (switchValueLow < 1) { // Door 1 te gebruiken kán er nog geschakeld worden. Bij 0 valt de LDR bij min altijd in de hysteresis.
|
||||
switchValueLow = 1;
|
||||
}
|
||||
|
||||
// Dim-niveau volgens potmeter omzetten in waarden voor de KAKU-dimmer
|
||||
dimLevel = map(potDimValue, 0, 1023, 0, 15);
|
||||
dimLevel = map(potDimValue, 0, 1023, 0, 15); // 0 t/m 1023 omzetten naar 0 t/m 15.
|
||||
// Dim-niveau volgens potmeter omzetten in procenten voor weergave op het scherm
|
||||
dimLevelPercent = map(potDimValue, 0, 1023, 0, 100);
|
||||
dimLevelPercent = map(potDimValue, 0, 1023, 0, 100); // 0 t/m 1023 omzetten naar 0 t/m 100.
|
||||
|
||||
// Aanschakelen KAKU-dimmer als deze (volgens het programma) uit zou zijn mits aan de voorwaarden wordt voldaan.
|
||||
if(sensorLdrValue <= switchValueLow && currentDimLevel != dimLevel){
|
||||
digitalWrite(ledPin, HIGH);
|
||||
//transmitter.sendUnit(10, true);
|
||||
// Controleren of de huidige staat uit is. Zo ja, eerst een signaal versturen dat de unit aan moet.
|
||||
// Dit is bij Dimmers niet nodig maar als er zich een schakelaar op dit kanaal bevindt dan wordt deze ook geschakeld.
|
||||
if(currentState == 0) {
|
||||
transmitter.sendUnit(kakuUnit, true);
|
||||
}
|
||||
transmitter.sendDim(kakuUnit, dimLevel);
|
||||
currentDimLevel = dimLevel;
|
||||
currentState = 1;
|
||||
@@ -223,7 +252,7 @@ void loop() {
|
||||
display.drawBitmap(97, 0, bulb32_off_bmp, 32, 32, 1);
|
||||
}
|
||||
|
||||
// Lijnen tekenen voor visuele weergaven (op het scherm) van de gegevens
|
||||
// Lijnen tekenen voor visuele weergave (op het scherm) van de gegevens
|
||||
display.drawLine(0, 40, 127, 40, WHITE);
|
||||
display.drawLine(0, 52, 127, 52, WHITE);
|
||||
display.drawLine(0, 63, 127, 63, WHITE);
|
||||
@@ -240,3 +269,6 @@ void loop() {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user