• 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ź
#2
Sprubuj wydrukować w tym programie cokolwiek czy pójdzie.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#3
Dzięki za odp. adix... ale na tym filmie, do którego załączyłem link, drukuje się string.
 
Odpowiedź
#4
Ale jak drukujesz cokolwiek typu
Kod:
Serial.println("cokolwiek);
to jest ok?
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#5
(02-08-2017, 21:46)adix napisał(a): Ale jak drukujesz cokolwiek typu
Kod:
Serial.println("cokolwiek);
to jest ok?

Nie. Jeśli jest już załączona biblioteka DS1307RTC, wtedy Serial.println("cokolwiek); też wyświetla krzaki.
 
Odpowiedź
#6
„#include <TimeLib.h>" zastanawiające jest to dlaczego w pliku "Time.h" jest dyrektywa dołączająca TimeLib.h,
a w przykładach jest #include <Time.h> po kiego takie manewry ? używam tego zegara i nie ma problemów .
„też wyświetla krzaki" jak to mówi jeden jegomość od avr te krzaki trzeba ściąć ,skoro je zasadziłeś .
https://github.com/PaulStoffregen/Time/b...ter/Time.h
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości