Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question/Feature: Get current brightness #117

Open
arnolddej opened this issue Jul 19, 2023 · 11 comments
Open

Question/Feature: Get current brightness #117

arnolddej opened this issue Jul 19, 2023 · 11 comments

Comments

@arnolddej
Copy link

arnolddej commented Jul 19, 2023

Currently building a cabinet light using this library. Absolutely fantastic.
But I have one question. Is it possible to get the current brightness level.

It's not a first world problem, but whenever the doors of the cabinet opens/closes too fast it start at the max or min brightness level while its for example only half way. I'm using only FadeOn and FadeOff functions btw. When I could get the current brightness this can be fixed using the Fade function.

It is basically a follow up question on #66

@jandelgado
Copy link
Owner

jandelgado commented Jul 29, 2023

The "current" brightness level is a function of time, and calculated on-demand. JLed does not store the lastly written level, since this would require an additional byte in the internal state, which I want to keep as small as possible. I'll check if it's possible to return the current level with the Update method, then the client can decide to use/store the value.

@jandelgado
Copy link
Owner

@arnolddej, On the return_current_level_from_update branch I added experimental support for the Update() method returning also the brightness level written, while keeping compatibility with old code. Have a look at the new UpdateResult class. Use it as follows:

auto result = led.Update();    // returns now an `UpdateResult` object that can be cast to a `bool`

// signals that a new value was written out to the LED
if (result.WasChanged()) {
    auto level = result.Value();
    // do something with the level ....
}

@arnolddej
Copy link
Author

Thanks! I will try it asap.

@arnolddej
Copy link
Author

@jandelgado I've tested it.

It seems like the value not always correspond to the actual brightness whenever you interrupt the running Fade() command with another Fade() command. Also whenever you interrupt the running cmd it sometimes will start at the minimum/maximum brightness level while its current value is only half for example.

Is it even possible to call Fade() with another Fade() on the same object while the first cmd isn't finished yet.

My current turn on/off code:

void turn_on() {
if (ledstrip1.IsRunning()) {
   ledstrip1.Stop();
}
ledstrip1.Fade(current_value_ledstrip1, 255, DURATION);
}

void turn_off() {
if (ledstrip1.IsRunning()) {
   ledstrip1.Stop();
}
ledstrip1.Fade(current_value_ledstrip1, 0, DURATION);
}

@aGGreSSiv
Copy link

Hello. I have the same problem. I follow your correspondence silently. :)

@jandelgado
Copy link
Owner

@arnolddej
Could you please post a complete sketch. Especially the part where current_value_ledstrip1 is obtained is of interest here

@jandelgado
Copy link
Owner

@aGGreSSiv please open another issue with your question and don't post code with secrets!

@arnolddej
Copy link
Author

@arnolddej
Could you please post a complete sketch. Especially the part where current_value_ledstrip1 is obtained is of interest here

I am currently on holiday for a week. Will share the code when I'm back. Basically, I assign a global uint8_t variable like your example. I then use this variable in the Fade() function.

@jandelgado
Copy link
Owner

No problem - me too :-) Anyway, I think i found the problem in the meantime ...

Repository owner deleted a comment from aGGreSSiv Aug 7, 2023
@jandelgado
Copy link
Owner

@arnolddej I did a few changes, please test again.

@arnolddej
Copy link
Author

@jandelgado Unfortunately I already had to build in the lighting. Will test the circuit on a breadboard soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants