Uczę się z kursu Arduino od @Forbot (dzięki! Super kurs!) i aktualnie poznaję zmienne. Próbuję rozwiązać zadanie 2.5, którego treść brzmi
Zadanie trudniejsze, z gwiazdką . Napisz program, który po wysłaniu koloru diody zmieni jej stan na przeciwny. Jeśli dioda jest włączona, to zostanie wyłączona i na odwrót. Podpowiedź: koniecznie użyj dodatkowych zmiennych typu bool, które będą pamiętały aktualny stan diod.
Udało mi się zrobić to zadanie, tylko nie wiem pewnej rzeczy. Wykorzystałem zmienną bool (nazwałem ją zielonaStan) i kiedy wpiszę kolor diody to ma być wykonana operacja zielonaStan = zielonaStan - 1 Wszystko działa tak, jak powinno
Zastanawia mnie jednak, dlaczego nie działało zielonaStan = zielonaStan + 1 Zmienna bool ma chyba tylko dwa stany? Dioda się zaświeciła i nie mogłem jej zgasić
@Antwito: zmienna boolean/bool ma 256 stanów :) To jest zmienna, która tak naprawdę jest typu uint8_t - czyli 8 bitów bez znaku. Może przechowywać wartości od 0 do 255, przy czym 0 odpowiada fałszowi, a każda inna wartość to prawda.
@wonsz_smieszek: ale teraz znowu zastanawia mnie, dlaczego odejmowanie działa? Mamy na początek fałsz, odejmujemy 1 i mamy prawdę (255). Znowu odejmujemy 1 i dalej mamy prawdę (254)
@wonsz_smieszek: zrobiłem teraz program wyświetlający wartość zmiennej bool i przetestowałem dodawanie i odejmowanie. Przy odejmowaniu wyświetla na zmianę 0 i 1, a przy dodawaniu same 1, nigdy nie wyskoczyło 0 Nie za bardzo rozumiem, dlaczego tak się dzieje
Podejrzewam, że Twój przypadek jest analogiczny do działania operatorów ++ i --. Jeżeli możesz - sprawdź (czyli zamiast zielonaStan = zielonaStan - 1, napisz zielonaStan--). Wydaje mi się, że rezultat będzie ten sam.
Standard cpp mówi, że: - operator ++ w działaniu na bool powinien dawać zawsze 1
@Antwito: cieszę się, że kursy są pomocne ( ͡°͜ʖ͡°) Ogólnie to chciałem zapytać skąd te dodawanie/odejmowanie? Nie lepiej negować wartość zmiennej? To chyba najpewniejsze rozwiązanie w przypadku boola (⌐͡■͜ʖ͡■)
@Forbot: o negowaniu nie było nic w kursie ( ͡°͜ʖ͡°) Ale faktycznie wtedy jest banalnie. @wonsz_smieszek: niestety nie zapisałem tego programu, ale sprawdzę innym razem z ciekawości ;)
Udało mi się zrobić to zadanie, tylko nie wiem pewnej rzeczy. Wykorzystałem zmienną bool (nazwałem ją zielonaStan) i kiedy wpiszę kolor diody to ma być wykonana operacja zielonaStan = zielonaStan - 1 Wszystko działa tak, jak powinno
Zastanawia mnie jednak, dlaczego nie działało zielonaStan = zielonaStan + 1 Zmienna bool ma chyba tylko dwa stany?
Dioda się zaświeciła i nie mogłem jej zgasić
#kiciochpyta #arduino #programowanie #elektronika
źródło: comment_cQdCzQLoqRNfKG8KRmlD99S9E81gNDAx.jpg
PobierzKomentarz usunięty przez autora
Podejrzewam, że Twój przypadek jest analogiczny do działania operatorów ++ i --. Jeżeli możesz - sprawdź (czyli zamiast zielonaStan = zielonaStan - 1, napisz zielonaStan--). Wydaje mi się, że rezultat będzie ten sam.
Standard cpp mówi, że:
- operator ++ w działaniu na bool powinien dawać zawsze 1
Ogólnie to chciałem zapytać skąd te dodawanie/odejmowanie? Nie lepiej negować wartość zmiennej? To chyba najpewniejsze rozwiązanie w przypadku boola (⌐ ͡■ ͜ʖ ͡■)
istotnie... .
@wonsz_smieszek: niestety nie zapisałem tego programu, ale sprawdzę innym razem z ciekawości ;)