Skocz do zawartości
tiger333

Prosty minutnik na Arduino

Pomocna odpowiedź

Napisano (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 przez tiger333

Udostępnij ten post


Link to post
Share on other sites

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.

Udostępnij ten post


Link to post
Share on other sites
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 😉

Udostępnij ten post


Link to post
Share on other sites

Wiem wiem problem dla mnie jest znalezienie sposobu na odliczenie ustawionego czasu i pokazaniu tego na wyświetlaczu 

Udostępnij ten post


Link to post
Share on other sites

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ę 😉

Udostępnij ten post


Link to post
Share on other sites

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

Udostępnij ten post


Link to post
Share on other sites

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 😉

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij, aby zacząć pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...