• 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
DS 1302 MH-Rtc Modules-2 wyświetlacz blue lcd_I2C nie wyświetla godziny
#1
Wink 
Mianowicie jestem początkującym, (raczkującym to za duzo powiedziane) ale chciałbym wyswietlić godzinę na wy      świetlaczu blue lcd_I2C (0x3F,16,2) za pomocą zegara: DS 1302 MH-Rtc Modules-2 Lecz niestety nie da rady.
Wyświetlacz uruchomiłem za pomocą testowego oprogramowania szkica LiquidCrystal_PCF8574_Test
Zegar za pomoca testu zegarka ze str internetowej. W monitorze odliczał czas i tyle lecz chciałbym przezucic go na wyświetlacz ale nie mogę brakuje mi wiedzy po, która tu się zwracam problem dla bardziej zaawansowanych. Prosze o pomoc.
 
Odpowiedź
#2
Witam,
Jeśli masz wyświetlacz z modułem do komunikacji I2C to spróbuj użyć innej biblioteki (LiquidCriytal_I2C.h), bo podłączenie jest tak banalne (4 przewody), że tam raczej nie powinieneś popełnić błędu.
Jeśli podłączałeś samodzielnie do PCF8574 to przede wszystkim sprawdź połączenia.
Pozdrawiam,
Tomek.
 
Odpowiedź
#3
``````Tak tez uczyniłem wgrałem i zainstalowałem kilka bibliotek jedne nie wchodzą inne się wgrywają lecz zegar nie wyświetlony.
Moim zdaniem to należałoby napisać program od początku. Przyznaje się ze nie umiem połączyć dwóch szkiców testu wyświetlacza ze szkicem testu zegara żeby to współgrało ze soba.
 
Odpowiedź
#4
Witam,
Zamieść kod.
Pozdrawiam,
Tomek
 
Odpowiedź
#5
Skice test wyświetlacza jako pierwszy:


#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>

LiquidCrystal_PCF8574 lcd(0x27);  // set the LCD address to 0x27 for a 16 chars and 2 line display

int show;

void setup()
{
  int error;

  Serial.begin(115200);
  Serial.println("LCD...");

  while (! Serial);

  Serial.println("Dose: check for LCD");

  // See http://playground.arduino.cc/Main/I2cScanner
  Wire.begin();
  Wire.beginTransmission(0x27);
  error = Wire.endTransmission();
  Serial.print("Error: ");
  Serial.print(error);

  if (error == 0) {
    Serial.println(": LCD found.");

  } else {
    Serial.println(": LCD not found.");
  } // if

  lcd.begin(16, 2); // initialize the lcd
  show = 0;
} // setup()

void loop()
{
  if (show == 0) {
    lcd.setBacklight(255);
    lcd.home(); lcd.clear();
    lcd.print("Hello LCD");
    delay(1000);

    lcd.setBacklight(0);
    delay(400);
    lcd.setBacklight(255);

  } else if (show == 1) {
    lcd.clear();
    lcd.print("Cursor On");
    lcd.cursor();

  } else if (show == 2) {
    lcd.clear();
    lcd.print("Cursor Blink");
    lcd.blink();

  } else if (show == 3) {
    lcd.clear();
    lcd.print("Cursor OFF");
    lcd.noBlink();
    lcd.noCursor();

  } else if (show == 4) {
    lcd.clear();
    lcd.print("Display Off");
    lcd.noDisplay();

  } else if (show == 5) {
    lcd.clear();
    lcd.print("Display On");
    lcd.display();

  } else if (show == 7) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("*** first line.");
    lcd.setCursor(0, 1);
    lcd.print("*** second line.");

  } else if (show == 8) {
    lcd.scrollDisplayLeft();
  } else if (show == 9) {
    lcd.scrollDisplayLeft();
  } else if (show == 10) {
    lcd.scrollDisplayLeft();
  } else if (show == 11) {
    lcd.scrollDisplayRight();
  } // if

  delay(2000);
  show = (show + 1) % 12;
} // loop()



TEST ZEGARA SZKIC DRUGI: (z jakiegoś powoidu ten test nie wchodzi)

/*
 test_RTC1302.ino
 Il programma verifica il funzionamento del modulo MH-Real-Time
 Clock Module 2 mostrando data e ora su Monitor seriale o
 Display LCD 16x2 collegato tramite interfaccia I2C
 Basato su libreria di Henning Karlsen
 web:
http://www.RinkyDinkElectronics.com/

 Sono utilizzati i seguenti pin
 Pin +5V           -> Alimentazione modulo display e RTC
 Pin GND           -> GND modulo modulo display e RTC
 Pin Digital 2     -> Pin CE - RST modulo RTC
 Pin Digital 3     -> Pin I/O - DAT modulo RTC
 Pin Digital 4     -> Pin CLCK - CLK modulo RTC
 Pin Analogic A4   -> Pin SDA display
 Pin Analogic A5   -> Pin SCL display

 Creato il 15/12/2016 da Adriano Gandolfo
 Sito web http://www.adrirobot.it
 Blog http://it.emcelettronica.com/author/adrirobot
 Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
 Istagram https://www.instagram.com/adrirobot/
 This example code is in the public domain.
*/

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

// Creazione oggetto RTC
DS1302 rtc(2, 3, 4);

// Creazione dell'oggetto LCD
// Imposta l'indirizzo LCD 0x27 per un display a 16 caratteri e 2 linee


LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
 // Imposta RTC in run-mode e disabilita la protezione da scrittura
 rtc.halt(false);
 rtc.writeProtect(false);

 // Imposta la comunicazione seriale
 Serial.begin(9600);

 // inizializza il display
 lcd.init();
 lcd.backlight();//accende la retroilluminazione

 // Le seguenti linee possono essere commentate per
 //utilizzare i valori già memorizzati nel DS1302

 //rtc.setDOW(SUNDAY);        // Imposta il giorno della settimana a SUNDAY
 //rtc.setTime(11, 32, 0);     // Imposta l'ora come 11:32:00 (Formato 24hr)
 //rtc.setDate(12, 2, 2017);   // Imposta la data cone 12 febbraio 2017
}

void loop()
{
 // Invia giorno della settimana
 Serial.print(rtc.getDOWStr());
 Serial.print(" ");

 // Invia data
 Serial.print(rtc.getDateStr());
 Serial.print(" -- ");

 // Invia ora
 Serial.println(rtc.getTimeStr());

 // Scrive i valori sul display LCD
 lcd.clear();//cancella precedenti valori
 data (); // Scrive su LCD la data
 ora (); // Scrive su LCD l'ora

// Aspetta un secondo prima di ripetere
 delay (1000);
}

void data ()
{
 lcd.setCursor(0, 0);
 lcd.print(rtc.getDOWStr());
 lcd.print(" ");
 lcd.print(rtc.getDateStr());
}

void ora()
{
 lcd.setCursor(0, 1);
 lcd.print(rtc.getTimeStr());
}
 
Odpowiedź
#6
kolejny kod który wchodzi i pokazuje czas w monitorze portu

// DS1302_Serial_Easy ©2010 Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
// A quick demo of how to use my DS1302-library to
// quickly send time and date information over a serial link
//
// I assume you know how to connect the DS1302.
// DS1302: CE pin -> Arduino Digital 2
// I/O pin -> Arduino Digital 3
// SCLK pin -> Arduino Digital 4

#include <DS1302.h>

// Init the DS1302
DS1302 rtc(2, 3, 4);

void setup()
{
// Set the clock to run-mode, and disable the write protection
rtc.halt(false);
rtc.writeProtect(false);

// Setup Serial connection
Serial.begin(9600);

// The following lines can be commented out to use the values already stored in the DS1302
rtc.setDOW(FRIDAY); // Set Day-of-Week to FRIDAY
rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format)
rtc.setDate(6, 8, 2010); // Set the date to August 6th, 2010
}

void loop()
{
// Send Day-of-Week
Serial.print(rtc.getDOWStr());
Serial.print(" ");

// Send date
Serial.print(rtc.getDateStr());
Serial.print(" -- ");

// Send time
Serial.println(rtc.getTimeStr());

// Wait one second before repeating Smile
delay (1000);
}
 
Odpowiedź
#7
Witam,
Szkic drugi odsługuje zarówno wyświetlacz, jak i moduł RTC. Potrzebujesz jedynie zainstalować sobie bibliotekę "LiquidCrystal_I2C.h",  z której korzysta chyba większość użytkowników LCD z modułem I2C.  Spróbuj skorzystać z tej biblioteki zamiast z "LiquidCrystal_PCF8574.h".
Sprawdź też adres wyświetlacza, czy jest to 0x27, czy też 0x3f ?
Pozdrawiam,
Tomek.
 
Odpowiedź
#8
Biblioteki są po instalowane nawet więcej jak jest potrzebne. Adres wyświetlacza to 0x3F ten drugi szkic nie wchodzi z jakiegoś powodu a wcześniej wchodził bo to test ze strony internetowej. rozkładam ręce. Łukasz.
 
Odpowiedź
#9
Witam,
Przecież każda dobra biblioteka posiada przykładowe kody. Czy możesz zamieścić działający kod dla LCD i działający kod dla rtc?
Pozdrawiam
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości