v1.1.3
This commit is contained in:
1 parent
de33982d6e
commit
a9ddefa508
3 files changed
+55
-23
No files matched your search
Binary file not shown.
+55
-23
@@ -2,7 +2,7 @@
|
|||||||
* LDR-schakelaar berging
|
* LDR-schakelaar berging
|
||||||
* Author: Michel Bats
|
* Author: Michel Bats
|
||||||
* Website: www.batssoft.nl
|
* Website: www.batssoft.nl
|
||||||
* Revision: 20141118
|
* Revision: 20141202
|
||||||
*
|
*
|
||||||
* Used libraries:
|
* Used libraries:
|
||||||
* Adafruit_GFX
|
* Adafruit_GFX
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
// Bepalingen
|
// Bepalingen
|
||||||
#define ledPin 13 // Debug LED (13 is standaard on-board)
|
#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 potSwitch A1 // Input van potmeter voor schakelpunt
|
||||||
#define potThreshold A2 // Input van potmeter voor hysteresis
|
#define potThreshold A2 // Input van potmeter voor hysteresis
|
||||||
#define potDim A3 // Input van potmeter voor dim-niveau
|
#define potDim A3 // Input van potmeter voor dim-niveau
|
||||||
@@ -48,9 +48,9 @@ int switchValueLowDispPos;
|
|||||||
int sensorLdrValueDispPos;
|
int sensorLdrValueDispPos;
|
||||||
int dimLevel;
|
int dimLevel;
|
||||||
int dimLevelPercent;
|
int dimLevelPercent;
|
||||||
int currentState = -1;
|
int currentState;
|
||||||
int currentDimLevel = -1;
|
int currentDimLevel = -1;
|
||||||
int currentSensorLdrValue;
|
int currentsensorLdrValue;
|
||||||
int oledConnected;
|
int oledConnected;
|
||||||
byte iicError;
|
byte iicError;
|
||||||
|
|
||||||
@@ -133,55 +133,84 @@ static const unsigned char PROGMEM bulb32_off_bmp[] =
|
|||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
// Start Display
|
// 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();
|
display.clearDisplay();
|
||||||
|
|
||||||
// Start debug-led
|
// Start debug-led
|
||||||
pinMode(ledPin, OUTPUT);
|
pinMode(ledPin, OUTPUT);
|
||||||
|
|
||||||
// initieel ophalen van LDR-waarde
|
// initieel ophalen van LDR-waarde
|
||||||
currentSensorLdrValue = analogRead(sensorldr);
|
currentsensorLdrValue = analogRead(sensorLdr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
// Ophalen analoge waarden
|
// Ophalen analoge waarden
|
||||||
sensorLdrValue = analogRead(sensorldr); // LDR
|
sensorLdrValue = analogRead(sensorLdr); // LDR
|
||||||
potSwitchValue = analogRead(potSwitch); // De potmeter voor het schakelpunt
|
potSwitchValue = analogRead(potSwitch); // De potmeter voor het schakelpunt
|
||||||
potThresholdValue = analogRead(potThreshold); // De potmeter voor de hysteresis
|
potThresholdValue = analogRead(potThreshold); // De potmeter voor de hysteresis
|
||||||
potDimValue = analogRead(potDim); // De potmeter voor het dim-niveau
|
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
|
// In geval van abrupte wijziging in LDR waarde dit opvangen door niet meer als 1 waarde afwijken van vorige meting
|
||||||
if (sensorLdrValue > currentSensorLdrValue){
|
if (sensorLdrValue > currentsensorLdrValue){
|
||||||
currentSensorLdrValue++;
|
currentsensorLdrValue++;
|
||||||
sensorLdrValue = currentSensorLdrValue;
|
sensorLdrValue = currentsensorLdrValue;
|
||||||
}
|
}
|
||||||
else if (sensorLdrValue < currentSensorLdrValue){
|
else if (sensorLdrValue < currentsensorLdrValue){
|
||||||
currentSensorLdrValue--;
|
currentsensorLdrValue--;
|
||||||
sensorLdrValue = currentSensorLdrValue;
|
sensorLdrValue = currentsensorLdrValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Huidige LDR-waarde opslaan voor de volgende ronde.
|
// 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);
|
switchValueHigh = potSwitchValue+(potThresholdValue/2);
|
||||||
if (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 = 1023;
|
switchValueHigh = 1022;
|
||||||
}
|
}
|
||||||
switchValueLow = potSwitchValue-(potThresholdValue/2);
|
switchValueLow = potSwitchValue-(potThresholdValue/2);
|
||||||
if (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 = 0;
|
switchValueLow = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dim-niveau volgens potmeter omzetten in waarden voor de KAKU-dimmer
|
// 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
|
// 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.
|
// Aanschakelen KAKU-dimmer als deze (volgens het programma) uit zou zijn mits aan de voorwaarden wordt voldaan.
|
||||||
if(sensorLdrValue <= switchValueLow && currentDimLevel != dimLevel){
|
if(sensorLdrValue <= switchValueLow && currentDimLevel != dimLevel){
|
||||||
digitalWrite(ledPin, HIGH);
|
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);
|
transmitter.sendDim(kakuUnit, dimLevel);
|
||||||
currentDimLevel = dimLevel;
|
currentDimLevel = dimLevel;
|
||||||
currentState = 1;
|
currentState = 1;
|
||||||
@@ -223,7 +252,7 @@ void loop() {
|
|||||||
display.drawBitmap(97, 0, bulb32_off_bmp, 32, 32, 1);
|
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, 40, 127, 40, WHITE);
|
||||||
display.drawLine(0, 52, 127, 52, WHITE);
|
display.drawLine(0, 52, 127, 52, WHITE);
|
||||||
display.drawLine(0, 63, 127, 63, WHITE);
|
display.drawLine(0, 63, 127, 63, WHITE);
|
||||||
@@ -239,4 +268,7 @@ void loop() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
Reference in new issue
Block a user