Pomoc w kodzie - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: Pomoc w kodzie (/watek-pomoc-w-kodzie) Strony:
1
2
|
Pomoc w kodzie - wewtorek - 23-02-2018 Witam uczę się programować Arduino. Mam zadanie napisać program który będzie za każdym użyciem przycisku wykonywał -- lub ++. Program jest już prawie gotowy problem w tym że po użyciu przycisku wartość się zmienia przez czas wciśnięcia przycisku, zależy mi na tym żeby wartość podnosiła się lub spadała dokładnie o 1 za każdym naciśnięciem. Myślałem nad użyciem pętli while. Proszę o podpowiedz w rozwiązaniu problemu. Kod: int a=0; RE: Pomoc w kodzie - Robson Kerman - 23-02-2018 To za każdym razem sprawdzaj, czy przycisk został puszczony. Jaki masz z tym problem? RE: Pomoc w kodzie - wewtorek - 26-02-2018 (23-02-2018, 22:40)Robson Kerman napisał(a): To za każdym razem sprawdzaj, czy przycisk został puszczony. Jaki masz z tym problem?Nie wiem czego użyć w tym celu. RE: Pomoc w kodzie - Smaczek - 26-02-2018 Witam, Użyj zmiennej pomocniczej typu boolean, która będzie przechowywać poprzedni stan przycisku. Pozdrawiam, Tomek. RE: Pomoc w kodzie - wewtorek - 26-02-2018 (26-02-2018, 13:05)Smaczek napisał(a): Witam,A mógłbym zrobić to dodając do kodu pętle while? RE: Pomoc w kodzie - Smaczek - 26-02-2018 Witam, Jeśli chcesz sprawdzać stan dwóch przycisków to pętla while nie będzie dobrym rozwiązaniem. Pozdrawiam RE: Pomoc w kodzie - wewtorek - 26-02-2018 (26-02-2018, 13:05)Smaczek napisał(a): Witam, Jak mogę zadeklarować tą zmienną? I jak to się ma do reszty kodu? Znajdę jakiś poradnik, artykuł odnośnie używania boolean? Bardzo dziekuje za pomoc RE: Pomoc w kodzie - Smaczek - 27-02-2018 Witam, Odnośnie zmiennych masz wszystko na oficjalnej stronie Arduino. Zmienną deklarujesz na samym początku programu i przypisujesz jej wartość HIGH. W pętli loop() w programie masz if-a w którym sprawdzasz stan przycisku (czy jest LOW). Musisz tam dodatkowo umieścić warunek, który będzie CI zwiększał wartość zmiennej a ale tylko wtedy, gdy wartość zmiennej boolean jest HIGH. Dodatkowo, jeśli odczyt stanu przycisku jest różny od wartości zmiennej boolean to należy jej wartość zmienić na przeciwną (LOW->HIGH lub HIGH->LOW), czyli aktualny stan przycisku. Podobnie dla drugiego przycisku (czyli potrzeba jest dwóch zmiennych typu boolean). Takie rozwiązanie nie będzie uwzględniać tzw. zjawiska drgania styków, ale to z kolei można wyeliminować dokładając "małego" delay(). Pozdrawiam, Tomek. RE: Pomoc w kodzie - wewtorek - 27-02-2018 Kod: int a; Nie działa, w czym mam błąd? RE: Pomoc w kodzie - Smaczek - 28-02-2018 Witam, To, w jaki sposób "poprawiłeś" kod świadczy, że ... jeszcze dużo nauki przed Tobą. Przede wszystkim masz jakąś dziwną konstrukcję dwóch warunków w if-ach!! Wyrzuć (ponowną) deklarację zmiennych z loop(). Sugeruję, po uwzględnieniu powyższego: if(digitalRead(4) != b) { if (b == HIGH) a++; b = !b; } Plus ewentualnie jakiś delay(); Pozdrawiam, Tomek. |