hallo liebe leute
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 :D)
======================================================
und leider n paar problemchen:
- Problem: (GELÖST!! auf ca. 10ms delay gebracht )
======================================================
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
Vielleicht kann mir da einer weiter helfen
Achja das was ich da "bastel"^^ wird hoffentlich bald eine aquarien-steuerung
Falls jemand bilder braucht oder den derzeitigen code einfach bescheid sagen
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 :)))))) 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
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^^