Skocz do zawartości

Resetowanie Arduino o określonej godzinie


johny_duda

Pomocna odpowiedź

Witajcie !
Mam problem, zrobiłem sobie zegarek z użyciem arduino nano, lcd oraz rtc DS1302.
Problem wygląda następująco. O północy po zmianie dnia tygodnia zegar pokazuje dwa zlane a czasem dziwnie zniekształcone napisy. Po restarcie wszystko wraca do normy. Wymyśliłem że codziennie o północy można by było takiego gagatka resetować. Tylko jest kolejny problem, po pierwsze Ja jako początkujący programista mam problem ze zrobieniem "if" tak żeby to działało a po drugie, fajnie jakby udało się to ogarnąć programowo bez dokładania kolejnych kabelków.

Poniżej wklejam kodzik który używam.

 

// I2C : SCL A5
//       SDA A4


// DS1302:  RST pin    -> Arduino Digital 2
//          DATA pin   -> Arduino Digital 3
//          CLK pin  -> Arduino Digital 4

#include <DS1302.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);


DS1302 rtc(2, 3, 4);

}

void setup()
{
  pinMode(7, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
  // Set the clock to run-mode, and disable the write protection
  rtc.halt(false);
  rtc.writeProtect(false);

  // Setup LCD to 16x2 characters
  lcd.begin(16, 2);
  lcd.setCursor(1, 0);
  lcd.print("Made by Johny");
  lcd.setCursor(4, 1);
  lcd.createChar(0, customChar);

  delay(5000);
  lcd.clear();
  //rtc.setDate(28, 1, 2021);
  // rtc.setTime(21, 45, 00);
  //rtc.setDOW(WEDNESDAY);
  // The following lines can be commented out to use the values already stored in the DS1302
}

void loop()
{

  // Display time centered on the upper line
  lcd.setCursor(4, 0);
  lcd.print(rtc.getTimeStr());
  lcd.setCursor(1, 0);

  lcd.setCursor(14, 0);

  // Display abbreviated Day-of-Week in the lower left corner
  lcd.setCursor(0, 1);
  lcd.print(rtc.getDOWStr(FORMAT_LONG));
  // Display date in the lower right corner
  lcd.setCursor(8, 1);
  lcd.print(rtc.getDateStr(FORMAT_SHORT));
  delay(1000);
 


}

 

Link do komentarza
Share on other sites

Po co od razu resetować. Wystarczy lcd.clear(); zrobić

Nie bawiłem się nigdy tą biblioteką i nie wiem co zwraca to rtc.getTimeStr() ale domyślam się że coś w stylu 00:00:00 (to ty wiesz najlepiej co widzisz na wyświetlaczu.

 

Zatem wstawiasz gdzieś w pętle cos w stylu

if ( rtc.getTimeStr()=="00:00:00") lcd.clear();

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

(edytowany)

@PowerTGS440

Wszystko fajnie i dzięki za kodzik ale teraz nie ma tutaj dnia tak jak to było w moim kodzie. 

Mój kod: 
420199057_mjkod.thumb.jpg.4c14e9dac5047f77ce29306d385835ac.jpg

 

Twój kod: 
111322020_Twjkod.thumb.jpg.0ca2cb98b09aa1d70c3ca20bd6c0637f.jpg

Jeśli  była by szansa żeby jeszcze to naprawić to było by już super.

Edytowano przez johny_duda
Link do komentarza
Share on other sites

9 godzin temu, johny_duda napisał:

@PowerTGS440

Wszystko fajnie i dzięki za kodzik ale teraz nie ma tutaj dnia tak jak to było w moim kodzie. 

Mój kod: 
420199057_mjkod.thumb.jpg.4c14e9dac5047f77ce29306d385835ac.jpg

 

Twój kod: 
111322020_Twjkod.thumb.jpg.0ca2cb98b09aa1d70c3ca20bd6c0637f.jpg

Jeśli  była by szansa żeby jeszcze to naprawić to było by już super.

przesuń  w prawo 🙂 
masz lcd.setCursor(0, 1); lcd.print(myDate);

czyli zrób: lcd.setCursor(3,1);  lcd.print(myDate);

lcd.setCursor(y,x); 
gdzie y to nr. kolumny
gdzie x to nr. wiersza

to co na dole zawsze można w pętli LOOP co 10sekund np. sobie zmieniać 🙂

 

 

Edytowano przez PowerTGS440
Link do komentarza
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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij 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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.