Onafhankelijk knipperen
9 berichten
• Pagina 1 van 1
Onafhankelijk knipperen
Hoi mensen!
Ik ben vrij nieuw met Arduino. Het enige dat me tot nu lukt is een looplicht maken tussen verschillende leds, zowel met de blink optie in het arduino programma als met blinkwithoutdelay. Waar ik alleen niet uitkom is mijn led's op verschillende tussenpozen, onafhankelijk van elkaar, te laten knipperen. Het mag dus geen looplicht zijn, maar 3 leds die op 3 verschillende tempo's knipperen..
Kan iemand me hier mee helpen?
Alvast bedankt!
Ik ben vrij nieuw met Arduino. Het enige dat me tot nu lukt is een looplicht maken tussen verschillende leds, zowel met de blink optie in het arduino programma als met blinkwithoutdelay. Waar ik alleen niet uitkom is mijn led's op verschillende tussenpozen, onafhankelijk van elkaar, te laten knipperen. Het mag dus geen looplicht zijn, maar 3 leds die op 3 verschillende tempo's knipperen..
Kan iemand me hier mee helpen?
Alvast bedankt!
Advertisement
Re: Onafhankelijk knipperen
Als de blinkwithoutdelay gebruikt zou de de blinktijd met een random functie kunnen aan en uitzetten.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Onafhankelijk knipperen
Damn..... ik heb tijd tekort. Ik heb hem al klaar: Een library om een led mooi smooth the faden. Echter als je uit en aan in een tabel zet dan is het gewoon knipperen. Mooie ervan is dat je er meerdere instances van kan maken waardoor je elke led met een eigen tempo kan laten knipperen. Heb je ff geduld? Weekje denk ik?
Re: Onafhankelijk knipperen
Damn..... ik heb tijd tekort
Zo herkenbaar...
Maar daarom is er kort door de bocht. Een alternatieve, vaak minder elegante wijze om om je doel te bereiken.
Echter: elegantie mag natuurlijk niet ten koste gaan van de robuustheid.
Ik zat even te aan de interne timer van de ATMega / Arduino. Daar kun je ook op triggeren.
Ter illustratie heb ik onderstaande sketch gemaakt.
Dit heb ik gedaan:
- ik neem de millis(), dus miliseconden.
- deze deel ik door 100, dus 10den van seconden
- ik neem de modulus 100 van bovenstaande en krijg zo
==> een getal van 0 - 99, waarbij elke stap 10 miliseconden is.
Door nu een Switch case op deze variabele modKlok te zetten, krijg ik 100 getriggerde events per 10 seconden, zonder 'extra' interrupt.
In de sketch komen 1, 10, 20, 50, 60, 70, 80, 90 overeen met respectievelijk
0,1 seconde pin 11 HIGH, rest LOW
1,0 seconde pin 12 HIGH, rest LOW
2,0 seconde pin 13 HIGH, rest LOW
5 seconden alles HIGH
6 sec...t/m 9 seconden
Mijn idee: werkbaar, indien er verder niets van het programma wordt verwacht.
Nogmaals: dit is waarschijnlijk geen goede manier van programmeren.
- Code: Alles selecteren
const int led[] = {
11,12,13};
int modKlok;
int modKlokOud;
void setup(){
for (int i = 0; i < 3; i++){
pinMode(led[i], OUTPUT);
}
}
void loop(){
unsigned long klok = millis()/100;
int modKlok = klok % 100;
if (modKlok != modKlokOud){
modKlokOud = modKlok;
switch (modKlok){
case 1:
digitalWrite(led[0], HIGH);
digitalWrite(led[1], LOW);
digitalWrite(led[2], LOW);
break;
case 10:
digitalWrite(led[0], LOW);
digitalWrite(led[1], HIGH);
digitalWrite(led[2], LOW);
break;
case 20:
digitalWrite(led[0], LOW);
digitalWrite(led[1], LOW);
digitalWrite(led[2], HIGH);
break;
case 50:
digitalWrite(led[0], HIGH);
digitalWrite(led[1], HIGH);
digitalWrite(led[2], HIGH);
break;
case 60:
digitalWrite(led[0], LOW);
digitalWrite(led[1], HIGH);
digitalWrite(led[2], HIGH);
break;
case 70:
digitalWrite(led[0], HIGH);
digitalWrite(led[1], LOW);
digitalWrite(led[2], HIGH);
break;
case 80:
digitalWrite(led[0], HIGH);
digitalWrite(led[1], HIGH);
digitalWrite(led[2], LOW);
break;
case 90:
digitalWrite(led[0], LOW);
digitalWrite(led[1], LOW);
digitalWrite(led[2], LOW);
break;
}
}
}
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Onafhankelijk knipperen
En anders krijg je dit:
- Code: Alles selecteren
#include "clHeartbeat.h"
clHeartbeat htb1 (10, 500L, 1); // flash at 500msec
clHeartbeat htb2 (11, 1000L, 1); // flash at 1000 msec
clHeartbeat htb3 (13, 250L, 1); // flash at 250 msec
void setup(){
}
void loop(){
htb1.Update();
htb2.Update();
htb3.Update();
}
Re: Onafhankelijk knipperen
mooie syntax om je sketch overzichtelijk te houden.
Alle goodies zitten in clHeartbeat.h
Staat ´ie al op GitHub?
Alle goodies zitten in clHeartbeat.h
Staat ´ie al op GitHub?
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Onafhankelijk knipperen
Nee nog niet
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Onafhankelijk knipperen
Ik heb hem ff in Github gezet : https://github.com/nicoverduin/clHeartbeat
Nog verder niet. Gewoon beide files in een library zetten met dezelfde naam en dan bovenstaand voorbeeld proberen.
Fading werkt alleen op een PWM pin. Knipperen op alle pins.
Documentatie volgt nog
Nog verder niet. Gewoon beide files in een library zetten met dezelfde naam en dan bovenstaand voorbeeld proberen.
Fading werkt alleen op een PWM pin. Knipperen op alle pins.
Documentatie volgt nog
9 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 19 gasten