Pages: [1]   Go Down
Author Topic: Problem mit I2C display und I2C RTC  (Read 1346 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hallo liebe leute smiley

ich hab seit 3 tagen:
======================================================
- Arduino mega 2560 Rev3

- I2C LCD 2004 (16x4)

- ds18b20

- Real Time Clock Module DS1307 <-- ebenfalls I2C

- DFRduino Ethernet Schield

- und noch GAAANNZ viel andres zeug^^ (eher unwichtig smiley-grin)
======================================================

und leider n paar problemchen:

1. Problem: (GELÖST!! auf ca. 10ms delay gebracht smiley)
======================================================

ich habe 4 buttons die derzeit zum testen 4 leds beim drücken an und wenn ich los lass wieder ausschalten!

dabei habe ich noch gleichzeitig den display am laufen der die aktuelle temp anzeigt!

wenn ich jetzt ein button drücke passiert es jedesmal wenn er im loop-bereich vom temp auslesen ist für ca. 1-2 sekunden stehn bleibt und dann erst weiter macht!

was ich gern hätte ist das die temp im hintergrund ausgelesen wird und nicht andere sachen hintert!

derzeit hab ichs so eingestelt das er nur alle 5 sekunden die temp ausliest und in den 5 sekunden kann ich halt alles machen was ich will... sobalt halt die 5 sekunden um sind hängts wieder für 1-2 sekunden und geht wieder weiter...

weiß einer einen weg das so zu lösen wie ich will?? also das temp im hintergrund ausgelesen wird und NICHT das script praktisch "stoppt"?
======================================================

2.problem :-/
======================================================
da ich ja das display an sda und scl angeschlossen habe für das I2C (protokoll??) und noch einen RTC habe der auch mit sda und scl angeschlossen werden soll (wegen I2C) frage ich mich wie das geht wenn es nur 1 mal sda und 1 mal scl gibt :-/

WIE GESAGT DAVOR NOCHNIE WAS MIT ARDUINO AM HUT GEHABT smiley-grin

Vielleicht kann mir da einer weiter helfen smiley
======================================================

Achja das was ich da "bastel"^^ wird hoffentlich bald eine aquarien-steuerung

Falls jemand bilder braucht oder den derzeitigen code einfach bescheid sagen smiley


DANKE an alle die sich die mühe machen

lieben gruß aus Bayern AndiIsl



EDIT:

also hab ein wenig im internet geguckt und weiß jetzt warum das temp auslesen wie ein delay ist!

der ds18b20 braucht 750ms um einen wert auszulesen und das steht in der dallastemperatures.ccp drinn:

       case 9:
         delay(94);
         break;
       case 10:
         delay(188);
         break;
       case 11:
         delay(375);
         break;
       case 12:
       default:
         delay(750);
         break;


wie kann ich diese 750ms umgehen??

im dallastemperatures.ccp die 750ms durch blinkwithoutdelay ersetzten? geht das??

oder kann ich in meinem script irgendwas schreiben das er nicht darauf wartet bis der wert verfügbar ist?


EDIT2:

habs geschafft!! hab die DallasTemperature.cpp und die DallasTemperature.h geändert und jetzt gibts kein delay mehr smiley))))) jede sekunde frag ich die temp ab und das dauert nicht mehr als ~ 10ms (natürlich kann ich das nicht genau messen aber der buzzer macht nur GAANNZ kurz pause! damit halt ichs aus smiley-grin

falls einer doch noch weiß wie ich die 10ms auch noch wegbekomm wär ich ihm sehr dankbar! vill brauch ich ja sowas ähnliches bei einer anderen funktion! und ich will ja schließlich auch was dabei lernen^^
« Last Edit: March 18, 2012, 11:42:14 pm by AndiIsl » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20281
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I2C ist ein BUS. Da schaltest Du einfach alle Teile paralell an. Achtung: je länger der BUS wird und je mehr Geräte an BUS hängen desto kleiner müssen die Pullupwiderstände sein.
Grüße Uwe
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I2C ist, wie Uwe bereits sagte, ein Bussystem. Es handelt sich hierbei um ein Master-Slave-Konzept. Es gibt (meist)1 einen Master (hier der Arduino bzw. dessen Mikrocontroller) und einen oder mehrere Slave(s). In deinem Fall sind es 2 Slaves, die jeweils an SDA und SCL angeschlossen werden. Die Kommunikation basiert auf der Adressierbarkeit der einzelnen Slaves, da diese Adressierung 7bit lang ist, sind theoretische 128 Slaves möglich. In der Realität sind es sogar noch weniger, weil einige Adressen bereits vorbelegt sind.

1Ein Multimaster-Mode ist ebenfalls möglich, kommt aber im Hobbybereich ausgesprochen selten vor.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20281
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Um genau zu sein sind maximal 127 Slaves möglich, da die Adresse 0 für den Master reserviert ist.
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

WOW dankeschön smiley also besser kann mans nicht erklärn! komisch nur das ich nichts in google gefunden habe.. :-P

weiß jetzt noch einer wie man diese 10ms warten wegbekommt? smiley-grin

danke nochmals ohne uwe und sth77 würd ich immernoch dumm gucken smiley-grin
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20281
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich glaube diese 10mS bekommst Du nicht weg. Das ist die Zeit die die Bibiothek braucht. Du mußt Dir die Bibiothek anschauen oder auf einen anderen Temperatursensor ausweichen.
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

die 10 ms sind schon weg smiley-grin jetzt gibts keine wartezeit mehr <3 <3 <3 smiley-grin

anderes problem:

1.
===================================================
ich habe so komische kerülische zeichen bei der uhrzeit auf dem Display:





woher kommen die und wie bekomm ich die weg?
===================================================

2.
===================================================

wenn ich diese relais alle an hab:

dann wird dieses bauteil:


EXTREM HEISS!! ich steck dann nach 10-20 sekunden gleich wieder aus weils wirklich nichtmehr anfassbar ist!

mein netzeil: 12V max 1.5A

vill weiß einer wieso das so ist und wie man das machen kann das es nichtmehr so ist!
=========================================================

danke schonmal!! smiley) hilft ja immer total schnell hier


Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20281
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dieses heiße Bauteil ist der 5V Spannungsstabilisator. Versorg den Arduino über einen externen Spannungstabilisator mit 5V.
Die komischen Zeichen kommen daher, daß Du nicht die ashii Kode sonden die Zahl des Datumms überträgst.
Grüße Uwe 
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hm und wie stell ich das um mit dem ascii ???

kann ich das netzteil dann an den netzteil stecker drann stecken oder soll ich da ein usbkabel drann löten??

smiley danke für deine antwort
Logged

Pages: [1]   Go Up
Jump to: