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);
}