17-12-2022, 19:50
Hej, postanowiłem odkopać temat, tym razem nie chodzi o blink a o fade.
Miganie (blink) działa bez problemu, jednak schody zaczynają się gdy chcę "migać" z poziomu 50 mocy diody na 255 (pin PWM).
Kod wygląda w skrócie następująco:
int SWKierunkiLeweT = 5;
unsigned long aktualnyCzas = 0;
unsigned long aktualnyCzas2 = 0;
unsigned long zapamietanyCzasLED1 = 0;
unsigned long zapamietanyCzasLED2 = 0;
boolean miganieLeweT = false;
void setup(){
pinMode(SWKierunkiLeweT,OUTPUT);
}
void loop(){
//KOD MIGANIA
aktualnyCzas = millis(); // Pobierz liczbe milisekund od startu
aktualnyCzas2 = millis();
//Migacze TYLNE
if (miganieLeweT && aktualnyCzas - zapamietanyCzasLED1 >= 300UL) {
zapamietanyCzasLED1 = aktualnyCzas; // migająca led / Zapamietaj aktualny czas
digitalWrite(SWKierunkiLeweT, !digitalRead(SWKierunkiLeweT)); // migająca led / ustawiamy nowy stan na diodzie
}
if(Data==('g')){ // Lewy ON
miganieLeweT = true;
sendData("Kierunkowskaz Lewy: ON");
}
if(Data==('h')){ // Lewy OFF
miganieLeweT = false;
analogWrite(SWKierunkiLeweT,50);
sendData("Kierunkowskaz Lewy: OFF");
}
}
Jak wcześniej napisałem, kod jest bardzo okrojony ale sam sens zawarty jest w ww. skrócie.
Po wciśnięciu "g" włącza się miganie diody (działa w zakresie 0-255), po wyłączeniu (przycisk "h") dioda przyjmuje wartość 50 (bardzo istotne).
Problem polega na tym, że chcę uzyskać efekt migania, który zaczyna się przy stanie diody 50 i leci do 255 (max), Działanie nie musi być płynne, chodzi o kierunkowskaz, który używa część diod z tylnego reflektora który z kolei gdy jest włączony ma wartość 50.
Z racji tego, że przednie kierunkowskazy są podpięte pod piny nie PWM oraz że w ich przypadku powinny działać na zasadzie 0% - 100% chciałbym zachować te same odstępy migania (synchronizację).
Proszę o pomoc.
Miganie (blink) działa bez problemu, jednak schody zaczynają się gdy chcę "migać" z poziomu 50 mocy diody na 255 (pin PWM).
Kod wygląda w skrócie następująco:
int SWKierunkiLeweT = 5;
unsigned long aktualnyCzas = 0;
unsigned long aktualnyCzas2 = 0;
unsigned long zapamietanyCzasLED1 = 0;
unsigned long zapamietanyCzasLED2 = 0;
boolean miganieLeweT = false;
void setup(){
pinMode(SWKierunkiLeweT,OUTPUT);
}
void loop(){
//KOD MIGANIA
aktualnyCzas = millis(); // Pobierz liczbe milisekund od startu
aktualnyCzas2 = millis();
//Migacze TYLNE
if (miganieLeweT && aktualnyCzas - zapamietanyCzasLED1 >= 300UL) {
zapamietanyCzasLED1 = aktualnyCzas; // migająca led / Zapamietaj aktualny czas
digitalWrite(SWKierunkiLeweT, !digitalRead(SWKierunkiLeweT)); // migająca led / ustawiamy nowy stan na diodzie
}
if(Data==('g')){ // Lewy ON
miganieLeweT = true;
sendData("Kierunkowskaz Lewy: ON");
}
if(Data==('h')){ // Lewy OFF
miganieLeweT = false;
analogWrite(SWKierunkiLeweT,50);
sendData("Kierunkowskaz Lewy: OFF");
}
}
Jak wcześniej napisałem, kod jest bardzo okrojony ale sam sens zawarty jest w ww. skrócie.
Po wciśnięciu "g" włącza się miganie diody (działa w zakresie 0-255), po wyłączeniu (przycisk "h") dioda przyjmuje wartość 50 (bardzo istotne).
Problem polega na tym, że chcę uzyskać efekt migania, który zaczyna się przy stanie diody 50 i leci do 255 (max), Działanie nie musi być płynne, chodzi o kierunkowskaz, który używa część diod z tylnego reflektora który z kolei gdy jest włączony ma wartość 50.
Z racji tego, że przednie kierunkowskazy są podpięte pod piny nie PWM oraz że w ich przypadku powinny działać na zasadzie 0% - 100% chciałbym zachować te same odstępy migania (synchronizację).
Proszę o pomoc.