brightness adaption
This commit is contained in:
parent
986da87bb7
commit
4ae62c3cda
@ -25,21 +25,7 @@
|
||||
|
||||
|
||||
#define MOD(a,b) ((((a)%(b))+(b))%(b))
|
||||
/* Model I
|
||||
LDR (GL5516 ) is connected to GPIO 34 (Analog ADC1_CH6, 12bit resolution default
|
||||
Light Resistance (at 10 Lux): 5-10 Kohm
|
||||
Dark Resistance: 0.5 Mohm
|
||||
over a 56k voltage divider . Dark (0.5MOhm) , 10Lux (5-10kOhm)
|
||||
-----------------
|
||||
ESP8266 24LED
|
||||
5V--10k-+-LDR--GND -ADC
|
||||
- 150k--220k-+-100k--GND
|
||||
-----------------
|
||||
ESP8266 60LED
|
||||
5V--??k-+-LDR--??k-GND
|
||||
- 39k--220k-+-100k--GND
|
||||
-ADC
|
||||
*/
|
||||
|
||||
#ifdef ESP8266
|
||||
#define LDR_PIN A0
|
||||
#define IOTWEBCONF_DEBUG_DISABLED
|
||||
@ -71,11 +57,12 @@ void bootAnimCallback();
|
||||
void clockTickCallback();
|
||||
void ledRefreshCallback();
|
||||
void brightnessAdjustmentCallback();
|
||||
void brightnessFadingCallback();
|
||||
void iotWebConfLoopCallback();
|
||||
|
||||
#ifdef RGBW
|
||||
#define MINIMAL_BRIGHTNESS 5
|
||||
#define LDR_SCALE 16
|
||||
#define LDR_SCALE 4
|
||||
#define colorSaturation 255
|
||||
#ifdef ESP8266
|
||||
//NeoPixelBrightnessBus<NeoGrbwFeature, Neo800KbpsMethod> strip(NUM_LEDS);//RDX0 GPIO3
|
||||
@ -193,11 +180,12 @@ volatile int currentMin = 1;
|
||||
volatile int currentHour = 2;
|
||||
volatile bool NTPreachable = false;
|
||||
|
||||
volatile int MAX_BRIGHTNESS = 200;
|
||||
#ifdef LDR_PIN
|
||||
// variable for storing the potentiometer value
|
||||
volatile unsigned int ldrValue = 0;
|
||||
volatile unsigned int targetBrightness = MAX_BRIGHTNESS;
|
||||
#endif
|
||||
volatile int MAX_BRIGHTNESS = 200;
|
||||
|
||||
// WebPortal
|
||||
const char thingName[] = "NTP-Clock-RGBLED";
|
||||
@ -329,7 +317,8 @@ Task bootAnim(200, TASK_FOREVER, &bootAnimCallback);
|
||||
Task clockTick(1000, TASK_FOREVER, &clockTickCallback);
|
||||
Task ledRefresh(200, TASK_FOREVER, &ledRefreshCallback);
|
||||
#ifdef LDR_PIN
|
||||
Task brightness(10000, TASK_FOREVER, &brightnessAdjustmentCallback);
|
||||
Task brightnessAdjustment(10000, TASK_FOREVER, &brightnessAdjustmentCallback);
|
||||
Task brightnessFading(333, TASK_FOREVER, &brightnessFadingCallback);
|
||||
#endif
|
||||
Task iotwebconfLoop(1000, TASK_FOREVER, &iotWebConfLoopCallback);
|
||||
Scheduler runner;
|
||||
@ -535,12 +524,12 @@ void syncNTP() {
|
||||
bootAnim.disable();
|
||||
iotWebConfConfigSaved();
|
||||
ledRefresh.enable();
|
||||
//clockTick.enable();
|
||||
#ifdef LDR_PIN
|
||||
brightness.enable();
|
||||
brightnessFading.enable();
|
||||
#endif
|
||||
}
|
||||
clockTick.enable(); //enable to check for ntp every 60 seconds
|
||||
brightnessAdjustment.enable();
|
||||
}
|
||||
}
|
||||
|
||||
@ -552,6 +541,8 @@ void setup() {
|
||||
|
||||
Serial.begin(SERIAL_BAUD);
|
||||
Serial.flush();
|
||||
delay(100);
|
||||
Serial.println();
|
||||
Serial.print("\n\n\nCPU Frequency is: ");
|
||||
#ifdef ESP8266
|
||||
Serial.print(ESP.getCpuFreqMHz());
|
||||
@ -559,8 +550,12 @@ void setup() {
|
||||
Serial.print("Chip ID: ");
|
||||
Serial.println(ESP.getFlashChipId());
|
||||
#elif defined(ESP32)
|
||||
setCpuFrequencyMhz(160);
|
||||
Serial.print(getCpuFrequencyMhz()); //Get CPU clock
|
||||
Serial.println(" Mhz");
|
||||
uint32_t Freq = getXtalFrequencyMhz();
|
||||
Serial.print("XTAL Freq = ");
|
||||
Serial.print(Freq);
|
||||
uint32_t chipId = 0;
|
||||
for (int i = 0; i < 17; i = i + 8) {
|
||||
chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
|
||||
@ -588,7 +583,8 @@ void setup() {
|
||||
runner.addTask(ledRefresh);
|
||||
runner.addTask(clockTick);
|
||||
#ifdef LDR_PIN
|
||||
runner.addTask(brightness);
|
||||
runner.addTask(brightnessAdjustment);
|
||||
runner.addTask(brightnessFading);
|
||||
#endif
|
||||
runner.addTask(bootAnim);
|
||||
runner.addTask(iotwebconfLoop);
|
||||
@ -609,8 +605,9 @@ void loop()
|
||||
{
|
||||
runner.execute();
|
||||
yield();
|
||||
//iotWebConfLoopCallback();//ToDo put in a task, measure the runtime
|
||||
#ifdef ESP8266
|
||||
ESP.wdtFeed();
|
||||
#endif
|
||||
/*
|
||||
while (Serial.available())
|
||||
Serial.read();
|
||||
@ -748,21 +745,26 @@ void bootAnimCallback() {
|
||||
}
|
||||
|
||||
#ifdef LDR_PIN
|
||||
void brightnessAdjustmentCallback() { //ToDo split measurement from setting
|
||||
void brightnessAdjustmentCallback() {
|
||||
//Serial.println(ldrValue);
|
||||
//brigthness begin
|
||||
ldrValue = ldrValue / 10;
|
||||
int x;
|
||||
if (ldrValue == 0) {
|
||||
strip.SetBrightness( MAX_BRIGHTNESS );
|
||||
targetBrightness = MAX_BRIGHTNESS;
|
||||
}
|
||||
else {
|
||||
x = int(MINIMAL_BRIGHTNESS + (MAX_BRIGHTNESS - MINIMAL_BRIGHTNESS) / ((ldrValue / LDR_SCALE) + 1) );
|
||||
strip.SetBrightness(x);
|
||||
targetBrightness = int(MINIMAL_BRIGHTNESS + (MAX_BRIGHTNESS - MINIMAL_BRIGHTNESS) / ((ldrValue / LDR_SCALE) + 1) );
|
||||
}
|
||||
//Serial.println("Brightness: " + String(strip.GetBrightness()) + "(" + String(ldrValue) + ")");
|
||||
ldrValue = 0;
|
||||
}
|
||||
|
||||
void brightnessFadingCallback() {
|
||||
int currentBrightness = strip.GetBrightness();
|
||||
int diff = targetBrightness - currentBrightness;
|
||||
int rate = rint(diff / 10);
|
||||
strip.SetBrightness(currentBrightness + rate);
|
||||
strip.Show();
|
||||
//Serial.println("Brightness: " + String(currentBrightness) + " diff " + String(rate));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -65,5 +65,7 @@ Unten auf der Statusseite gibt es einen Link zur Konfigurationsseite, eine Mögl
|
||||
## ausstehende Verbesserungen
|
||||
- [ ] flüssige Helligkeitsadaptierung
|
||||
- [ ] härtes non-blocking Verhalten
|
||||
- offensichtliche delay/yield aufgelöst
|
||||
- [ ] finde WDT reset beim WiFi connect
|
||||
- Wechsel des lwip bringt eine Verbesserung
|
||||
- [ ] schnelleres Berechnen des followingHour Offset
|
||||
|
26
productionlist.md
Normal file
26
productionlist.md
Normal file
@ -0,0 +1,26 @@
|
||||
## production list
|
||||
Model I
|
||||
LDR (GL5516 ) is connected to GPIO 34 (Analog ADC1_CH6, 12bit resolution default
|
||||
Light Resistance (at 10 Lux): 5-10 Kohm
|
||||
Dark Resistance: 0.5 Mohm
|
||||
over a 56k voltage divider . Dark (0.5MOhm) , 10Lux (5-10kOhm)
|
||||
-----------------
|
||||
ESP8266 24LED
|
||||
5V--10k-+-LDR--GND -ADC
|
||||
- 150k--220k-+-100k--GND
|
||||
-----------------
|
||||
ESP8266 60LED
|
||||
5V--??k-+-LDR--??k-GND
|
||||
- 39k--220k-+-100k--GND
|
||||
-ADC
|
||||
|
||||
--------------------
|
||||
ESP32 60 LED
|
||||
Chip is ESP32-D0WDQ6 (revision 1)
|
||||
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
|
||||
Crystal is 40MHz
|
||||
MAC: 08:3a:f2:50:f0:58
|
||||
MH Live ESP32 Mini Kit aka Mini D1 ESP32
|
||||
Data IO17
|
||||
LDR IO34
|
||||
RGBW
|
Loading…
Reference in New Issue
Block a user