Fix frontlight

This commit is contained in:
Djuri Baars 2024-06-07 15:18:34 +02:00
parent 82e80f66e2
commit 32e40e2cb7
3 changed files with 20 additions and 18 deletions

View file

@ -3,7 +3,7 @@ dependencies:
component_hash: null component_hash: null
source: source:
type: idf type: idf
version: 4.4.6 version: 4.4.7
manifest_hash: c799a313787fb26f19e5716786e23d7a9f10f1cd0bbd7bc379c518bb5e67be3e manifest_hash: 615d994fdba8799111cf7825a85adb23ca6a2ae02b2335b53fde1188ff862f23
target: esp32s3 target: esp32s3
version: 1.0.0 version: 1.0.0

View file

@ -18,9 +18,9 @@ uint lastTimeSync;
void setup() void setup()
{ {
setupPreferences();
setupHardware(); setupHardware();
setupPreferences();
setupDisplays(); setupDisplays();
if (preferences.getBool("ledTestOnPower", true)) if (preferences.getBool("ledTestOnPower", true))
{ {
@ -701,26 +701,26 @@ uint getLastTimeSync()
#ifdef HAS_FRONTLIGHT #ifdef HAS_FRONTLIGHT
void setupFrontlight() void setupFrontlight()
{ {
if (!flArray.begin(PCA9685_MODE1_AUTOINCR, PCA9685_MODE2_INVERT)) if (!flArray.begin(PCA9685_MODE1_AUTOINCR | PCA9685_MODE1_ALLCALL, PCA9685_MODE2_TOTEMPOLE))
{ {
Serial.println(F("FL driver error")); Serial.println(F("FL driver error"));
return; return;
} }
Serial.println(F("FL driver active")); Serial.println(F("FL driver active"));
flArray.setFrequency(1000);
flArray.setOutputEnablePin(PCA_OE_PIN);
flArray.setOutputEnable(true);
delay(1000);
flArray.setOutputEnable(false);
if (!preferences.isKey("flMaxBrightness")) if (!preferences.isKey("flMaxBrightness"))
{ {
preferences.putUInt("flMaxBrightness", 4095); preferences.putUInt("flMaxBrightness", 2048);
} }
// Initialize all LEDs to off
// for (int ledPin = 0; ledPin < NUM_SCREENS; ledPin++) { if (preferences.getBool("flAlwaysOn", false)) {
// flArray.setPWM(ledPin, 0, 0); // Turn off LED Serial.println(F("FL Always on"));
// }
frontlightFadeInAll();
} else {
Serial.println(F("FL all off"));
flArray.allOFF(); flArray.allOFF();
}
} }
#endif #endif

View file

@ -338,11 +338,11 @@ void ledTheaterChaseRainbow(int wait) {
Adafruit_NeoPixel getPixels() { return pixels; } Adafruit_NeoPixel getPixels() { return pixels; }
#ifdef HAS_FRONTLIGHT #ifdef HAS_FRONTLIGHT
int flDelayTime = 10; int flDelayTime = 5;
void frontlightFadeInAll() { void frontlightFadeInAll() {
for (int dutyCycle = 0; dutyCycle <= preferences.getUInt("flMaxBrightness"); dutyCycle += 5) { for (int dutyCycle = 0; dutyCycle <= preferences.getUInt("flMaxBrightness"); dutyCycle += 5) {
for (int ledPin = 0; ledPin < NUM_SCREENS; ledPin++) { for (int ledPin = 0; ledPin <= NUM_SCREENS; ledPin++) {
flArray.setPWM(ledPin, 0, dutyCycle); flArray.setPWM(ledPin, 0, dutyCycle);
} }
vTaskDelay(pdMS_TO_TICKS(flDelayTime)); vTaskDelay(pdMS_TO_TICKS(flDelayTime));
@ -351,11 +351,13 @@ void frontlightFadeInAll() {
void frontlightFadeOutAll() { void frontlightFadeOutAll() {
for (int dutyCycle = preferences.getUInt("flMaxBrightness"); dutyCycle >= 0; dutyCycle -= 5) { for (int dutyCycle = preferences.getUInt("flMaxBrightness"); dutyCycle >= 0; dutyCycle -= 5) {
for (int ledPin = 0; ledPin < NUM_SCREENS; ledPin++) { for (int ledPin = 0; ledPin <= NUM_SCREENS; ledPin++) {
flArray.setPWM(ledPin, 0, dutyCycle); flArray.setPWM(ledPin, 0, dutyCycle);
} }
vTaskDelay(pdMS_TO_TICKS(flDelayTime)); vTaskDelay(pdMS_TO_TICKS(flDelayTime));
} }
flArray.allOFF();
} }
void frontlightFadeIn(uint num) { void frontlightFadeIn(uint num) {