• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zegarek DS1307 (problem)
#1
Witam ! 

Poznaje układ czasowy DS1307 z baterią, wyświetlam czas i datę na wyświetlaczu i mam problem, bo raz jak odłączę i podłącze pokazuje poprawna godzinę. Natomiast innym razem jakby się resetował pokazuje same 0 w miejscach dat

Kod:
#include <Wire.h>
#include <DS1307.h>
#include <LiquidCrystal_I2C.h>

DS1307 clock;
RTCDateTime dt;
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
  lcd.init();                      // initialize the lcd
  lcd.backlight();                  //Włącz podświetlenie
  // Inicjalizacja DS1307

  clock.begin();
  { lcd.backlight();
  }
  lcd.print("Witaj!");
  lcd.setCursor(0, 1);
  lcd.print("test zegarka");
  delay(1000);
  lcd.clear();

  // Jeśli nie ustawiono daty, ustawiamy
  // if (!clock.isReady())
  // {
  // Data i czas z momentu kompilacji
//clock.setDateTime(__DATE__, __TIME__);//Ustaw date z komputera
  // }
}

void loop()
{

  int sensorValue = analogRead(A0); // Wprowadz wartość wejsia analogowego

  if (dt.hour <= 7) {           //Jeżeli godzina 24-7 zgaś podświetlenie
    lcd.noBacklight();          //Kazda inna włącz
  }                             //
  else
  { lcd.backlight();
  }

  dt = clock.getDateTime(); // przypisz date i czas do "dt"
  lcd.setCursor(0, 0); //ustaw kursor na wyswietlaczu na 0,0

  lcd.print(dt.hour);   lcd.print(":"); // wyswietl godzine 
  if (dt.minute < 10) {// jeżeli minuta mniejsza od 10 dopisz 0
    lcd.print("0");
  }

  lcd.print(dt.minute); lcd.print(":");//wswietl minute
  if (dt.second < 10) { // jezeli sec mniejsza od 10 dopisz 0
    lcd.print("0");
  }
  lcd.print(dt.second); lcd.print(" "); // wyswietl sec
  lcd.setCursor(0, 1); // ustaw kursor na 0,0
  lcd.print(dt.day);    lcd.print("-"); //wyswietl dzien 
  lcd.print(dt.month);  lcd.print("-"); // wyświetl mieciac
  dt.year = dt.year - 2000;   // skrocony zapis daty do 2 miejsc
  lcd.print(dt.year);   lcd.print(""); // wyswietl skrócona date
  lcd.setCursor(9, 0); // ustwa kurdor na 12,0
  float d; //wprowac zmienna float
  d = sensorValue / 205; // oblicz napiecie 
  lcd.print("Bat");
  lcd.print(d); // wyswietl napiecie d
  lcd.setCursor(15, 0);
  lcd.print("v");
  delay(250); // czekaj 250 ms
}
 
Odpowiedź
#2
sprawdź połączenie baterii mi nie stykała czasami i takie cuda się działy daj też na wejściu zasilania kondziora 100nf - 1uf jak go niema też lubi się zresetować .
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#3
Kurde! Dzieki bede walczyl !
 
Odpowiedź
#4
swoją drogą ds1307 i inne zegary są strasznie czułe na wyładowania elektrostatyczne więc sweterek wełniany przy zabawie z nim odpada .
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości