Sunrise - Sunset

algemene C code
Berichten: 12
Geregistreerd: 12 Feb 2020, 21:56

Sunrise - Sunset

Berichtdoor HenkieVer » 12 Feb 2020, 22:47

Hallo, ik ben nieuw op dit forum en ben 69 jaar en ben al een tijdje bezig on de arduino neopixel te ontdekken.

Ik heb ook meteen een vraag.
Ik ben al een tijdje bezig met een Sunrise - Sunset programma.
Ik heb van het internet een programma afgehaald dat langzaam van rood naar ( dit is in te stellen) wit gaat.
Dit werkt prima. ik heb met wat aanpassingen het voor elkaar gekregen dat deze ook van wit langzaam naar rood gaat.
Dit heb in twee aparte programma's en werken allebei prima. Dus één sunrise.ino en één sunset.ino
Nu wil ik dit in één programma maken, maar dat krijg ik niet voor elkaar.
De ene keer begint hij rood en stopt bij wit of van wit naar rood, enz, enz.
De bedoeling is dat deze langzaam van rood naar wit gaat en dan een tijdje wit blijft en dan weer langzaam van wit naar rood.
Is er iemand die mij uit de brand kan helpen? ik kom er niet uit.
Ik heb mijn laatste test code bijgevoegd.

Groet Rob

#include "FastLED.h"
// How many leds in your strip?
#define NUM_LEDS 40

// For led chips like Neopixels, which have a data line, ground, and power, you just
// need to define DATA_PIN. For led chipsets that are SPI based (four wires - data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN

#define DATA_PIN 6
#define CLOCK_PIN 12

DEFINE_GRADIENT_PALETTE( sun_rise ) {
0, 0, 0, 0, //black
127, 255, 0, 0, //red
224, 255, 255, 0, //bright yellow
255, 255, 255, 255
}; //full white

DEFINE_GRADIENT_PALETTE( sun_set ) {
255, 255, 255, 255,
224, 255, 255, 0,
128, 255, 0, 0,
0, 0, 0, 0
};

// Define the array of leds

CRGB leds[NUM_LEDS];

void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
// FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
}

void loop() {
//SUNRISE
static const uint8_t sunriseLength = 30; // total sunrise length, in minutes
//7 seconds x 256 gradient steps = 1,792 seconds = ~30 minutes
static const uint8_t interval = (sunriseLength * 10) / 256; //De duur van het in faden
static uint8_t heatIndex = 0; // start out at 0 // current gradient palette color index
CRGB color = ColorFromPalette(HeatColors_p, heatIndex );
fill_solid(leds, NUM_LEDS, color); // fill the entire strip with the current color

EVERY_N_SECONDS(interval) {

if (heatIndex < 240) {

heatIndex++;
}
FastLED.show();
}


//SUNSET
static const uint8_t sunsetLength = 30; // total sunset length, in minutes
//7 seconds x 256 gradient steps = 1,792 seconds = ~30 minutes
static const uint8_t interval1 = (sunsetLength * 10) / 256; //De duur van het in faden
static uint8_t heatIndex1 = 200; // start out at 0 // current gradient palette color index
CRGB color1 = ColorFromPalette(HeatColors_p, heatIndex1 );
fill_solid(leds, NUM_LEDS, color1); // fill the entire strip with the current color

EVERY_N_SECONDS(interval1) {

if (heatIndex1 > 0) {

heatIndex1--;
}
FastLED.show();
}
}

Advertisement

Berichten: 45
Geregistreerd: 08 Jan 2020, 17:23

Re: Sunrise - Sunset

Berichtdoor RonalT » 13 Feb 2020, 00:41

Je schreef dat je 2 programma's heb. De ene betreft sunset en de andere sunrise.
Maar al ik in het vorige bericht kijk is me niet duidelijk waar het eerste programma stopt en waar het tweede begint.
Om het duidelijker te laten zien kan je beter gebruik maken van de CODE knop. Die zie je boven het vlak waar je in schrijft.

Code: Alles selecteren
[code]hier je sketch plakken[/code]


en dat doe je ook voor de tweede.

Berichten: 12
Geregistreerd: 12 Feb 2020, 21:56

Re: Sunrise - Sunset

Berichtdoor HenkieVer » 13 Feb 2020, 09:45

Bedankt voor je reactie

Ik heb echt geen idee wat je bedoeld.
Kan je dit uitleggen voor mij?

Groet Rob

Gebruikers-avatar
Berichten: 241
Geregistreerd: 22 Jan 2013, 16:40

Re: Sunrise - Sunset

Berichtdoor zuid » 13 Feb 2020, 09:52

Ik heb nog nooit met iets dergelijks gewerkt maar....

Ik zie in je programma nergens de koppeling tussen DEFINE_GRADIENT_PALETTE( sun_rise ) en het stukje waar Sunrise is geprogrammeerd.
Idem bij sun_set

Is een koppeling als volgt niet de oplossing?
Code: Alles selecteren
DEFINE_GRADIENT_PALETTE( sun ) {
0, 0, 0, 0, //black
127, 255, 0, 0, //red
224, 255, 255, 0, //bright yellow
255, 255, 255, 255 //full white
255, 255, 255, 255,
224, 255, 255, 0,
128, 255, 0, 0,
0, 0, 0, 0
};


m.v.g. Nico

Gebruikers-avatar
Berichten: 241
Geregistreerd: 22 Jan 2013, 16:40

Re: Sunrise - Sunset

Berichtdoor zuid » 13 Feb 2020, 10:50

Heb je dit https://github.com/FastLED/FastLED/wiki/Gradient-color-palettes al gelezen?

Kijk vooral naar: CRGBPalette16 myPal = heatmap_gp;

en leds[i] = ColorFromPalette( myPal, heatindex); // normal palette access

Er is nog meer op internet te vinden over FastLED

m.v.g.
Nico

Berichten: 12
Geregistreerd: 12 Feb 2020, 21:56

Re: Sunrise - Sunset

Berichtdoor HenkieVer » 13 Feb 2020, 14:36

Nico,
Ik heb DEFINE_GRADIENT_PALETTE er in gezet, maar dan krijg ik de volgende foutmelding :

exit status 1
expected '}' before numeric constant

Ik heb in het programma met alleen sunrise de DEFINE_GRADIENT_PALETTE helemaal weggelaten en het gaat dan netjes van rood naar wit.
Ik zal gaan kijken naar je andere tips.
Mocht je nog wat te binnen schieten graag.

m.v.g.
Rob

Berichten: 12
Geregistreerd: 12 Feb 2020, 21:56

Re: Sunrise - Sunset

Berichtdoor HenkieVer » 13 Feb 2020, 14:48

Nico,

Nog even te verduidelijking.
De sunrise.ino en sunset.ino werken elk apart prima. De één gaat mooi van rood naar wit en de ander van wit naar rood.
Ik wil ze ook wel apart uploaden als je dat wilt, dan kan je zien dat ze prima werken.
Ik wil ze alleen allebei in één .ino file hebben, zodat hij van rood naar wit gaat en dan weer terug van wit naar rood.

M.v.g.
Rob

Gebruikers-avatar
Berichten: 241
Geregistreerd: 22 Jan 2013, 16:40

Re: Sunrise - Sunset

Berichtdoor zuid » 13 Feb 2020, 16:02

Rob, ik begreep dat beide apart werken.

De compiler fout melding geeft aan dat "iets" in de code onjuist is.
Dat kan een ; vergeten zijn of een ) of iets dergelijks.

Wat bedoel je met DEFINE_GRADIENT_PALETTE er in gezet?

Er staan er al twee, ik denk dat een van beide of wellicht beide NIET gebruikt worden door het programma.
In de link staat hoe, denk ik, het wel zou moeten (kunnen) werken.
PS achteraf denk ik dat mijn combinatie van de twee versies niet werkt. De eerste kolom van de codes zou aangepast moeten worden.

De code: ColorFromPalette( myPal, heatindex); geeft een verwijzing naar het "eigen" palet myPal.

m.v.g.
Nico

Berichten: 12
Geregistreerd: 12 Feb 2020, 21:56

Re: Sunrise - Sunset

Berichtdoor HenkieVer » 13 Feb 2020, 17:31

Nico,

Jouw combinatie werkt inderdaad niet, maar dat zei je al. Die geeft dan de foutmelding.
Ik had DEFINE_GRADIENT_PALETTE niet in gezet, maar ERUIT gelaten en evengoed werken ze.
Bedankt in ieder geval voor je hulp, mocht je nog een idee hebben, dan graag.
Ik ga maar weer wat dingen proberen.

M.v.g.
Rob

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Sunrise - Sunset

Berichtdoor shooter » 14 Feb 2020, 14:31

je define gradient palette wordt overschreven door elkaar, dus maak er 1 palet van
dan staat er in de loop nog teveel zelfde soort definities.
en ik mis every N-seconds functie
Nu wordt zowel rise als set tegelijk uitgevoerd.
gewoon herschrijven en proberen, aan het eind lukt het wel.
paul deelen
shooter@home.nl

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 7 gasten