21-11-2022, 19:02
Wychodzi na to, że program działa tak jak go napisałeś:
Działa to w tym momencie tak, że jak mikrokontroler odbierze z bluetooth '6' to zmieni stan diody na przeciwną. Więc żeby dioda migała co 0,5sek musiałoby na bluetooth pojawiać się cyklicznie '6'.
Rozwiązanie podał Ci kolega kaczakat - tworzysz flagę
po odebraniu '6' z bluetooth zmienia się flaga na true, a po odebraniu '3' na false.
Potem w loop() dajesz:
wg. tego, co już masz albo:
zgodnie z tym, co pisał kolega powyżej.
Brakuje mi ewidentnie
Na pewno w tym wypadku przerostem formy nad treścią jest zmienna stanLED1 jako int. Zajmuje za dużo miejsca tylko po to, żeby sygnalizować stan włącz - wyłącz. Tu masz rozwiązanie z zastosowaniem boolean, czyli 8 bitów. Możesz również jedną zmienną np. byte(8-bitów) spożytkować na 8 różnych stanów reprezentowanych przez 0 i 1. Czyli stanLED1 = 0/1 to 1 bit "zajętego miejsca" i w takiej zmiennej byte możesz takich ledów "zmieścić" 8.
Warto już na samym początku poczytać i zrozumieć o co chodzi w typach zmiennych i ich doborze.
Kod:
if(Data==('6')){
if (aktualnyCzas - zapamietanyCzasLED1 >= 500UL) {
zapamietanyCzasLED1 = aktualnyCzas; // migająca led / Zapamietaj aktualny czas
if (stanLED1 == LOW) { // migająca led / Zmieniamy stan diody na przeciwny
stanLED1 = HIGH;
} else {
stanLED1 = LOW;
}
digitalWrite(SWAwaryjne, stanLED1); // migająca led / ustawiamy nowy stan na diodzie
}
}
Rozwiązanie podał Ci kolega kaczakat - tworzysz flagę
Kod:
boolean miganie = false;
Potem w loop() dajesz:
Kod:
if (miganie && aktualnyCzas - zapamietanyCzasLED1 >= 500UL) {
zapamietanyCzasLED1 = aktualnyCzas; // migająca led / Zapamietaj aktualny czas
if (stanLED1 == LOW) { // migająca led / Zmieniamy stan diody na przeciwny
stanLED1 = HIGH;
} else {
stanLED1 = LOW;
}
digitalWrite(SWAwaryjne, stanLED1); // migająca led / ustawiamy nowy stan na diodzie
}
Kod:
if (miganie && aktualnyCzas - zapamietanyCzasLED1 >= 500UL) {
zapamietanyCzasLED1 = aktualnyCzas; // migająca led / Zapamietaj aktualny czas
digitalWrite(SWAwaryjne, !digitalRead(SWAwaryjne)); // migająca led / ustawiamy nowy stan na diodzie
}
Brakuje mi ewidentnie
Kod:
sendData("SWAwaryjne ON");
Na pewno w tym wypadku przerostem formy nad treścią jest zmienna stanLED1 jako int. Zajmuje za dużo miejsca tylko po to, żeby sygnalizować stan włącz - wyłącz. Tu masz rozwiązanie z zastosowaniem boolean, czyli 8 bitów. Możesz również jedną zmienną np. byte(8-bitów) spożytkować na 8 różnych stanów reprezentowanych przez 0 i 1. Czyli stanLED1 = 0/1 to 1 bit "zajętego miejsca" i w takiej zmiennej byte możesz takich ledów "zmieścić" 8.
Warto już na samym początku poczytać i zrozumieć o co chodzi w typach zmiennych i ich doborze.