This commit is contained in:
2014-11-12 00:19:19 +01:00
parent a9ddefa508
commit 340fca762c
4 changed files with 27 additions and 21 deletions
+27 -21
View File
@@ -2,13 +2,16 @@
* LDR-schakelaar berging
* Author: Michel Bats
* Website: www.batssoft.nl
* Revision: 20141202
* Version: 1.2.0
* Revision: 20141211
*
* Used libraries:
* Adafruit_GFX
* Adafruit_SSD1306
* NewRemoteTransmitter
* NewRemoteSwitch library v1.0.0 (20121229) for Arduino 1.0
* Adafruit_SSD1306\Adafruit_SSD1306 by adafruit
* https://github.com/adafruit/Adafruit_SSD1306
* Adafruit-GFX-Library\Adafruit_GFX by adafruit
* https://github.com/adafruit/Adafruit-GFX-Library
* NewRemoteSwitch\NewRemoteTransmitter by fuzzillogic
* https://bitbucket.org/fuzzillogic/433mhzforarduino/wiki/Home
*************************************/
// Bibliotheken
@@ -19,7 +22,7 @@
#include <Adafruit_SSD1306.h>
// 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 potSwitch A1 // Input van potmeter voor schakelpunt
#define potThreshold A2 // Input van potmeter voor hysteresis
@@ -38,6 +41,7 @@ Adafruit_SSD1306 display(OLED_RESET);
// Aanmaken benodigde variabelen
int sensorLdrValue;
int currentSensorLdrValue;
int potSwitchValue;
int potThresholdValue;
int potDimValue;
@@ -50,9 +54,6 @@ int dimLevel;
int dimLevelPercent;
int currentState;
int currentDimLevel = -1;
int currentsensorLdrValue;
int oledConnected;
byte iicError;
// 32x32 icoon voor licht aan.
#define BULB32_ON_HEIGHT 32
@@ -136,6 +137,9 @@ void setup() {
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR,HEX);
display.clearDisplay();
// Start debug-led
pinMode(ledPin, OUTPUT);
// Opstartscherm
// Lamp laten knipperen op het opstartscherm en op de daadwerkelijke schakelaar/dimmer.
display.setTextSize(1);
@@ -143,16 +147,19 @@ void setup() {
display.setCursor(0,0);
display.println("VERLICHTING");
display.println("");
display.println("v1.2.0 (beta)");
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)");
digitalWrite(ledPin, LOW);
transmitter.sendUnit(kakuUnit, false);
currentState = 0;
display.drawBitmap(97, 0, bulb32_off_bmp, 32, 32, 1);
display.display();
delay(1000);
digitalWrite(ledPin, HIGH);
transmitter.sendUnit(kakuUnit, true);
currentState = 1;
display.drawBitmap(97, 0, bulb32_on_bmp, 32, 32, 1);
@@ -161,11 +168,8 @@ void setup() {
display.display();
display.clearDisplay();
// Start debug-led
pinMode(ledPin, OUTPUT);
// initieel ophalen van LDR-waarde
currentsensorLdrValue = analogRead(sensorLdr);
currentSensorLdrValue = analogRead(sensorLdr);
}
void loop() {
@@ -176,17 +180,17 @@ void loop() {
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 min/max LDR-waarde uit laten komen.
switchValueHigh = potSwitchValue+(potThresholdValue/2);
@@ -261,7 +265,8 @@ void loop() {
display.display();
display.clearDisplay();
//delay(long(1000)*long(60));
// 1000ms (1sec) wachten voor het starten van de volgende ronde.
// Wordt vooral gebruikt om het abrupt wijzigen van de LDR tegen te gaan.
delay(1000);
}
@@ -271,4 +276,5 @@ void loop() {
Binary file not shown.
Binary file not shown.
Binary file not shown.