Christmas with 100 millis().
4 berichten
• Pagina 1 van 1
Christmas with 100 millis().
Nee, dit is geen kerstverhaal voor bij de boom. Dit is voor iedereen die stoeit met millis() of met arrays.
Er kunnen meerdere software timers met millis() gemaakt worden, daarom heb ik 100 verschillende software timers gemaakt.
De interval kan steeds anders gezet worden, daarom gebruik ik random() voor de volgende interval. Voor iedere software timer een andere interval.
En het is december, daarom maak ik er een soort zacht knipperend lampje van alsof het een kaars of een ster is.
Kun je nagaan wat er gebeurt ?
Er lopen 100 software timers die een interval hebben tussen 1 en 100ms. Er is dus heel vaak een software timer aktief, die de led aan of uit zet. De led brandt dus eigenlijk voor 50%. Doordat de random() er onregelmatigheden in brengt is de led soms net iets langer aan of uit, en dat is een beetje te zien.
Er kunnen meerdere software timers met millis() gemaakt worden, daarom heb ik 100 verschillende software timers gemaakt.
De interval kan steeds anders gezet worden, daarom gebruik ik random() voor de volgende interval. Voor iedere software timer een andere interval.
En het is december, daarom maak ik er een soort zacht knipperend lampje van alsof het een kaars of een ster is.
- Code: Alles selecteren
#define NUM_TIMERS 100
#define MAX_MS 100
unsigned long previousMillis[NUM_TIMERS];
int interval[NUM_TIMERS];
int state;
void setup()
{
pinMode( LED_BUILTIN, OUTPUT);
for( int i=0; i<NUM_TIMERS; i++)
interval[i] = random( 1, MAX_MS);
}
void loop()
{
unsigned long currentMillis = millis();
for( int i=0; i<NUM_TIMERS; i++)
{
if( currentMillis - previousMillis[i] >= interval[i])
{
previousMillis[i] = currentMillis;
interval[i] = random( 1, MAX_MS);
// Toggle led
state = (state == HIGH ? LOW : HIGH);
digitalWrite( LED_BUILTIN, state);
}
}
}
Kun je nagaan wat er gebeurt ?
Er lopen 100 software timers die een interval hebben tussen 1 en 100ms. Er is dus heel vaak een software timer aktief, die de led aan of uit zet. De led brandt dus eigenlijk voor 50%. Doordat de random() er onregelmatigheden in brengt is de led soms net iets langer aan of uit, en dat is een beetje te zien.
Advertisement
Re: Christmas with 100 millis().
Hallo,
Kan iemand mij vertellen wat het stukje "HIGH ? LOW : HIGH" in de regel "state = (state == HIGH ? LOW : HIGH);" betekent?
Of in ieder geval waar ik uitleg over ? en : kan vinden.
In de arduino Reference of Cheat sheet staat of zie ik het niet.
Groet, Jos.
Kan iemand mij vertellen wat het stukje "HIGH ? LOW : HIGH" in de regel "state = (state == HIGH ? LOW : HIGH);" betekent?
Of in ieder geval waar ik uitleg over ? en : kan vinden.
In de arduino Reference of Cheat sheet staat of zie ik het niet.
Groet, Jos.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Christmas with 100 millis().
Dit is een andere manier van if then else te schrijven omdat het resultaat gelijk teruggegeven wordt.
In feite staat hier:
cpp code
Hier flipt ie dus state van HIGH->LOW en LOW->HIGH
ZIe verder : https://en.wikipedia.org/wiki/%3F:#C
Zie verder
In feite staat hier:
cpp code
if (state == HIGH) {
state = LOW;
} else {
state = HIGH;
}
Hier flipt ie dus state van HIGH->LOW en LOW->HIGH
ZIe verder : https://en.wikipedia.org/wiki/%3F:#C
Zie verder
4 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten