• 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
DS1307 Dziwne znaki przy próbie wyświetlania czasu na LCD 16x2
#1
Hej wszystkim. To mój pierwszy post. Yeeeey Smile!

Standardowo, jak większość w takich przypadkach, zaczynam zabawę z Arduino Big Grin! - Zakupiłem Leonardo.
Podłączyłem sobie RTC pod I2C, wyświetlacz standardowo - bez konwertera I2C.

Sam wyświetlacz śmiga jak trzeba, kiedy wgrywam do Arduino jakieś defaultowe przykłady.
Pisałem też swoje sketche, działało i problemów nie było. Taka zabawa przed czymś poważniejszym.

Schody zaczęły się w momencie próby wyświetlenia czasu na LCD. Zamiast daty i godziny, pojawiają się "krzaczki".

Załączam link do filmu, na którym prezentuje co się dzieje. Kod wrzucam poniżej (trochę zmodyfikowany, bo testowałem różne rozwiązania... ale prezentuje istotę problemu).

Pomóżcie ludzie, bo nic o tym w necie nie ma... albo źle szukałem Wink!
Link do filmu

Poniżej kod z filmu:

Kod:
#include <LiquidCrystal.h>
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>


LiquidCrystal   lcd(12, 11, 5, 4, 3, 2);

const char *monthName[12] = {
  "Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paz", "Lis", "Gru" 
};

void setup() {
  lcd.begin(16, 2);
}

void loop() {
  lcd.print("Start...");
  delay(800);
  lcd.clear();
}

Wrzucam jeszcze foto z efektu, który uzyskałem po wgraniu skecha poniżej:

Kod:
#include <LiquidCrystal.h>
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>


LiquidCrystal   lcd(12, 11, 5, 4, 3, 2);

const char *monthName[12] = {
  "Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paz", "Lis", "Gru" 
};

void setup() {
  lcd.begin(16, 2);
}

void loop() {
  tmElements_t tm;

  if(RTC.read(tm)){

    lcd.setCursor(0, 0);
    lcdPrintToDigits(tm.Hour);
    lcd.print(':');
    lcdPrintToDigits(tm.Minute);
    lcd.print(':');
    lcdPrintToDigits(tm.Second);
    lcd.setCursor(0, 1);
    lcd.print(tm.Day);
    lcd.print('/');
    lcd.print(monthName[tm.Month - 1]);
    lcd.print('/');
    lcd.print(tm.Year);
  }
  else {
    if(RTC.chipPresent()){
      lcd.print("DS1307 zatrzymany. Uruchom zegar");
    }
    else {
      lcd.print("DS1307 blad odczytu");
      lcd.print("sprawdx polaczenie");
    }
    delay(9000);
  }
  delay(10000);
}

void lcdPrintToDigits(int number){
  if(number >= 0 && number < 10){
    lcd.print('0');
  }
  lcd.print(number);
}


[Obrazek: lcd.jpg]
 
Odpowiedź
  


Wiadomości w tym wątku
DS1307 Dziwne znaki przy próbie wyświetlania czasu na LCD 16x2 - przez enterman - 30-07-2017, 19:48

Skocz do:


Przeglądający: 1 gości