Hallo zusammen, ich bin nun seit 5 Tagen, in Vollzeit, am Grübeln und ausprobieren wie ich meine Schaltung in den Griff bekomme. Da ich mich erst seit dieser Zeit mit dem Arduino und seiner Programmierung beschäftige habe ich schnell meine Grenzen aufgezeigt bekommen. Viele von euch werden das Programm in kürzester Zeit geschrieben haben und ich sitze bis Silvester noch da. Also bitte ich euch mir zu helfen. Folgendes Programm möchte ich verwenden: • Steuerung bestromt= keine Aktion; • Über Tastendruck = Relais 1 für 10 min einschalten; LOW; LED leuchtet 10min. mit bis Ende; • Nach 30 sek. Umpolung = Relais2 + 3 gleichzeitig einschalten; LOW • Nach 30 sek. Umpolung = Relais2 + 3 gleichzeitig ausschalten; HIGH • Das Ganze 10x, bis die 10 min abgelaufen sind; • Ende Sieht so einfach aus aber ich beiße mir die Zahne aus. Ein Bild als Anhang ist dabei. Die Wechselschaltung, auf der Hochstromseite, über die drei Relais, habe ich im Griff, es geht mir nur um das Ansteuern der Relais mit einem Taster. Sketch will ich erst gar nicht posten weil dieser nur bis zum ersten Schalten des Relais1 funktioniert. Ich danke euch schon jetzt für euren Einsatz.
Wolfgang K. schrieb: > Folgendes Programm möchte ich verwenden: > ... Mache einfach einen Zustandsautomaten draus, d.h. jeder Schaltzustand bekommt z.B. eine Nummer und (in deinem Fall) eine bestimmte Laufzeit, nach der du dein System in den nächsten Zustand wechselst und die neue Laufzeit startest. Eine absolute Zeit erfährst du beim Arduino z.B. über die Funktion millis(). https://www.arduino.cc/en/Reference/Millis Zu Anfang eines Zustandes berechnest du die Endzeit aus millis()+Laufzeit. In Loop vergleichst du zu Anfang diese Endzeit immer mit der aktuellen Zeit millis() und gehst, sobald millis() größer wird in den nächsten Zustand mit neuer Endzeit. Damit läufst du zyklisch deine Zustände durch. Die Laufzeiten kannst du z.B. in einem const-Array festlegen.
Schau dir das Beispiel BlinkWithoutDelay an. Damit kannst du dir die verschachtelten Zeiten aufbauen.
Danke, Ihr seid ja schnell. Das ist ein guter Tipp, aber besser für mich währe der Sketch. Ich weiß ich bin hier nicht im Wünscheerfüllertred aber ich denke das ich das so nicht hin bekomme. Wie gesagt habe ich schon einiges probiert aber bei mir hackts am zu vielen Ecken. Ich weiß nicht in welcher abfolge ich das Programm im LOOP schreiben muss, damit erst das eine und dann die beiden anderen Relais schalten sollen. Wo muss welche Klammer hin usw. Bitte helft mir dabei, vielleicht gibt es den schon im Netz, ich finde ihn aber nicht.
Ich will es ja lernen. Hier mein erster Sketch der funktionierte, allerdings ohne das zweite und das dritte Relais: int taster=7; //Das Wort „taster" steht jetzt für den Wert 7. int tasterstatus=0; //Das Wort „tasterstatus" steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster gedrückt ist oder nicht. int relais1=1; //int relais2=2; //int relais3=3; void setup() //Hier beginnt das Setup. { pinMode(taster, OUTPUT); //Der Pin mit der LED (Pin7) ist jetzt ein Eingang INPUT pinMode(relais1, INPUT); //Der Pin mit dem Relay1 (Pin1) ist jetzt ein Eingang OUTPUT } void loop() // Die Endlosschleife { tasterstatus=digitalRead(taster); if (tasterstatus == HIGH) // HIGH { digitalWrite(relais1, LOW); // dann soll das Relais schalten, LOW delay (10000); // und zwar für für X Sekunden digitalWrite(relais1, HIGH); // danach soll das Relais nicht schalten, HIGH //delay (500); } } Dann habe ich versucht das zweite Relais anzusteuern das mir nicht gelingt: int taster=7; //Das Wort „taster" steht jetzt für den Wert 7. int tasterstatus=0; //Das Wort „tasterstatus" steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster gedrückt ist oder nicht. int relais1=1; int relais2=2; void setup() //Hier beginnt das Setup. { pinMode(taster, INPUT); //Der Pin mit der LED (Pin 7) ist jetzt ein Eingang INPUT pinMode(relais1, OUTPUT); //Der Pin mit dem Relay1 (Pin 1) ist jetzt ein Eingang OUTPUT pinMode(relais2, OUTPUT); } void loop() { tasterstatus=digitalRead(taster); if (tasterstatus == HIGH) //Taster drücken,HIGH { digitalWrite(relais1, LOW); //danach soll das Relais X schalten, LOW delay (3000); //und zwar für für X Sekunden digitalWrite(relais2, HIGH); //danach soll das Relais X nicht schalten delay (1000); //und zwar für für X Sekunden digitalWrite(relais2, LOW); //dann soll das Relais nicht schalten delay (1000); //und zwar für für X Sekunden digitalWrite(relais1, HIGH); //dann soll das Relais nicht schalten HIGH } Über den Taster wird das Programm gestartet. Funktioniert auch, das erste Relais schaltet. Über den PIN 7 Input wird dem Relais gesagt das es schalten soll. Wie wird dem zweiten Relais gesagt, "schalte nach dem Programmstart nach 30 sek. für 30 sek.", dabei soll aber das Relais1 weiter geschaltet bleiben für X min.
Probier es mal damit. Ist nicht schön, aber du kannst damit weitermachen. Die Zeiten musst du noch ändern, jetzt sind es nur 3sec. Die Relaispin sind geändert und die Taste schaltet nach GND.
:
Bearbeitet durch User
Super erst mal Danke. Das Relais 1 und 2 Schalten, soviel habe ich schon gesehen. Hab es sofort ausprobiert. Was ich noch nicht verstehe ist das mit den Taster wie und wo soll ich den jetzt anschließen (hardwaremäßig) Danke und nochmal Danke für deine Hilfe. Werde mich bestimmt noch mal melden
Wolfgang K. schrieb: > Wo muss welche Klammer hin usw. ... Das wirst du lernen müssen. Der Kompiler wird viel syntaktisch korrekten Mist annehmen, der aber etwas anderes tut, als du möchtest. Hubert G. schrieb: > Probier es mal damit. > ... Das bringt die Sache keinen vernünftigen Schritt weiter. Die Betonung liegt auf "vernünftig", weil mit den delay()-Aufrufen der Prozessor blockiert wird und damit jegliche andere Programmfunktionen verhindert bzw. mindestens unnötig kompliziert werden, IMHO eine Lernsackgasse oder besser ein schlechtest Beispiel, gerade gut genug, um daraus zu lernen, wie man es nicht machen soll.
Und wie macht man es besser? Kritik ist gut und man kann daraus lernen, wenn man dazu aber nichts schreibt kann keiner davon Profitieren oder was meinst du? W.A. schrieb: > Wolfgang K. schrieb: >> Wo muss welche Klammer hin usw. ... > > Das wirst du lernen müssen. Der Kompiler wird viel syntaktisch korrekten > Mist annehmen, der aber etwas anderes tut, als du möchtest. > > Hubert G. schrieb: >> Probier es mal damit. >> ... > > Das bringt die Sache keinen vernünftigen Schritt weiter. Die Betonung > liegt auf "vernünftig", weil mit den delay()-Aufrufen der Prozessor > blockiert wird und damit jegliche andere Programmfunktionen verhindert > bzw. mindestens unnötig kompliziert werden, IMHO eine Lernsackgasse oder > besser ein schlechtest Beispiel, gerade gut genug, um daraus zu lernen, > wie man es nicht machen soll. Kritik ist gut und man kann daraus lernen, wenn man dazu aber nichts schreibt kann keiner davon profitieren oder was meinst du?
Wolfgang K. schrieb: > Was ich noch nicht verstehe ist das mit den Taster wie und wo soll ich > den jetzt anschließen (hardwaremäßig) Der Taster muss nach GND schalten. Daher steht auch pinMode(taster, INPUT_PULLUP); Damit wird der interne PullUp Widerstand aktiviert der den Eingang auf HIGH hält. Mit Tastendruck geht der Eingang auf LOW. Daher auch die Abfrage if (tasterstatus == LOW)
Jetzt das noch mal ohne delay und komprimieren könnte man es wahrscheinlich auch noch.
Super erst mal vielen Dank. Verstehe ich es richtig! Der Taster bekommt am Eingang den Draht auf dem Breadboard gesteckt, der zu PIN 8 führt und der Ausgang des Tasters, bekommt den Draht auf dem Breadboard gesteckt, der zum GND auf der Seite der PWM's führt? Das Bild zeigt meine Alte Schaltung (Hardware)! Ich kann also mit deiner Schaltung die auf dem Bild gezeigten Widerstände weg lassen, so verstehe ich das? Die Diode habe ich nur zur Kontrolle gesteckt, ob der Taster gedrückt wurde. Diese leuchtet nur so lange wie ich den Taster unten halte. Währe aber super wenn der während des Programmlaufs immer leuchten würde! Ist aber nicht so wichtig.
Hubert G. schrieb: > Jetzt das noch mal ohne delay und komprimieren könnte man es > wahrscheinlich auch noch. Habe noch ein Bild vom Arduino mit deiner Pin- Belegung. 7 geht zum Taster eingang und GND zum Taster Ausgang auf dem Breadboard. Habe ich es richtig gemacht?
Wolfgang K. schrieb: > Der Taster bekommt am Eingang den Draht auf dem Breadboard gesteckt, der > zu PIN 8 führt und der Ausgang des Tasters, bekommt den Draht auf dem > Breadboard gesteckt, der zum GND auf der Seite der PWM's führt? Der Taster geht auf Pin7, sonst ist es richtig. Wolfgang K. schrieb: > Diese leuchtet nur so lange wie ich den Taster unten halte. Wäre > aber super wenn der während des Programmlaufs immer leuchten würde! Ich habe dir eine Led auf Pin 8 programmiert.
Wolfgang K. schrieb: > oder was meinst du? Das hier: W.A. schrieb: > Mache einfach einen Zustandsautomaten draus
Hubert G. schrieb: > Wolfgang K. schrieb: >> Der Taster bekommt am Eingang den Draht auf dem Breadboard gesteckt, der >> zu PIN 8 führt und der Ausgang des Tasters, bekommt den Draht auf dem >> Breadboard gesteckt, der zum GND auf der Seite der PWM's führt? > > Der Taster geht auf Pin7, sonst ist es richtig. > > Wolfgang K. schrieb: >> Diese leuchtet nur so lange wie ich den Taster unten halte. Wäre >> aber super wenn der während des Programmlaufs immer leuchten würde! > > Ich habe dir eine Led auf Pin 8 programmiert. Ja da hab ich mich vertippt, PIN 7 logisch. Habe das Programm in die Arduino Windows Software gespielt und mit dem Haken, oben links im Programm überprüfen lassen. Dabei kam folgende Meldung zur letzten Zeile im Sketch: " Arduino: 1.6.12 (Windows 10), Board: "Arduino/Genuino Uno" error: expected '}' at end of input digitalWrite(led,LOW); // Led leuchtet wärend Programmablauf ^ 65: error: expected '}' at end of input exit status 1 expected '}' at end of input Dieser Bericht wäre detaillierter, wenn die Option "Ausführliche Ausgabe während der Kompilierung" in Datei -> Voreinstellungen aktiviert wäre. " Was soll ich ändern?
Das Grundbeispiel mit der Zeitsteuerung hatte Hubert schon genannt Hubert G. schrieb: > Schau dir das Beispiel BlinkWithoutDelay an. Statt der Steuerung über den Zustand der LED mit
1 | if (ledState == LOW) { |
2 | ledState = HIGH; |
3 | } else { |
4 | ledState = LOW; |
baust du für deine Anwendung ein Gerüst mit
1 | switch (zustands_nr) { |
2 | |
3 | case 0:; |
4 | |
5 | case 1: |
6 | digitalWrite(relais1, LOW); |
7 | zustands_nr = zustands_nr+1; |
8 | interval = 10000L; |
9 | break; |
10 | |
11 | case 2: |
12 | digitalWrite(relais1, HIGH); |
13 | digitalWrite(relais2, LOW); |
14 | zustands_nr = zustands_nr+1; |
15 | break; |
16 | |
17 | case 3: |
18 | digitalWrite(relais2, HIGH); |
19 | zustands_nr = zustands_nr+1; |
20 | interval = 20000L; |
21 | break; |
22 | |
23 | default:
|
24 | zustands_nr=0; // bricht ab, wenn Zustand nicht aufgeführt |
25 | }
|
26 | if (zustands_nr > maxzustand) |
27 | zustands_nr=0; |
28 | ...
|
29 | }
|
Beim Erkennen des Tastendrucks schaltest du zustands_nr auf 1 und dann läuft das Ding los. Den Tastenzustand könnte man natürlich bei case 0 mit reinbauen. Mit interval kannst du die Dauer des nächsten Zustandes bestimmen, sonst bleibt die Dauer für den nächsten Zustand unverändert. Als Variablen/Konstanten deklarierst du zu Anfang noch
1 | const int maxzustand =3; |
2 | long interval = 10000L; |
Das Ding realisiert nicht den von dir geforderten Ablauf, sondern gibt eher eine Idee, wie das ohne delay() funktionieren kann. Für deine 10 Durchläufe brauchst du noch einen weitern Zähler und erst wenn der bei 10 angekommen ist, würdest du die Sequenz mit zustands_nr=0 abschließen. Bem: Alles ungetestet und als Denkanstoss
Ich hab meinen Fehler gefunden. Habe dein Programm nur zum Teil eingespielt. Danke vergiss das was ich zuvor geschrieben habe. Sorry Habe den Sketch laufen lassen, aber es tut sich leider nix. Außer das die gelbe LED am Arduino blinkt und die grüne LED einmal an und aus geht. Die Relays schalten zu keiner Zeit. Hätte ich noch was eingeben müssen, in den Sketch?
Wolfgang K. schrieb: > Habe den Sketch laufen lassen, aber es tut sich leider nix. Außer das > die gelbe LED am Arduino blinkt und die grüne LED einmal an und aus > geht. Da hast du was falschen eingespielt. In meinem Programm blinkt die gelbe Led am Arduino nicht. Die grüne Led ist die Spannungsanzeige, die darf nie ausgehen.
Hubert G. schrieb: > Wolfgang K. schrieb: >> Habe den Sketch laufen lassen, aber es tut sich leider nix. Außer das >> die gelbe LED am Arduino blinkt und die grüne LED einmal an und aus >> geht. > > Da hast du was falschen eingespielt. In meinem Programm blinkt die gelbe > Led am Arduino nicht. > Die grüne Led ist die Spannungsanzeige, die darf nie ausgehen. Habe mich falsch ausgedrückt. Wenn ich das Programm das ich 1 zu 1 eingespielt habe, laufen lassen will und den Taster kurz drücke, dann habe ich das Verhalten mit den LED's am Arduino. Die Relais schalten über haupt nicht um am Relais-Bord geht auch keine rote LED an.
ICh habe eine 8fach Relaiskarte am UNO hängen, da klappert alles einwandfrei. Zeig doch mal wie du das ganze zusammengeschaltet hast.
Hubert G. schrieb: > ICh habe eine 8fach Relaiskarte am UNO hängen, da klappert alles > einwandfrei. > Zeig doch mal wie du das ganze zusammengeschaltet hast. Ich werde mir Übermorgen, in neuer Frische, das ganze noch einmal ansehen. Morgen bin ich nicht da. Wenn ich keinen Fehler finde dann werde ich dir alles per Bild oder Video zukommen lassen. Vielen Dank noch mal für deine Hilfe, heute den ganzen Tag.
So jetzt habe ich alles noch mal durchgetestet. Das oder besser die Relays schalten nicht mehr. Habe zum Testen ein Netzteil an die Steuerung der Relays gehängt +3,3V auf VCC und GND auf GND. Zum Schalten des Relais bin ich mit einer Leitung nochmal auf + des Netzteils. Die Relays schalten über haupt nicht keinen Mux. Der Arduino habe ich mit dem Blinklicht Sketch laufen lassen. Das funktioniert. Eine andere Möglichkeit kenne ich nicht.
Wolfgang K. schrieb: > Das oder besser die Relays schalten nicht mehr. Welches Relais-Board hast Du denn?
Wolfgang K. schrieb: > Habe zum Testen ein Netzteil an die > Steuerung der Relays gehängt +3,3V auf VCC und GND auf GND. Die Relais brauchen 5V damit sie sicher schalten. Wenn du ein eigenes Netzteil für die Relais verwenden willst, dann musst du diese auf JD-VCC und GND legen. Die Brücke JD-VCC - VCC entfernen. Vom Arduino brauchst du nur VCC und die jeweiligen Ausgänge. Zum testen ohne Relais kannst du Led mit Vorwiderstände von den Ausgänge nach VCC schalten.
Dietrich L. schrieb: > Welches Relais-Board hast Du denn? Ich rate: Die meisten Relaisboards, und dieses sieht auch so aus, haben Optokoppler Eingänge. Mit gemeinsamen Anoden Anschluss. Die Verbindung vom Arduino erfolgt also: 5V, an die gemeinsame Anode Die Arduino Pins an die Kathodenseite der Optos. Eine Ground Verbindung zum Arduino ist nicht nötig. Vorwiderstände sind schon auf dem Board. Das Relaisboad benötigt 5V und GND, für die Spulen und ihre Treiber. Die Relais schalten, wenn Arduino Pin Low. Also invers. ohne Gewähr
Wolfgang K. schrieb: > Habe noch ein Bild vom Arduino mit deiner Pin- Belegung. Bitte noch mehr bekloppte Bilder! Diese Kinderkasperbreadboards habe ich bei den Kollegen in der Entwicklung noch nie gesehen. Schon mal etwas von "Schaltplan" gehört? Wolfgang K. schrieb: > So jetzt habe ich alles noch mal durchgetestet. Das oder besser die > Relays schalten nicht mehr. Relais schreibt man mit i ! Dieser Thread ist ein Beispiel für eine total wirre Vorgehensweise, systematisches Arbeiten ist heutzutage nicht mehr möglich? Zuerst einmal wird die Funktion der Relaiskarte ermittelt, da gibt es sicherlich einen Schaltplan zu. Solange die am Labornetzteil nicht klappert, sind jegliche weiteren Aktivitäten sinnlos. Dann kommt ein simples Programm "setze Port 1 high - Pause - Port 2 high - Pause ... Port wieder low ..." Wenn schon das nicht funktioniert, muss man keine komplexeren Programme hier reinstellen. Sobald die Relais klappern, wird ein Taster abgefragt, der eines davon schaltet. Und so weiter: Problem mit System in möglichst kleine Brocken zerlegen, jeden für sich funktionsfähig machen und erst dann das Ganze zusammenfügen. Es wird genau das Klischeebild der Arduinos erfüllt: Irgendwas zusammenstecken, irgendwelche Sketche zusammenkopieren und dann im Internet heulen, dass es nicht spielt.
Wolfgang K. schrieb: > Das oder besser die > Relays schalten nicht mehr. Dann poste mal nen Link auf den Schaltplan der Relaisplatine. Wolfgang K. schrieb: > Habe zum Testen ein Netzteil an die > Steuerung der Relays gehängt +3,3V Sicher daß das 3,3V Relais sind?
Hubert G. schrieb: > Hier ist ein Schaltplan der 4fach Relaisplatine. Jetzt fehlt nur noch die Angabe, welcher Relais-Typ (Spulenspannung) verwendet ist. Das Bild https://www.mikrocontroller.net/attachment/310432/DSC_0415.JPG von "Wolf Gang" ist leider nicht scharf genug. Wie es schon erwähnt wurde sind es vermutlich 5V-Relais, und da kann 3,3V abzüglich der Spannungsabfalls am Transistor zu wenig sein.
Hallo > Dieser Thread ist ein Beispiel für eine total wirre Vorgehensweise, > systematisches Arbeiten ist heutzutage nicht mehr möglich? :-) > ...Problem mit System in möglichst kleine Brocken zerlegen, jeden > für sich funktionsfähig machen und erst dann das Ganze zusammenfügen. Ist offensichtlich zu kompliziert. > Es wird genau das Klischeebild der Arduinos erfüllt: Irgendwas > zusammenstecken, irgendwelche Sketche zusammenkopieren und dann im > Internet heulen, dass es nicht spielt. Leider ist es genau so. rhf
Die Kritik mag ja zum Teil berechtigt sein. Allerdings verstehe ich nicht, dass, wenn man nicht helfen will, trotzdem etwas in keiner Weise hilfreiches schreibt. Ich ignoriere Beiträge zu denen ich nichts hilfreiches Beitragen will.
Jeder sollte an seine eigenen Bastleranfänge denken, damit ist jede Frage berechtigt und o,k,
Hubert G. schrieb: > Hier ist ein Schaltplan der 4fach Relaisplatine. ist doch wie auch auf dem Ursprungsbild vom TO eindeutig zu erkennen 5V Technik! Die Signal LED ca 2V die Opto LED ca 1,2V + RV gibt definitiv einen größeren benötigten Spannungsabfall als 3,3V, also ist dieser Zweig nur mit 5V aus dem Port inaktiv und GND low zu besteuern. Wolf G. schrieb: > So jetzt habe ich alles noch mal durchgetestet. Das oder besser die > Relays schalten nicht mehr. Habe zum Testen ein Netzteil an die > Steuerung der Relays gehängt +3,3V auf VCC und GND auf GND. Zum Schalten > des Relais bin ich mit einer Leitung nochmal auf + des Netzteils. Die > Relays schalten über haupt nicht keinen Mux. mit 3,3V für high ist dort nix zu machen. Systematisch testen würde heissen man versorgt die Relaisplatine aus einer +5V Quelle und zieht in entweder auf +5V oder auf GND das Relais und die Signal LED zeigt dann den entsprechenden Zustand. Das kann man mit einer 3,3V Versorgung gegentesten ganz ohne µC Wer dann noch ein mA Meter in die Testleitung nach +VCC oder nach GND hängt kann sogar den Strom dieser Relaisplatine am In testen, das muss der Port auch liefern können. Der µC kann natürlich an seinen Ports mit 3,3V und 5V ebenfalls unabhängig getestet werden ob 3,3V/5V oder 0V bei dieser Last stabil steht.
Hubert G. schrieb: > Die Kritik mag ja zum Teil berechtigt sein. Jetzt träumen wir mal und hoffen, dass unser "kerzerl" das gelesen und verstanden hat. Dann könnte er sich die Lösung stückweise selbst erarbeiten? Joachim B. schrieb: > Der µC kann natürlich an seinen Ports mit 3,3V und 5V ebenfalls > unabhängig getestet werden ob 3,3V/5V oder 0V bei dieser Last stabil > steht. Die 3,3V verstehe ich sowieso nicht, Standard für den Uno sind 5 Volt! Am besten dann noch mit einem 12V-Netzteil versorgen, die Relais an den 5V-Anschluß des Uno und sich anschließend beklagen, dass die Spannungsregler auf dem Board nichts taugen und ohne Grund abbrennen.
Kackreiz schrieb: > Die 3,3V verstehe ich sowieso nicht, Standard für den Uno sind 5 Volt! es gibt Arduino mini auch mit 328p bestückt die werden mit 8MHz bestückt und programmiert ausgeliefert extra für den 3,3V Betrieb, z.B. aus einer 3-3,6 V Quelle. Man könnte es auch als Vorstufe probieren um die SW auf einen PI zu portieren, gcc machts ja möglich, aber ich rate nur. Es soll auch neuere Arduinos geben die ab Werk für 3,3V sind. aber der TO rät ja auch nur ohne Plan.
Joachim B. schrieb: > es gibt Arduino mini auch mit 328p bestückt die werden mit 8MHz bestückt > und programmiert ausgeliefert extra für den 3,3V Betrieb, z.B. aus einer > 3-3,6 V Quelle. Ich weiß - aber oben auf dem Bild hat er einen Uno. Der hat sogar einen Regler an Bord, um 3,3V zu liefern. Der Chinesen-ProMini ist übrigens der billigste Weg, einen 328 samt Quarz auf die Lochrasterplatte zu bekommen. > Man könnte es auch als Vorstufe probieren um die SW auf einen PI zu > portieren, gcc machts ja möglich, aber ich rate nur. "Man" könnte, aber manche eher nicht. > Es soll auch neuere Arduinos geben die ab Werk für 3,3V sind. Die dann aber nicht Uno heißen. > aber der TO rät ja auch nur ohne Plan. Stimmt, und ohne erkennbare Systematik.
Hubert G. schrieb: > Wolfgang K. schrieb: >> Habe zum Testen ein Netzteil an die >> Steuerung der Relays gehängt +3,3V auf VCC und GND auf GND. > > Die Relais brauchen 5V damit sie sicher schalten. > Wenn du ein eigenes Netzteil für die Relais verwenden willst, dann musst > du diese auf JD-VCC und GND legen. Die Brücke JD-VCC - VCC entfernen. > Vom Arduino brauchst du nur VCC und die jeweiligen Ausgänge. > > Zum testen ohne Relais kannst du Led mit Vorwiderstände von den Ausgänge > nach VCC schalten. Es hat jetzt länger gedauert, bis die neuen Teile da waren. Die Relais waren schon in Gebrauch und schadhaft. Einen neuen UNO habe ich auch noch erhalten. Dein Programm läuft ordentlich durch. Habe den Sketch erweitert (siehe Anhang), dass es mir auch das dritte Relais3 parallel zum Relais2 schaltet. Jetzt habe ich festgestellt, dass ich die Anfangsbedingung zum Sketch-Ablauf falsch gesetzt habe. Ursprünglich war angedacht, dass alle 30sek. das Relais2 + 3 zu und abschaltet. Wie kann ich dein Programm nutzen um das Ein- und Ausschalten mit verschiedenen Zeiten zu realisieren? Z.B. 15sek Einschalten und 30sek Ausschalten.
Wolf G. schrieb: > Habe den Sketch erweitert (siehe Anhang) Das Einrücken musst Du aber noch lernen. So kann man Dein Programm kaum lesen.
Ich habe ein interval1 und interval2 eingefügt. Mit den Zeiten kannst du dann Ein- und Ausschalten unterschiedlich einstellen.
Super, so einfach wenn man weiß wo man ansetzt. Jetzt wollte ich noch folgendes dazu Programmieren: Wenn während des Ablaufes des Programms, also nach dem ersten Tastendruck, noch einmal auf den Taster gedrückt wird, das Programm abbricht. Ein weiterer Tastendruck startet das Programm von vorne. Ist das so richtig? if ((Taststat==LOW)&&(Relstat1==LOW)) // hier erfolgt eine Sketchabbruch { Taststat=HIGH; // Tastenstatus setzen digitalWrite(relais1,HIGH); digitalWrite(relais2,HIGH); digitalWrite(relais3,HIGH); digitalWrite(led,LOW); //Led aus } Den Block setze ich am Ende ein, oder?
Grundsätzlich stimmt es, allerdings schaltest du sofort wieder ein. Es gehört so Programmiert das der Abschaltetastendruck erst wirksam wird wenn die Taste wieder losgelassen wird. Ich gehe jetzt aber Fußball schauen, habe ohnehin schon einiges versäumt.
Probier es mal aus. Es ist ein wenig umständlich geworden. Es rächt sich wenn man es anfangs zu leicht macht und dann etwas hinzufügen muss.
Es funktioniert super, vielen Dank. Ich glaube ein Essen ist fällig. Werde jetzt versuchen, ein LCD mit Interface 1602 anzusteuern. Hoffe es sind noch genügend Pins vorhanden. Dort sollen dann die Temperaturwerte angezeigt werden. Die Temperatur wird mit einem Temperatursensor LM35DZ gemessen. Kann das gelingen, oder soll ich es lieber lassen? Also ich meine damit ob ich das schaffe und wann!
Wolf G. schrieb: > Also ich meine damit > ob ich das schaffe und wann! Naja... Schwer zu sagen... Je nach dem wie aufnahmefähig du bist. Hoffnung besteht.
Unter Beispiele gibt es LiquidCristal Display und Analog AnalogIn Probier es einfach aus, ist nicht schwer. Hier ein Beispiel für Temperatur https://learn.adafruit.com/adafruit-arduino-lesson-12-lcd-displays-part-2/arduino-code
Wolf G. schrieb: > Kann das gelingen, oder soll ich es lieber lassen? Nach Deiner Vorstellung mit der Relaiskarte hege ich leichte Zweifel. Vielleicht hast Du aus diesem Thread aber auch Hinweise mitgenommen, etwas systematischer zu arbeiten, dann kann das werden. Geht aber schon mit dem LM35 los, wenn der Minus-Temperaturen messen soll :-(
Wolf G. schrieb: > Die Temperatur wird mit einem Temperatursensor LM35DZ > gemessen. warum? es gibt so schöne DS18B20 und LIBs
Hubert G. schrieb: > Hier ist ein Schaltplan der 4fach Relaisplatine. Und hier sind meine Erkenntnisse zu Relais-Platinen dieser Machart: Beitrag "Unglaublich was die Arduino-Gemeinde da vorgesetzt bekommt"
Wolf G. schrieb: > Werde jetzt versuchen, ein LCD mit Interface 1602 anzusteuern. Wie schaut es aus mit dem LCD, bei mir läuft die Temperaturanzeige schon mit zwei Sensoren.
Schön das du fragst. Nein bin noch nicht dazu gekommen. Habe aber schon mehrere Messungen ohne LCD an der Heizplatte gemacht, mit einem Laser- Thermometer und die Werte in Excel eingetragen. Dabei ist mir aufgefallen, dass das Relais1, doch noch mal zwischen drin abschalten muss, damit ich die Heizplatte stromlos bekomme. Das soll folgendermaßen ablaufen: • Relais1 = 30sek. (LOW also angesteuert) • Relais1+2+3 = 20sek. (LOW also angesteuert) • Relais1+2+3 = 10sek. (HIGH nicht angesteuert) • Dann wiederholen von vorne; Habe ich aber auch noch nicht umgesetzt, wegen Zeitmangel.
Wolf G. schrieb: > Schön das du fragst. > Nein bin noch nicht dazu gekommen. > Habe aber schon mehrere Messungen ohne LCD an der Heizplatte gemacht, > mit einem Laser- Thermometer und die Werte in Excel eingetragen. > > Dabei ist mir aufgefallen, dass das Relais1, doch noch mal zwischen drin > abschalten muss, damit ich die Heizplatte stromlos bekomme. Das soll > folgendermaßen ablaufen: > • Relais1 = 30sek. (LOW also angesteuert) > • Relais1+2+3 = 20sek. (LOW also angesteuert) > • Relais1+2+3 = 10sek. (HIGH nicht angesteuert) > • Dann wiederholen von vorne; > > Habe ich aber auch noch nicht umgesetzt, wegen Zeitmangel. Hbert, sitze seit mehrerern Std. über deinem Programm und schaffe es noch nicht, meine Zusatzaufgabe, siehe oben, zu integrieren. Den folgenden Block muss ich einfügen, soweit bin ich schon: if((currentMillis - previousMillis1 > interval6) &&(Relstat1==HIGH)&&(Relstat2==HIGH)&&(Relstat3==HIGH)) //Zeit zwischen Zeitstempel und aktueller Zeit > als vorgegebene Zeit { previousMillis1 = currentMillis; Relstat1 =LOW; //Relais 1 deaktivieren Relstat2 =LOW; //Relais 2 deaktivieren Relstat3 =LOW; //Relais 3 deaktivieren Zaehler++; //Durchlaufzähler erhöhen } Habe einen weiteren "interval6" dazu genommen; Ich weiß noch nicht ob ich das relais1 damit aus bekomme?
Das sollte jetzt so funktionieren. Allerdings ist in dieser Version das LCD schon inkludiert, daher haben sich die Anschaltepunkte für Relais, Led und Taste verschoben. Ich hoffe ich habe es richtig verstanden, probier es mal aus.
Hubert G. schrieb: > Das sollte jetzt so funktionieren. Allerdings ist in dieser Version das > LCD schon inkludiert, daher haben sich die Anschaltepunkte für Relais, > Led und Taste verschoben. > Ich hoffe ich habe es richtig verstanden, probier es mal aus. Du bist meine Rettung dank. Dacht du schaust Fußball:-)
Fußball war nicht interessant. Mit den verschiedenen Zeiten kannst du ja noch spielen.
Du hast das mit "interval7" geregelt; Jetzt müsste es so sein das alle 55 sek. ein neuer Durchlauf beginnt und dabei gezählt wird bis es 19 mal durchgelaufen ist! Das LCD muss ich noch anschließen. Habe mir gerade noch einen 10k Widerstand geholt "LCD Enable pin" was für ein PIN, von 1-16, am LCD, ist das? Habe Fotos angehängt Und wenn du mir noch sagst wo du den Widerstand reingehängt hast? Danke
Wolf G. schrieb: > Du hast das mit "interval7" geregelt; > Jetzt müsste es so sein das alle 55 sek. ein neuer Durchlauf beginnt und > dabei gezählt wird bis es 19 mal durchgelaufen ist! Interval7 ist richtig. Es läuft nur 10 mal durch, da ein und aus mitgezählt wird und mit 0 beginnt. Wolf G. schrieb: > "LCD Enable pin" was für ein PIN, von 1-16, am LCD, ist das? Ich sehe gerade du hast ein I2C-LCD. Das funktioniert mit meiner SW nicht. Dafür braucht man eine eigene. Kann ich aber nicht probieren da ich kein geeignetes LCD habe.
Dann muss ich wohl ein anderes Display kaufen. Welche Typenbez. hat deines?
Wolf G. schrieb: > Welche Typenbez. hat deines? Kann ich dir nicht sagen, ist so ein Noname Typ aus meiner Bastelkiste. 16 Zeichen mit 2 Zeilen. Das du da hast würde schon passen wenn der I2C-Teil nicht drauf wäre.
Hast evtl. ein Foto? Schau ob ich ein ähnliches ohne I2C-Teil bekomme;
Ich weiss nicht wo du kaufst, such mal nach LCD 162C, bei Reichelt. Meines sieht so aus. Ist der I2C Zusatz auf deinem LCD gesteckt oder gelötet.
Mein Elektronik-Verkäufer meint, das ich den I2C auf der Rückseite des Displays einfach nicht anschließen soll, dann wird der auch nicht geschalten. Ganz sicher ist er sich nicht und wartet auf Feedback von mir. Zu deiner Frage: Der I2C ist aufgelötet. Zu meiner Frage die ich dir gestellt hatte, bezüglich "LCD Enable pin", das müsste der Pin 6 am LCD sein, mit dem Aufdruck "E", meint der Verkäufer. Jetzt werde ich es mal versuchen. Ach ja zum Widerstand. Habe ein Bild angehängt. Der 10K-Widerstand ist das blaue Teil mit dem Pfeil drauf (regelbarer Widerstand). Dieser ist zwischen 5+V und V0 am LCD geschaltet. Sehe ich das so richtig? Danke
Wolf G. schrieb: > Ach ja zum Widerstand. Habe ein Bild angehängt. Der 10K-Widerstand ist > das blaue Teil mit dem Pfeil drauf (regelbarer Widerstand). Dieser ist > zwischen 5+V und V0 am LCD geschaltet. Sehe ich das so richtig? Eine Seite geht auf GND, die andere auf +5V und die Mitte auf Vo.
Den 10k Widerstand regelbar habe ich nicht, nur einen normalen mit zwei Drähten! Kann ich aber gleich anschließen, oder? +5V auf einen Draht, GND und V0 auf den anderen Draht?
Dann nur einen auf GND und Vo. Es sollte ein Balken in der ersten Zeile sichtbar sein.
:
Bearbeitet durch User
#include <LiquidCrystal.h> Muss ich da noch was in meine Software einspielen? In der Bibliothek ist LiquidCrystal vorhanden! Ist das das gleiche?
Wolf G. schrieb: > #include <LiquidCrystal.h> Das ist eine Anweisung für den Compiler diese Datei einzubinden. Wenn die Datei fehlt bekommst du eine Fehlermeldung.
Hubert G. schrieb: > Wolf G. schrieb: >> #include <LiquidCrystal.h> > > Das ist eine Anweisung für den Compiler diese Datei einzubinden. > Wenn die Datei fehlt bekommst du eine Fehlermeldung. ok das verstehe ich schon, aber du hast LiquidCrystal.h geschrieben, das meinte ich. Es hat mich das .h gestört!
Wenn du in die Bibliothek LiquidCrystal hineinschaust findest du unter src die LiquidCrystal.cpp und LiquidCrystal.h. Die Angaben was included werden soll müssen immer genau sein.
Wolf G. schrieb: > Dann muss ich wohl ein anderes Display kaufen. Quatsch - im Internet bei den Arduinos finden sich etlich Libraries, suche nach "<LiquidCrystal_I2C.h>". Damit belegst Du zwei Ports des Arduino und brauchst Dich um weitere Hardware nicht zu kümmern. Es kann sein, dass noch zwei Widerstände mit ca. 4k7 von den zwei Datenleitungen nach Plus dran müssen. Wolf G. schrieb: > Mein Elektronik-Verkäufer meint, das ich den I2C auf der Rückseite des > Displays einfach nicht anschließen soll, dann wird der auch nicht > geschalten. Ganz sicher ist er sich nicht und wartet auf Feedback von > mir. Dem Herren vertraue ich nicht - an Anschlüsse unversorgter ICs hat man nichts dran zu klemmen. Wenn das unbedingt sein muß, löte die I2C-Platine runter.
So es läuft soweit super. Kleinigkeiten die mir aufgefallen sind: - Am Arduino leuchtet die kleine rote LED mit der Bezeichnung L! Wenn diese an geht, geht auch meine rote LED am Bord an (siehe Bild LED1). Da haben wir ja nix geändert, außer die PIN-Belegung, aber jetzt blinkt die LED am Bord, war vorher immer nur an wenn das Programm lief? Find nix an was es liegen könnte! -Die Temperaturanzeige funktioniert. Zeigt allerdings den Wert -255° an (Raumtemperatur) Da ich keinen zweiten Temperatursensor habe, habe ich den Programmteil mit // ausgeschalten! Das LCD funktioniert auch ohne das Auslöten des I2C.
Es lief jetzt. Und jetzt geht nix mehr. Ich gehe jetzt in Bett. Ich blick gerade nichts mehr.
Neu gestartet und es läuft, aber nicht lange. Was mach ich nur falsch? Habe alle PIN Kontakte zwei mal überprüft, alles in Ordnung. Das Blinken an der Arduino LED geht nicht weg! Das geht im 5 sek. Wechsel an /aus. Würde mit dem interval6 Temperaturmessung zusammen passen. Vielleicht liegt es am Netzteil, vielleicht auch nicht, denn wenn ich das USB Kabel anschließe und den Taster betätige, dann gibt mein Computer ein Geräuschsignal aus, aber das Programm läuft nicht. Evtl. liegt es an den Widerständen an der Schaltung, denn beim Drücken des Tasters ist immer das LCD kurz dunkel geworden. Bitte um Hilfe
Was mir noch aufgefallen ist: Wenn ich den Taster länger drücke wird der schwarze Chip, neben dem Netzteileingang schnell heiß.
Ich schätze mal das die Hintergrundbeleuchtung zuviel Strom braucht, sieht sehr hell aus. Wie hast du die angeschlossen? Ist da ein Vorwiderstand drinnen. Der schwarze Chip ist der Spannungsregler. Der schaltet ab wenn er zu heiß wird.
Kein Vorwidersand. Netzteil hat 9V. Habe das gleiche Problem, das ich mit den ersten Relais auch hatte, die schalten jetzt nicht mehr. Liegt aber evtl. am Arduino. Vielleicht ist der kaputt, also das zweite mal kaputt. Habe mir ja alles neu besorgt!
Wenn beim drücken des Tasters die Hintergrundbeleuchtung ausgeht und der Regler heiß wird, dann deutet das sicher auf einen Kurzschluss hin.
Wolf G. schrieb: > -Die Temperaturanzeige funktioniert. Zeigt allerdings den Wert -255° an > (Raumtemperatur) Wie hast du den Temperaturfühler angeschlossen? Kannst du auch mal die Tastenanschaltung genauer zeigen, kommt mir etwas eigenartig vor. Nimm mal die Verbindung nach +5V weg und die Led. Die Led am UNO blinkt tatsächlich im Takt der Temperaturmessung, hab ich vergessen wieder herauszunehmen. Ein Vorwiderstand für die Displaybeleuchtung ist notwendig, sollte im Datenblatt stehen, probier mal 100 Ohm. Wenn du die Relais auch mit 9V betreibst können die auch sterben. Wenn es ein einfaches Netzteil ist (Wandwarze) dann haben die meist einige Volt mehr. 9V erst bei maximal Belastung.
Gib mal auf A0 +5V drauf, dann sollten etwa 180° am Display stehen. Auch mal die Spannung vom LM35 messen, sollten etwa 2,8V sein.
Hubert G. schrieb: > Ein Vorwiderstand für die Displaybeleuchtung ist notwendig, sollte im > Datenblatt stehen, probier mal 100 Ohm. So habe ich den Widerstand 100 Ohm geschalten (Bild) Zwischen VDD PIN2 am LCD (schwarzes Kabel) an Widerstand Ausgang zum +5V Arduino. Programm läuft nur einmal incl. Ansteuerung der Relais. Wenn ich es unterbreche mit Tastendruck, läuft es nicht mehr. Mehrmaliges drücken des Tasters bewirkt nur noch das das LCD dunkel wird!
Wolf G. schrieb: > Mehrmaliges drücken > des Tasters bewirkt nur noch das das LCD dunkel wird! LCD ist jetzt mit Vorwiderstand nur beleuchtet, keine Anzeige!
Der 100 Ohm Widerstand bringt so nichts, da ist das ganze Display betroffen. Zieh mal den kleinen Stecker auf der Subplatine ab. Du hast in deiner Verdrahtung einen Wurm drinnen, wenn du die Taste drückst darf sich an der Helligkeit gar nichts ändern. Die Led und die Verbindung nach +5V an der Taste schon entfernt?
Hubert G. schrieb: > Wenn du die Relais auch mit 9V betreibst können die auch sterben. Wenn > es ein einfaches Netzteil ist (Wandwarze) dann haben die meist einige > Volt mehr. 9V erst bei maximal Belastung. Verhalten ist bei USB Anschluß ähnlich
Hubert G. schrieb: > Die Led und die Verbindung nach +5V an der Taste schon entfernt? Nein, habe den Temperatursensor entfernt. Siehe da das Programm lässt sich jetzt ein und ausschalten auch die Relais schalten wieder mit. Den Widerstand 100 Ohm habe ich ebenfalls entfernt. Danke erst mal ich muss jetzt leider kurz unterbrechen, ich habe einen Termin. Bis später. Vielen Dank
Hubert G. schrieb: > Zieh mal den kleinen Stecker auf der Subplatine ab. Was meinst du damit? Was ist die Subplatine?
Hubert G. schrieb: > Du hast in deiner Verdrahtung einen Wurm drinnen, Meinst du damit das LCD oder den Taster?
Hubert G. schrieb: > Du hast in deiner Verdrahtung einen Wurm drinnen LCD Verkabelung LCD > Arduino --------- VSS > GND VDD > +5V V0 > 10k ((Poti)) + ((1kOhm Widerstand)) > GND RS > Pin 12 R/W > Pin GND E > Pin 11 D4 > Pin 5 D5 > Pin 4 D6 > Pin 3 D7 > Pin 2 A > nicht angeschlossen K > (10 Ohm Widerstand > GND */) nicht angeschlossen ((das in Klammern habe ich nicht))
Wie weit funktioniert es jetzt? Der Temperaturfühler ist ein LM35? Der ist offensichtlich defekt. Was macht die Led am Taster? Wenn du jetzt die Taste drückst wird der Spannungsregler immer noch warm?
Hubert G. schrieb: > Wie weit funktioniert es jetzt? Habe dein Programm vorerst so umprogrammiert das es ohne LCD und ohne Temperatursensor läuft. > Der Temperaturfühler ist ein LM35? Ja: LM35DZ ( -0 +150C) To92 > Was macht die Led am Taster? Bildlink, nach Umprogrammierung, nicht mehr alle 5 sek. Geht aber beim Betätigen des Tasters sofort aus. > Wenn du jetzt die Taste drückst wird der Spannungsregler immer noch > warm? Ja, sehr warm, aber nur wenn ich den Taster gedrückt halte, für 3sek. > Zieh mal den kleinen Stecker auf der Subplatine ab. Was meinst du damit? Was ist die Subplatine?
Könnte man dein Programm so Programmieren, das anstatt der zweiten Temp2 Ausgabe am LCD, die abgelaufene Zeit steht? Vorausgesetzt die Verkabelung und die Schaltung funktioniert mit dem neuen LCD!
Wolf G. schrieb: >> Wenn du jetzt die Taste drückst wird der Spannungsregler immer noch >> warm? > Ja, sehr warm, aber nur wenn ich den Taster gedrückt halte, für 3sek. Da ist was faul, nimm die Led mal von der Taste weg und auch die Verbindung nach +5V. Wolf G. schrieb: > Könnte man dein Programm so Programmieren, das anstatt der zweiten Temp2 > Ausgabe am LCD, die abgelaufene Zeit steht? Vorausgesetzt die > Verkabelung und die Schaltung funktioniert mit dem neuen LCD! Denke schon, wird aber etwas dauern.
Hubert G. schrieb: > Wolf G. schrieb: >>> Wenn du jetzt die Taste drückst wird der Spannungsregler immer noch >>> warm? >> Ja, sehr warm, aber nur wenn ich den Taster gedrückt halte, für 3sek. > > Da ist was faul, nimm die Led mal von der Taste weg und auch die > Verbindung nach +5V. > > Wolf G. schrieb: >> Könnte man dein Programm so Programmieren, das anstatt der zweiten Temp2 >> Ausgabe am LCD, die abgelaufene Zeit steht? Vorausgesetzt die >> Verkabelung und die Schaltung funktioniert mit dem neuen LCD! > > Denke schon, wird aber etwas dauern. So jetzt sieht es nur noch so aus Bild Wenn ich jetzt, nach dem Entfernen der LED, die Taste drücke, dauert es nur noch 1 sek., bis der Finger bez. der Spannungsregler heiß wir. Das LCD und die LED werden dunkel.
Wolf G. schrieb: > die Taste drücke, dauert es > nur noch 1 sek., bis der Finger bez. der Spannungsregler heiß wir. Höre doch bitte auf, das Ding zu grillen... Das tut doch beim lesen schon weh... Dann macht der Taster einen Kurzschluss. Ändere das!
Arduino F. schrieb: > Wolf G. schrieb: >> die Taste drücke, dauert es >> nur noch 1 sek., bis der Finger bez. der Spannungsregler heiß wir. > > Dann macht der Taster einen Kurzschluss. > Ändere das! Geht es auch präziser?
Dann male einen! Egal wie... Bleistift Papier und eine Fotomaschine hast du ja... z.B. wofür sind die beiden blauen am Taster? Wohin gehen die?
Arduino F. schrieb: > Dann male einen! > Egal wie... > Bleistift Papier und eine Fotomaschine hast du ja... > > > z.B. wofür sind die beiden blauen am Taster? > Wohin gehen die? Siehe Bild
Siehste es jetzt selber? Eine Seite +5V und andere Seite GND Drücken führt zum Kurzschluss. Mach das 5V Dingen da weg!
Danke , und wie wäre es richtig? Ich habe schon alles gesteckt ohne Erfolg. Ich glaube ich bin blind!
Jetzt wäre eine Skizze nicht schlecht (dito) Wie gesagt ich habe schon alle Möglichkeiten gesteckt und das LCD usw. dunkelt ab sobald ich den Taster betätige.
Arduino F. schrieb: > Mach das 5V Dingen da weg! Was verstehst du daran nicht? Warum tust du das nicht?
Arduino F. schrieb: > Arduino F. schrieb: >> Mach das 5V Dingen da weg! > Was verstehst du daran nicht? > Warum tust du das nicht? Danke jetzt geht es. Mit einer Skizze, so wie du es gefordert hast, weil du es nicht verstanden hast, wäre es nicht zu gegenfragen gekommen. Das habe ich in den letzten 5 min. gelernt. Was hast du gelernt???
Wolf G. schrieb: > Was hast du gelernt??? Ich habe gelernt, dass es Leute gibt, die ungern Schaltpläne malen. Dass man solange alle Steckmöglichkeiten permutiert, bis der Regler qualmt. Und damit wohl das falsche gelernt.
Das die Verbindung vom Taster nach +5V entfernt gehört habe ich dir schon zu Mittag geschrieben. Hast du das neue Programm getestet?
Hubert G. schrieb: > Probier das mal aus. Habe es eingespielt. Was mir aufgefallen ist: -Die LED an PIN 9 leuchtet nur kurz auf wenn ich den Taster drücke. Ein Dauer leuchten ist nicht mehr vorhanden. PIN13 hast du ja blockiert! -Die LED "L" am Arduine leuchtet jetzt dauerhaft; -Das LCD wird dunkler, wenn alle drei Relais anschalten; Ist aber nicht so dramatisch. -Das Programm ist ein Mal durchgelaufen. Beim zweiten starten geht nur das Relais1 an, und bleibt es auch. Die anderen Relais schalten nicht zu oder ab. Nach 540 sek geht es sogar ins minus mit den Sekunden. Das Programm muss manuell abgebrochen werden.
Hubert G. schrieb: > Das die Verbindung vom Taster nach +5V entfernt gehört habe ich dir > schon zu Mittag geschrieben. Ja das hast du. Ich habe es nicht kapiert. > Hast du das neue Programm getestet? Habe gerade geschrieben
Wolf G. schrieb: > -Das LCD wird dunkler, wenn alle drei Relais anschalten; Ist aber nicht > so dramatisch. Dann ist Deine Stromversorgung überlastet oder Du hast weitere Schaltungsfehler.
Wolf G. schrieb: > -Die LED an PIN 9 leuchtet nur kurz auf wenn ich den Taster drücke. > Ein Dauer leuchten ist nicht mehr vorhanden. PIN13 hast du ja > blockiert! Wie hast du die Led angeschaltet? Von Pin9 zum Widerstand, Led und dann GND? Diese Version müsste jetzt funktionieren.
Hubert G. schrieb: > Diese Version müsste jetzt funktionieren Wenn ich Dein Kollege wäre und Deine Programme warten müsste würde ich mir Teer und Federn besorgen :-) Deine Kommentare kannst Du auch ganz weglassen - dann verwirren diese wenigstens nicht :-)
Hubert G. schrieb: > Wolf G. schrieb: >> -Die LED an PIN 9 leuchtet nur kurz auf wenn ich den Taster drücke. >> Ein Dauer leuchten ist nicht mehr vorhanden. PIN13 hast du ja >> blockiert! > > Wie hast du die Led angeschaltet? Von Pin9 zum Widerstand, Led und dann > GND? > > Diese Version müsste jetzt funktionieren. Habe es so wie du geschrieben hast umgesetzt. Jetzt geht es. Programm muss ich später testen! Vielen Dank
Hubert G. schrieb: > Diese Version müsste jetzt funktionieren. Geht gut, sehr gut. Was noch auffällt ist, dass das Display immer noch dunkler wird, wenn alle 3 Relais auf LOW gehen. Werde den 10K Poti einbauen und schauen ob es besser wird, wie im Bild gezeigt. Sketch bleibt gleich oder? Kann man das mit dem Zähler evtl. so machen das z.B. alle 15 sek. als ein Durchlauf zählt? Beispiel: 5 sek. Relais1 ein 5 sek. Relais2+3 ein 5 sek. Relais1+2+3 aus (ist Wartezeit) Dann soll folgende Rechnung aufgehen: 3x5 sek =15sek.; 10x15 sek. (Durchlaufzeit) =150sek. Aktuell ist es so, dass wenn ich 10 eingebe sind es 80 sek.
Wolf G. schrieb: > Kann man das mit dem Zähler evtl. so machen das z.B. alle 15 sek. als > ein Durchlauf zählt? > Beispiel: > 5 sek. Relais1 ein > 5 sek. Relais2+3 ein > 5 sek. Relais1+2+3 aus (ist Wartezeit) Ich weiß nicht ob ich das richtig verstanden habe. Die Änderung ist folgend: Jetzt musst du nur die Zeiten in INTERVAL1 bis 3 ändern und die Anzahl der Durchläufe angeben, dann wird die Ablaufzeit automatisch berechnet.
Hubert G. schrieb: > Ich weiß nicht ob ich das richtig verstanden habe. Einwandfrei, super. Ich danke Dir.
Hallo Hubert, habe noch eine Frage an dich: Kann man den Sketch so gestalten, dass man in einem Sketch die Wahl hat zwischen zwei Programmen zu wählen? Also wenn man auf Taster 1 drückt startet das Programm1 und wenn man auf Taster 2 drückt startet das Programm2! Der Unterschied der Programme wäre dann nur die Zeiteinstellung z.B. Programm1 läuft insgesamt 5 min. und Programm2 10 min. Danke
dann packe deine 2 Programme in je eine Funktion, oder Unterprogramm und rufe je nach Taste diese auf. nach dem Setup Init steht dein Programm auf Menü -> Hauptprogramm -> Programmwahl, dort je nach Taste wird auf PRG1 oder PRG2 verwiesen. Wenn die beiden sich nur in der Zeit unterscheiden gibst du diese halt im Hauptmenü vor bevor du das einzige Programm aufrufst.
:
Bearbeitet durch User
Wie Joachim schon geschrieben hat, an sich kein Problem. Es wird allerdings genügen mit Tastendruck die Zeiten auszuwählen.
Hubert G. schrieb: > Es wird > allerdings genügen mit Tastendruck die Zeiten auszuwählen. Das hört sich nicht schlecht an. Da brauche ich dann nur einen Taster wenn ich das richtig verstehe?
Es sollte mit einer Taste gehen, wird aber etwas aufwändiger. Mit zwei Tasten geht es einfach.
mit 3 Tasten kannst du zurück ins Menü und hast +- Tasten. mit 2 Tasten wirds schwer wenn du nicht Doppeltastendruck auswerten willst. Ich empfehle da lieber Drehencoder mit Drucktaste und LCD Menüführung
Wolf G. schrieb: > Zwei Tasten kämen in Frage Hast du schon ein Endziel, oder solle sich das noch weiter entwickeln. Wenn das mit zwei Tasten das Endziel ist, dann kann man das quick und dirty machen. Sollte sich das noch weiter entwickeln, dann muss man das Modular aufbauen, sonst macht man jeden Schritt immer wieder neu. Es würde aber in jedem Fall meine vorhandene Zeit zu sehr beanspruchen.
Ja das währe vorerst das Endziel. Sollte sich dennoch was ändern, dann würde ich dich gerne auf einem anderen Weg anschreiben, vorausgesetzt deiner Einwilligung. Unter, sketch.hubert@anpa.de könntest du mich anschreiben. Den Alias habe ich dafür angelegt.
Jetzt mit zwei Tasten. Die zweite Taste kommt auf 13. Probiers mal aus. Wenn du auf das hubertg in meinem Beitrag klickst, kannst du mir eine private Nachricht schreiben.
Joachim B. schrieb: > Ich empfehle da lieber Drehencoder mit Drucktaste und LCD Menüführung Bei dem hier geballt präsentierten Fachwissen eine ganz tolle Idee. Drehencoder hat mich diverse Stunden beschäftigt, die Masse der im Internet gefundenen Lösungen geht nicht anständig, sobald man mehr zu tun hat als nur den Drehencoder abzufragen. Egal, ich konnte es lösen, habe den im Interrupt. Wolf G. schrieb: > Ja das währe vorerst das Endziel. Rechtschreibung "wäre"? > Sollte sich dennoch was ändern, dann würde ich dich gerne auf einem > anderen Weg anschreiben, vorausgesetzt deiner Einwilligung. > Unter, sketch.hubert@anpa.de könntest du mich anschreiben. Ich bewundere Hubert, mit welcher Geduld er Dich bislang versorgt hat. Hast Du nicht genug Hinweise bekommen, endlich einmal selbst zu arbeiten? Zu Deinen zwei Tasten: In der "loop()" fragst Du ab, welche Taste gedrückt ist und dann geht es ab zu "void Taste_1()" bzw. "void Taste_2()", wo Dein Code steht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.