Habe ein Sketch zusammen gestellt, da möchte gerne 7 Temperaturen für 7
Heizungskreise mit DS18B20, Digitale Temperaturfühler, auf ein
Display anzeigen lassen, da diese nicht alle gleichzeitig angezeigt
werden können (dieser läuft auch). Jetzt möchte ich diese gerne mit
einem Taster oder Schalter an irgend einer Stelle stoppen, danach wieder
an dieser Stelle weiter laufen lassen. Zum Beispiel, es wird die 3
Temperatur anzeigt, diese möchte ich mir länger anzeigen lassen, dafür
den wollte ich den Taster oder Schalter am Pin 11 anschließen und
betätigen, danach sollten die Temperaturen weiter angezeigt werden.
Eine LED als Meldung hatte ich mir dazu auch gedacht. Leider bin ich
Anfänger,hab mir aber dieses schon als Ziel gesetzt, komm aber zw.
Taster bzw. Schalter nicht weiter, weiß nicht wie dies dort einbinden
kann. Vielleicht kann mir da jemand helfen wäre euch dafür dankbar.
Habe auch dort eine Durchflussmesser für das Heizungswasser schon mit
drin.
Ich hoffe das man die X.ino Datei von Arduino sehen kann.
Mein jetzige Sketch sieht so aus:
1
2
#include<Wire.h> // Wire Bibliothek hochladen
3
#include<DHT.h> // Library für DHT Sensor (Durchfluss Sensor)aufrufen
4
#include<OneWire.h>
5
#include<DallasTemperature.h> // Bibliothek für DS18B20
Wende Dich direkt an das Arduino Forum-das ist in gewissen Grenzen
Anfängerkompatibel und hat eher eine Symphatie für den Arduino.
Allerdings musst Du Dich dazu anmelden:
https://forum.arduino.cc/c/international/deutsch/47
Hambach schrieb:> Mein jetzige Sketch sieht so aus
Bitte die paar Zeilen über der Texteingabebox lesen und danach handeln
und einfach die "ino" Datei anhängen, statt seitenlangen Code in den
Text reinzukopieren.
Vielleicht sollte man doch erst die Grundlagen der Programmierung
lernen.
Programmieren ist mehr als Copy&Paste.
Es gibt immer noch Einsteigerbücher über C/C++, die man durcharbeiten
kann. Das erfordert allerdings etwas Aufwand.
Hambach schrieb:> komm aber zw.> Taster bzw. Schalter nicht weiter, weiß nicht wie dies dort einbinden> kann.
in der IDE gibt es das Beispiel
Digital / StateChangeDetection
das zeigt dir wie du einen Taster auslesen kannst.
Weiter empfehle ich dir das Beispiel
"BlinkWithoutDelay"
durchzugehen damit du keine delays mehr benötigst.
Grundsätzlich wirst du dir einen Ablauf überlegen müssen, in welchen
Phasen soll was auf welchem LCD dargestellt werden. Hier hilft dann
vermutlich eine Finite State Machine etwas Ordnung in das Programm zu
bringen.
Und offenbar hast am Pin12 auch noch was hängen dass du messen willst
(und Anzeigen?). Darüber könntest auch noch was schreiben, denn das
wirst vermutlich auch umbauen müssen.
Lothar M. schrieb:> Bitte die paar Zeilen über der Texteingabebox lesen und danach handeln> und einfach die "ino" Datei anhängen, statt seitenlangen Code in den> Text reinzukopieren.
Hat er ja gemacht, doppelt hält besser ;-)
Hambach schrieb:> Ich hoffe das man die X.ino Datei von Arduino sehen kann.
Kann man. Aber die Formatierung deines Quelltextes ist sehr schlecht,
vor allem die Einrückung. Da sieht keiner durch!
Strukturierte Programmierung auf Mikrocontrollern
Dein Problem ist ein Standardproblem und wird demzufolge mit einer
Standardlösung einfach und gut gelöst. Siehe Multitasking und
Entprellung.
Hambach schrieb:> if (digitalRead(tasterPin)==HIGH){
Ne, das ist ne völlige Sackgasse.
Fürs Tasten einlesen gibt es den Debounce Befehl.
Ein leistungsfähiges Debounce macht man mit dem Timerinterrupt.
Hambach schrieb:> Vielleicht kann mir da jemand helfen
Bau keine so langen delays in deine loop ein.
Die loop soll den Taster einlesen und ein zeitliches Gerüst bilden, aber
nicht so langsam laufen wie die Anzeige wechselt.
So ganz verstanden hab ich nicht, wann deine LED leuchten soll. Während
der Taster runtergedrückt ist oder während Anzeigestop. Ich hab
letzteres implementiert.
Wichtig also: kein delay(200) oder delay(1000) in deiner loop.
Wie hast du den Taster angeschlossen? Pull-down/up? Sonst mit
INPUT_PULLUP bei pinmode setzen.
Deine Tastenabfrage kannst Du nach der Ausgabe einer Temperatur (Küche)
einbauen, dort wo
delay(1000); // 1 Sec. Warten
steht
Allerdings prellen Taster immer, was zu Problemen bei der Erkennung
führen kann.
https://docs.arduino.cc/built-in-examples/digital/Debounce
Am besten, du gehst einen Schritt zurück und schreibst erst einmal ein
kleines Programm, das Text ausgibt und auf Tasteneingaben wartet. Ohne
den ganzen Temperatur-Kram. So zum kennen*lernen*
Erst mal vielen Dank für Deine schnelle Rückmeldung, hatte nie gedacht
das man so schnell eine Rückmeldung erhält bzw. Hilfe bekommt. Mache
dieses zum ersten mal.
Ja die LED sollte an sein solang die Anzeige gestopt ist.
Heißt das, was ich alles mit dem Taster und LED eingetragen habe weg
lassen soll, und dieses was du schreibet an einer Stelle einbinden soll?
Bin jetzt immer zuhause, da muss man sich mit etwas beschäftigen, aber
maches fällt einem etwas schwer, und man möchte ja auch gerne zum Ziel
kommen.
Ohne dem Taster und LED klappt es ja schon, auch wenn es nicht gerade
Professionell aussieht. Bin halt kein Profi.
Hambach schrieb:> Bin halt kein Profi.
Dennoch kannst du die unnötigen Leerzeilen aus deinem Sketch entfernen
und den richtig lesbar formatieren. Das Formatieren geht in der Arduino
IDE sehr einfach mit StRg + T.
Danach ist der sicher besser lesbar.
Hambach schrieb:> Heißt das, was ich alles mit dem Taster und LED eingetragen habe weg> lassen soll, und dieses was du schreibet an einer Stelle einbinden soll?
Das ist die Idee. Sinnvoll kompinieren.
Das ist schon richtig was du sagst, hab es aber jetzt für mich erst mal
so gemacht, das enprodukt sollte sauber sein. Dazu möchte ich ja auch
kommen, dann läuft es bestimmt auxch schneller.
Danke Brain, sieht jetzt schon anders aus. Hab auch mal die
Programmierungen von mir, Taster und LED raus genommen. Muss dannmal
sehen wo und wie ich das vom MaWin einbauen kann.
Anbei nochmal den Sketch ohne Taster und Led nachdem ich mit StRg+T
Formartiert habe. Taster wollte ich dann z.B. am Pin D3 und die LED an
z.B. D4 anschließen. LED sollte bei Stop an sein. Es kann aber auch ein
Schalter sein, da hätte man ja nur 0 oder 1 Signal ohne Prellung mein
ich. 0 = Anzeige läuft immer durch und mit 1 bleibt die Anzeig stehen.
Bei 0 läuft sie dann weiter. Nur dieses weiß ich nicht in den Sketch
einzubauen. Einen Taster oder Schalter mit einer LED habe ich
Programmiert, hab ich mit Arduino-Übungen schon gemacht, das hier ist
aber für mich schon was anderes, weil man in einen anderen Zyklus
eingreift, und das hab ich in Arduino zum erlernen nicht gefunden, zu
mindest für mich nicht verständlich.