tiger333 Napisano Maj 15, 2019 Udostępnij Napisano Maj 15, 2019 (edytowany) Witam, jestem tu nowy uczę się dopiero Arduino, ale wpadłem na pomysł by zrobić projekt minutnika, który będzie odmierzał ustawiony czas, pokazując na wyświetlaczu 2X16. Sterowanie odbywa się za pomocą 3 przycisków. Pierwszy zeruje pomiar, drugi go ustawia, a trzeci startuje odliczenie. Udało mi się ustawiać czas, ale problem jest z jego odliczeniem, znalazłem coś takiego jak biblioteka timers, ale nie wiem czy to pomoże. Chciałbym, aby odmierzenie było widoczne na wyświetlaczu. Oto kod, który dotychczas stworzyłem. Próbowałem analogicznie do tego zrobić odliczanie, ale niestety nie działa. #include <LiquidCrystal.h> LiquidCrystal lcd(2,3,4,5,6,7); byte sekundy=0; byte minuty=0; byte godziny=0; bool statusMinutnika=0; void setup() { lcd.begin(16,2); pinMode(8, INPUT_PULLUP); // ustawienie pinów pinMode(9, INPUT_PULLUP); pinMode(10, INPUT_PULLUP); lcd.setCursor(0,1); lcd.print("00:00:00"); } void loop() { lcd.setCursor(0,0); lcd.print("Pomiar"); if (digitalRead(9)==LOW){ // zeruje pomiar sekundy=0; minuty=0; godziny=0; lcd.setCursor(0,1); lcd.print("00:00:00"); statusMinutnika=0; } if (digitalRead(8)==LOW){ // wciśnięcie przycisku do ustawienia czasu sekundy = sekundy + 1; if (sekundy == 60){ // zmienia 60 sekund na kolejna minute minuty = minuty + 1; sekundy = 0; if (minuty == 60){ // zmienia 60 minut na kolejna godzine godziny = godziny + 1; minuty = 0; if (godziny < 10){ // ustawia kursor w odpowiednie miejsce dla godzin lcd.setCursor(1,1); } else { lcd.setCursor(0,1); } lcd.print(godziny); lcd.setCursor(3,1); lcd.print("00"); // zeruje minuty na wyswietlaczu po przekroczeniu 59 } if (minuty < 10){ // ustawia kursor w odpowiednie miejsce dla minut lcd.setCursor(4,1); } else { lcd.setCursor(3,1); } lcd.print(minuty); lcd.setCursor(6,1); lcd.print("00"); // zeruje sekundy na wyswietlaczu po przekroceniu 59 } if (sekundy < 10){ // ustawia kursor w odpowiednie miejsce dla sekund lcd.setCursor(7,1); } else { lcd.setCursor(6,1); } lcd.print(sekundy); delay(100); zapamietanyCzas=digitalRead(8); } } } Edytowano Maj 15, 2019 przez tiger333 Link do komentarza Share on other sites More sharing options...
kaczakat Maj 15, 2019 Udostępnij Maj 15, 2019 Tu na stronie jest kurs Arduino, a w nim millis(), to wystarczy do prostego odmierzania czasu w timerze. Co do przycisków, do startu, zatrzymania i kasowania wystarczy 1 przycisk (gdy nie chodzi to startuje, gdy chodzi to zatrzymuje, przyciśnięcie dłużej robi restart), pozostałe dwa mogą zwiększać/zmniejszać nastawę. Kurs raczej zacznij od początku. Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Maj 16, 2019 Udostępnij Maj 16, 2019 9 godzin temu, tiger333 napisał: Udało mi się ustawiać czas, ale problem jest z jego odliczeniem, znalazłem coś takiego jak biblioteka timers, ale nie wiem czy to pomoże. Chciałbym, aby odmierzenie było widoczne na wyświetlaczu. Oto kod, który dotychczas stworzyłem. Próbowałem analogicznie do tego zrobić odliczanie, ale niestety nie działa. Co dokładnie sprawia Ci największy problem? Zadałeś dość ogólne pytanie - ciężko o jakąś inną wskazówkę oprócz ewentualnego gotowca, a nie o to tutaj chodzi 😉 Link do komentarza Share on other sites More sharing options...
tiger333 Maj 16, 2019 Autor tematu Udostępnij Maj 16, 2019 Wiem wiem problem dla mnie jest znalezienie sposobu na odliczenie ustawionego czasu i pokazaniu tego na wyświetlaczu Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Treker (Damian Szymański) Maj 16, 2019 Udostępnij Maj 16, 2019 Spróbuj podzielić sobie problem na mniejsze części. Zacznij od samego odliczania np. sekund, jesteś w stanie to napisać? Taki stoper, ale działający w drugą stronę 😉 Link do komentarza Share on other sites More sharing options...
Gość Maj 16, 2019 Udostępnij Maj 16, 2019 Trzeba pamiętać, że taki "zegar" nie będzie zbyt dokładny. Aby z arduino zrobić prawdziwy real time clock trzeba zmienić kwarc na zegarkowy i zastosować taktowanie asynchroniczne. Jak byś potrzebował z tym pomocy to pisz. pozdr Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Maj 17, 2019 Udostępnij Maj 17, 2019 Na tym etapie i przy tego typu projekcie raczej wystarczy spokojnie dokładność uzyskiwana dzięki millis. RTC to dobry pomysł na kolejny krok i rozbudowę projektu, ale nie jest to raczej niezbędne 😉 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »