Skocz do zawartości

Kilka świeczek LED naraz


Ciamek007

Pomocna odpowiedź

Witajcie!

Mam problem z dziwnym zachowaniem programu. Chciałbym stworzyć kilka (dajmy na to 4) "świeczek LED", czyli zwykłych diod, które świecą z różną intensywnością, w zależności od nadanego losowego prądu, a przez losowe jego dobieranie powstaje efekt palącego się ognia. O ile nie miałem problemów z jedną świeczką, to przy czterech pojawiają się schody - czwarta świeczka (i tylko ta), jeśli już świeci, zachowuje się dość niespodziewanie.

Czytałem trochę o zastosowaniu "blink without delay" i próbowałem wykorzystać to w swoim programie. Niestety - trzy świeczki wyglądają w porządku (różne wartości prądu dają ładny, płynny efekt), ale czwarta mruga w zasadzie jedynie między stanem "0" a "1", w zmiennych odstępach czasowych, co daje efekt dość szarpany. Dlaczego tak się dzieje, co zrobiłem źle?

  bool sw1stan=1;
 const int sw1=9;
 bool sw2stan=1;
 const int sw2=10;
 bool sw3stan=1;
 const int sw3=11;
 bool sw4stan=1;
 const int sw4=12;

unsigned long previousMillis = 0;  
unsigned long currentMillis;
const long interval = 5;

void zapalenie(int swieczka){

 currentMillis = millis();
 if (currentMillis - previousMillis >= interval){
   previousMillis = currentMillis;
   analogWrite(swieczka,random(200));
 }
}

void wygaszanie(int swieczka){
 digitalWrite(swieczka, LOW);
}

void setup() {
 pinMode(sw1, OUTPUT);
 pinMode(sw2, OUTPUT);
 pinMode(sw3, OUTPUT);
 pinMode(sw4, OUTPUT);

}

void loop() {

   if(sw1stan==1) zapalenie(sw1);
   if(sw2stan==1) zapalenie(sw2);
   if(sw3stan==1) zapalenie(sw3);
   if(sw4stan==1) zapalenie(sw4);
   }

Link do komentarza
Share on other sites

To raczej zaskakujące, że program działa dla trzech diod. W funkcji zapalenie robisz jakąś dziwną sztuczkę z czasem - niezależnie od intencji, masz jeden licznik "previousMillis" na wszystkie "świeczki". Więc to raczej zaskakujące, że program działa dla więcej niż jednej diody niż że nie działa dla czterech.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.