Forum

Einloggen | Registrieren | RSS  

RR

E-Mail

25.06.2019,
17:21
 

Nano, I2C, LCD geht nicht (Elektronik)

Hallo!
Nachdem ich im Arduino-Forum gescheitert bin, einen neuen Thread zu erstellen, stelle ich mal meine Frage hier. Ein Nano (China) ist via I2C mit einer DS3231 und einem 16-2 Lcd Display verbunden, die Uhr geht, das Display nicht. Mit UNO funktioniert beides, auch mit dem Chinaclone-UNO. Der Nano geht nur mit dem alten Bootloader.
Hier mal das Programm (Datum und Zeit wird 3 s dargestellt, dann 3s die aktuelle Temperatur sowie die höchste und tiefste seit dem letzten Reset. Das Display ist von der Art, für die es bei YouTube zig Anleitungen gibt...einen Namen hat es nicht.

#include <Wire.h>
#include "RTClib.h"
//#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);
RTC_DS3231 rtc;
int T = A0; //Eingang für Temperatur

float TempMin = 100.0;
float TempMax = -50.0;
float Tempi;
float volt;
float TempC;


void setup() {
// put your setup code here, to run once:
pinMode(T, INPUT);
Serial.begin(57600);
lcd.begin(16,2);

delay(3000); // wait for console opening
lcd.clear();
lcd.setCursor(0,0);

if (! rtc.begin()) {
Serial.println("Couldn't find RTC";);
while (1);
}


}

void loop() {
// put your main code here, to run repeatedly:
DateTime now = rtc.now();


Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
//Serial.print(" (";);
//Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
//Serial.print(";) ";);
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
lcd.clear();
lcd.setCursor(2,0);
lcd.print(now.day(), DEC);
lcd.setCursor(5,0);
lcd.print(now.month(), DEC);
lcd.setCursor(8,0);
lcd.print(now.year(), DEC);
lcd.setCursor(3,1);
lcd.print(now.hour(), DEC);
lcd.setCursor(6,1);
lcd.print(now.minute(), DEC);
lcd.setCursor(9,1);
lcd.print(now.second(), DEC);


delay(3000);


Tempi = analogRead(0);
volt = Tempi*5.0/1023.0;
TempC = (volt - 1.375) / 0.0225;
if(TempC <= TempMin)
{
TempMin = TempC;
//TempMin = String(Tempi);
}



if(TempC >= TempMax)
{
TempMax = TempC;
//TempMax = String(Tempi);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp:";);
lcd.setCursor(0,1);
lcd.print("MiMa:";);
lcd.setCursor(7,0);
lcd.print(TempC,1);
lcd.setCursor(5,1);
lcd.print(TempMin,1);
lcd.setCursor(11,1);
lcd.print(TempMax,1);
Serial.print(TempC);
delay(3000);

}
Ich hoffe mal, Bastelix liest mit... Gruß RR

RR

E-Mail

26.06.2019,
13:16

@ RR

Schlußbemerkung

Problem gelöst, es war der Spannungswandler, ausgelötet und alles geht.
Erstaunlich nur, daß RTC und Display die Keule von 11,5 Volt vertragen haben.......

Gruß RR

Nils

E-Mail

26.06.2019,
09:35

@ RR

Nano, I2C, LCD geht nicht

Moin.
Ich hatte mit einem I"C-Display am Arduino ebenfalls Probleme.
Irgendwann habe ich mir das Display mal genauer angeschaut und gesehen das dort der PCF8574A anstelle des PCF8574 verwendet wurde. Abweichend von den Angaben des Verkäufers.
Der PCF8574A hat aber eine andere I²C-Basisadresse (siehe Datenblatt)
Ich hoffe das hilft.
Gruß
Nils

xy(R)

E-Mail

25.06.2019,
23:16

@ RR

Nano, I2C, LCD geht nicht

» » » » LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);
» » »
» » » für ein I2C Display ein wenig viel Paramter
» » » https://funduino.de/nr-19-i%C2%B2c-display
» »
» » Zweifellos!
» »
» » LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);

» hatte ich so aus einem Beispiel übernommen.

Schau doch mal in deiner Library nach der Definition.

RR

E-Mail

25.06.2019,
23:07

@ xy

Nano, I2C, LCD geht nicht

» » » LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);
» »
» » für ein I2C Display ein wenig viel Paramter
» » https://funduino.de/nr-19-i%C2%B2c-display
»
» Zweifellos!
»
» LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);
hatte ich so aus einem Beispiel übernommen.

RR

E-Mail

25.06.2019,
23:03

@ finni

Nano, I2C, LCD geht nicht

» » Hab übrigens 2 Displays ausprobiert, bei beiden das gleiche.
»
» Könnte sein, dass beide Bibliotheken gleiche Timer verwenden. Dann wäre
» eine Hardware nicht funktionsfähig.
nein
» Wirklich unterschiedliche I²C-Adressen verwendet?
ja

RR

E-Mail

25.06.2019,
22:32

@ xy

Nano, I2C, LCD geht nicht

» » oder direkt am Bus?
»
» Ja.
Was es nicht alles gibt: Hab das Ding mit externer Spannung versorgt - Vcc ist = dieser Spannung.
Also ist wohl der Wandler auf 5V defekt, aber mit 5V aus dem USB ging es ja auch nicht.
Eine Busfrequenz bei dem kaputten konnte ich nicht feststellen, da war gar nix, beim heilen etwa 100kHz,
wie Du schon sagtest. Ich schmeiß morgen mal den 7805-Clon raus und schau, was dann mit 5V passiert.
Danke erstmal RR

RR

E-Mail

25.06.2019,
21:57

@ xy

Nano, I2C, LCD geht nicht

» » oder direkt am Bus?
»
» Ja.
kleinen Moment, muß erstmal alles wieder in den Keller räumen zum Messen.

finni(R)

25.06.2019,
21:53

@ RR

Nano, I2C, LCD geht nicht

» Hab übrigens 2 Displays ausprobiert, bei beiden das gleiche.

Könnte sein, dass beide Bibliotheken gleiche Timer verwenden. Dann wäre eine Hardware nicht funktionsfähig.
Wirklich unterschiedliche I²C-Adressen verwendet?

xy(R)

E-Mail

25.06.2019,
21:48

@ gast

Nano, I2C, LCD geht nicht

» » LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);
»
» für ein I2C Display ein wenig viel Paramter
» https://funduino.de/nr-19-i%C2%B2c-display

Zweifellos!

LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);

gast

25.06.2019,
21:44

@ RR

Nano, I2C, LCD geht nicht

» Hallo!
» Nachdem ich im Arduino-Forum gescheitert bin, einen neuen Thread zu
» erstellen, stelle ich mal meine Frage hier. Ein Nano (China) ist via I2C
» mit einer DS3231 und einem 16-2 Lcd Display verbunden, die Uhr geht, das
» Display nicht. Mit UNO funktioniert beides, auch mit dem Chinaclone-UNO.
» Der Nano geht nur mit dem alten Bootloader.
» Hier mal das Programm (Datum und Zeit wird 3 s dargestellt, dann 3s die
» aktuelle Temperatur sowie die höchste und tiefste seit dem letzten Reset.
» Das Display ist von der Art, für die es bei YouTube zig Anleitungen
» gibt...einen Namen hat es nicht.

» LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);

für ein I2C Display ein wenig viel Paramter
https://funduino.de/nr-19-i%C2%B2c-display

xy(R)

E-Mail

25.06.2019,
21:32

@ RR

Nano, I2C, LCD geht nicht

» oder direkt am Bus?

Ja.

RR

E-Mail

25.06.2019,
21:14

@ xy

Nano, I2C, LCD geht nicht

» » » » PCF8574
» » »
» » » Also max 100kHz I2C Takt.
» » »
» » » Oszi wird wohl keines zur Verfügung stehen?
» »
» » doch, das schon. Aber sind die so schnell?
»
» Miss doch einfach den Takt.
meinst Du an Pin 17 am 328?
oder direkt am Bus?

xy(R)

E-Mail

25.06.2019,
21:07

@ RR

Nano, I2C, LCD geht nicht

» » » PCF8574
» »
» » Also max 100kHz I2C Takt.
» »
» » Oszi wird wohl keines zur Verfügung stehen?
»
» doch, das schon. Aber sind die so schnell?

Miss doch einfach den Takt.

RR

E-Mail

25.06.2019,
21:06

@ xy

Nano, I2C, LCD geht nicht

» » PCF8574
»
» Also max 100kHz I2C Takt.
»
» Oszi wird wohl keines zur Verfügung stehen?

doch, das schon. Aber sind die so schnell? Hatte eine Störung auf dem Analogeingang syncron mit dem Bus,
die war aber nur bei 10 kHz.

RR

E-Mail

25.06.2019,
21:02

@ xy

Nano, I2C, LCD geht nicht

» » » » Nu gehts, bleibt die Frage, warum geht die Uhr und das Display
» nicht?
» » » » Kann das mit einer - zu - falschen Taktfrequenz zu tun haben?
» » »
» » » Schon möglich. Was wird denn als I2C-->parallel Wandler verwendet?
» » keine Ahnung, auf der Platine ist ja nur der Atme 328Pl und der ominöse
» » CH340/341
»
» Am Display! Was wird *dort* verwendet?

Es ist halt so, wer glaubt, für 1,95 einen guten Wein zu bekommen, der gehört vergiftet.
Und drei Nanos für 9,50 ? Muß man halt einen wegschmeißen.
Hab übrigens 2 Displays ausprobiert, bei beiden das gleiche.