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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.