Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki

Arduino Mega i niewłaściwe naliczanie na CD40110

m4n14ck 16 Lut 2017 11:53
  • #1 16 Lut 2017 11:53
    m4n14ck
    Poziom 1  

    Cześć wszystkim. Nie pamiętam czy już coś pisałem na forum więc od razu pozdrawiam wszystkich jako świeżak.

    Oto mój problem:

    Napisałem kod(wiem wiem, nie jest to mistrzostwo świata, ale zajmuję się Arduino od 2 tygodni więc zrozumcie), który ma realizować funkcję gry z losowo włączanymi diodami, a zadaniem gracza jest te diody(przyciski do nich podłączone) nacisnąć. Ma się na to określony czas i tu pojawia się problem. Podczas naciśnięcia przycisku START program ma resetować zegary i dodać( zaznaczone w kodzie) tyle impulsów do licznika CD40110 ile sekund ma trwać gra, po czym załącza się i rozpoczyna rozgrywkę. Problem w tym, że kiedy np. wpiszę wartość timerLong(długość pracy timera) równą 60000 czyli 60 sekund to na wyświetlaczu pojawia mi się raz 60 a raz 61. Kiedy jest 61 to odliczanie czasu dochodzi do 1 a nie do zera, co jest zrozumiałe bo przecież 60 sekund odmierzył. Pojawia się też jednak problem ponieważ nie zawsze zlicza te 60 sekund, czasami np.59 ale nie mniej. Myślę, że ma to związek ze złym ustawieniem początkowym stanów na poszczególnych pinach ale mogę się mylić. No dziwne zaprawdę powiadam wam. To mój pierwszy kod gdzie staram się ogarnąć bez delaya i może tu gdzieś dałem ciała.

    Siedzę przy tym już parę godzin i za nic nie mogę już sam siebie w tym kodzie zrozumieć. I wiem jak bardzo nieprofesjonalnie jest napisany, ale na to przyjdzie czas, robię duże postępy i ogarnę składnię, estetykę itd. natomiast pomoc potrzebna mi teraz, a nie kiedy się nauczę, więc wszystkim osobom chcącym mnie zrugać za oczywiste błędy dziękuję z całego serca za krytykę i proszę tylko o merytoryczne podejście do sprawy (moim ulubionym zajęciem na pewno nie jest internetowa wojenka z każdym kto myśli inaczej) .

    Na wszelkie pytania postaram się szybko odpowiadać, domyślam się, że popełniłem gdzieś głupi błąd początkującego, tylko nie wiem gdzie :D I nie każcie mi proszę schematu rysować bo to trochę za długo będzie trwało, a tego wolałbym uniknąć.

    Odpowiedź na Twoje pytanie brzmi TAK!. Używałem już opcji szukaj, googluj, zapytaj wujka, pomyśl, włącz mózg, jak się nie znasz to nie zaczynaj itp.

    P.S. - wiem, że w języku musi być konsekwencja a u mnie raz piszę zmienne po polsku a raz po angielsku, a raz używam zmiennej a raz piszę digitalWrite. Ogarnę to jak kod będzie hulał :D

    Z góry dziękuję każdemu kto wniesie pozytywny wkład do dyskusji i mojej edukacji.

    Kod: c
    Zaloguj się, aby zobaczyć kod