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.
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.
``````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.
Witam,
Zamieść kod.
Pozdrawiam,
Tomek
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());
}
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
delay (1000);
}
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.
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.
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
Miałem jakieś kody zapisane ale one przestały wchodzić z jakiegoś powodu...
Postanowiłem ze wezmę korepetycje z tego zakresu, pozdrawiam i napisze jak uruchomię wyświetlacz z zegarem.
Łukasz