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

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ę »
×
×
  • 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.