Hallo, Leute, es ist zum Weinen: Wen ich auch frage, jeder erzählt mir, wie einfach das ist, und am Ende kann mir keiner sagen, wie es geht ... Mein Problem: Ich möchte mit einem Arduino Nano w/Atmega 328 und einem DS18S20 Temp.-Sensor eine Schaltung bauen, die ab einem gegebenen Wert (z.B. 20°C) eine Relais schaltet. Mit den üblichen Sketchen habe ich das Relais einzeln testen können und habe mit dem DS18S20 Temperaturen gemessen, im Serial Monitor gesehen. Aber welchen Parameter muss ich im Sketch denn angeben, dass das Programm weiß, dass ich bei z.B. 20°C das Relais schalten möchte??? Ich habe hier den Sketch teilweise dargestellt. Ganz unten sieht man die Stelle, um die es mir geht: WAS muss ich angeben, damit das Programm versteht, dass ab (z.B. gemessenen 20°C) das Relais geschaltet werden soll? Kann mir jemand dabei helfen?? Was mache ich denn falsch??? Hier Auszüge aus meinem Sketch: Bibliotheken: <Wire.h> <OneWire.h> <DallasTemperature.h> (...) const int DS18S20 = 2; // An Pin 2 liegt der Data-Pin des DS18S20. const int relaisPin = 11; // An Pin 11 liegt der VCC des Relais an. float Temperatures = digitalRead)2); // Das ist doch das Auslesen der Temp. // - oder? pinMode(relaisPin, OUTPUT); void setup(void) { (...) // hier steht das Erkennen des Ds18S20 Device usw. } void loop(void) { sensors.requestTemperatures(); //und jetzt kommt die if-Schleife, bei der ich nicht weiß, was ich als //Referenz-Wert bzw. Parameter angeben soll, damit das Programm bei dem //eingestellten Wert (hier: 20°C) das Relais schalten soll ... // ich habe das so und anders versucht, aber nie hat das Relais geschaltet digitalRead(2); // Ist das ein brauchbarer Ansatz?? if (Temperatures > 20) { // Ist 'Temperatures' hier das richtige??? digitalWrite(relaisPin, LOW); // Jetzt müsste das Relais ja schalten ...? } else { digitalWrite(relaisPin, HIGH); } Kann mir jemand dabei helfen???
:
Verschoben durch User
Die Hoffnung stirbt zuletzt? Frage Gurgel, der antwortet auch auf Trivialitäten. Wir hier so wohl eher nicht. If Temperatur größer Sollwert, dann aus, Else nicht....
Helmut O. schrieb: > if (Temperatures > 20) Eine float-Variable mit einer int-Konstanten zu vergleichen, ist nicht so pralle. Und was soll das mit dem "digitalRead(2)" werden?
Wolfgang schrieb: > Eine float-Variable mit einer int-Konstanten zu vergleichen, ist nicht > so pralle. Quatsch. Das ist überhaupt kein Problem. Der Compiler macht dadraus einfach direkt ein 20.0f. Zum Topic: Du kannst den DS18S20 nicht direkt mit digitalRead auslesen. Der verwendet den OneWire Bus. Die Header dafür hast du ja schon. Jetzt einfach dem Rest der Tutorials folgen, die du überall findest.
Helmut O. schrieb: > if (Temperatures > 20) { // Ist 'Temperatures' hier das richtige??? Das kommt jetzt total unbeholfen rüber. Du hast im seriellen Monitor Temperaturwerte gesehen, also kannst Du in serial.print(irgendwas) gucken, wie die Variable heißt und wie sie zyklisch ermittelt wird. Dein "digitalRead(2);" ist falsch und kann weg: Erstens willst Du keinen digitalen Zustand, sondern einen analogen Wert lesen. Zweitens ist ein Read ohne Zuweisung auf eine Variable sinnlos. Füge vor Deinem "if" ein "Serial.println(Temperatures);" ein und schaue per Monitor, ob diese Variable einen sinnvollen Wert hat. Wenn nein, zurück auf Anfang und gucken, ob sie anders heißt oder wie / wo sie einzulesen ist. Es ist keine Schande, an sowas eine Stunde oder zwei herum zu kauen, da musst Du selbst durch. Das sage ich nicht, weil ich böse bin, ich spreche aus eigener Erfahrung! Wolfgang schrieb: > Eine float-Variable mit einer int-Konstanten zu vergleichen, ist nicht so pralle. Das macht in der Arduino-Umgebung keinerlei Probleme, tue ich des öfteren.
ntldr schrieb: > Quatsch. Das ist überhaupt kein Problem. Der Compiler macht dadraus > einfach direkt ein 20.0f. Eben - man sollte sich trotzdem der Automatismen bewußt sein, die da ablaufen. Äpfel mit Birnen zu vergleichen, ist kein guter Stil. Die ".0f" kann man gerade noch hinschreiben. Man fragt sich natürlich, warum man bei der Aktion überhaupt mit float rummachen muss. Der Sensor liefert int-Daten und damit kann man auch den Grenzwertvergleich machen.
Wolfgang schrieb: > Man fragt sich natürlich, warum man bei der Aktion überhaupt mit float rummachen muss. Das ist für die Fragestellung vollkommen unerheblich. Helmut scheitert daran, entweder die falsche Variable zu vergleichen oder diese nicht zyklisch einzulesen. Seine "if - else" sieht sinnvoll aus. > Der Sensor liefert int-Daten und damit kann man auch den > Grenzwertvergleich machen. Der 18S20 liefert mindestens eine Nachkommastelle, also ein float. Die Anwendung ist so simpel, dass sie sogar auf einem AT168 oder weniger liefe, durch int anstatt float gesparter Speicher gibt kein Geld zurück.
Manfred schrieb: > Der 18S20 liefert mindestens eine Nachkommastelle, also ein float. Der DS18B20 liefert keine Float und auch keine Nachkommastellen. Der Sensor liefert 9 Bit signed integer, die als 16 Bit signed integer ausgegeben werden (Fig. 4 im Datenblatt). Das LSB hat ein Gewicht von 0.5°C. Man muss die ausgegebenen Int-Zahlen also mit (Grenzwert * 2) vergleichen. Mit digitalRead() wird man die gemessenen Daten allerdings nie zu Gesicht bekommen.
Hallo, Manfred schrieb: > Der 18S20 liefert mindestens eine Nachkommastelle, also ein float. Nein, der Baustein liefert einen Digitalwert (siehe Tabelle 1 im Datenblatt) und den kann man doch direkt für einen Vergleich mit dem Wert zum Schalten des Relais benutzen. rhf
Hallo, Wolfgang, und danke für Deine Antworten, die ich hier, so weit ich es verstehe, gerne beantworte: Wolfgang (Gast): => Eine float-Variable mit einer int-Konstanten zu vergleichen, ist nicht so pralle. * Mit "float-Variable mit einer int-Konstanten zu vergleichen" hast Du, nehme ich an, meine Zeile float Temperatures = digitalRead)2); // Das ist doch das Auslesen der Temp. // - oder? gemeint. Ja, danke, damit hat sich meine Frage zunächst beantwortet (was auch andere hilfsbereite Schreiber meinen), dass diese keine sinnvolle Herangehensweise ist. => Und was soll das mit dem "digitalRead(2)" werden? * Das war ein Versuch ... aus einigen der weiter unten erhaltenen Antworten kann ich lesen, dass dieser Weg mich nicht weiter bringt. Allerdings nicht aus allen, denn ntldr (Gast) meint dazu: => Quatsch. Das ist überhaupt kein Problem. Der Compiler macht dadraus einfach direkt ein 20.0f. * Was jetzt stimmt, weiß ich also nicht ... aber ist vielleicht auch nicht so wichtig. Mal sehen, ob ich das Programm zum Laufen bekomme und Dank Dir für Deinen Beitrag dazu! Helmut
Danke, ntldr (Gast) für Deine Antwort! Da lese ich: => Zum Topic: Du kannst den DS18S20 nicht direkt mit digitalRead auslesen. Der verwendet den OneWire Bus. Die Header dafür hast du ja schon. Jetzt einfach dem Rest der Tutorials folgen, die du überall findest. * Dass ich den DS18S20 nicht mit digitalRead auslesen kann, habe ich verstanden, danke für den Hinweis! Den OneWire Bus Header habe ich, ja. Da steht in meinem Sketch drin: OneWire oneWire(One_Wire_Bus); ... aber wie kann ich diesen Header benutzen, um dem Programm zu sagen, dass es die z.B. 20°C lesen und mit dem von mir vorgegebenen Wert vergleichen soll? Wenn ich schreibe: if (One_Wire_Bus > 20); bekomme ich die error-Meldung: 'One_Wire_Bus' was not declared in this scope Warum will mir denn keiner konkret verraten, wie ich das richtig machen muss??? Mit Dank für Deine Mühen Helmut
Helmut O. schrieb: > if (One_Wire_Bus > 20); > > Warum will mir denn keiner konkret verraten, wie ich das richtig machen > muss??? isst du Eier roh oder bereitest du sie zu? 1 mit onewire die Temperatur LESEN 2 dann erst die gelesene Temperatur verwenden hier schon fertig https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ und ab Zeile 14 kannst du die Temperatur nutzen na ja if (Temperatures > 20) { // Ist 'Temperatures' hier das richtige??? besser (siehe Name von... if(temperature > 20.0) { ; };// mach was statt { ; }; // natürlich was sinnvolles einstellen
Hallo, Manfred (Gast), vielen Dank für Deine Antwort! Da lese ich => Das kommt jetzt total unbeholfen rüber. * Womit ich Dir recht gebe ... in diesem Punkt komme ich mir auch unbeholfen vor, sonst hätte ich doch hier nicht um Hilfe gebeten. => Du hast im seriellen Monitor Temperaturwerte gesehen, also kannst Du in serial.print(irgendwas) gucken, wie die Variable heißt und wie sie zyklisch ermittelt wird. * Nein, das kann ich leider nicht. In meinem Sketch kommt das serial.print(irgendwas) gar nicht vor ... und trotzdem kann ich im seriellen Monitor die Temperaturen lesen, vgl. angehängtes Foto "Sketch 1". => Dein "digitalRead(2);" ist falsch und kann weg: Erstens willst Du keinen digitalen Zustand, sondern einen analogen Wert lesen. Zweitens ist ein Read ohne Zuweisung auf eine Variable sinnlos. * OK, danke, digitalRead(2) ist jetzt weg. => Füge vor Deinem "if" ein "Serial.println(Temperatures);" ein und schaue per Monitor, ob diese Variable einen sinnvollen Wert hat. * Wenn ich vor dem "if" ein "Serial.println(Temperatures);" einsetze, antwortet mir das System: "'Temperatures' was not declared in this scope" => Wenn nein, zurück auf Anfang und gucken, ob sie anders heißt oder wie / wo sie einzulesen ist. * Das habe ich getan und festgestellt, dass im Sketch steht: serial.println("Temperatursensor - DS18S20"); und wenn ich das vor dem if eingebe, schimpft mich zwar keine error-Meldung, aber es hilft mir gar nix ... da weiß ich immer noch nicht, was ich dem Programm sagen soll, damit es bei überschreiten der 20°C das Relais schaltet ... Schreibe ich bei dem if folgendes: if (Temperatursensor - DS18S20 > 20) { // dann digitalWrite und else ... dann kommt die error-Meldung " 'Temperatursensor' was not declared in this scope" Was muss ich denn tun, damit die Schaltung das versteht??? Mit Dank für Deine Mühen Helmut
Hallo, Manfred, Und danke für Deine Antwort! Da steht zu lesen: => Der 18S20 liefert mindestens eine Nachkommastelle, also ein float. Nein, der Baustein liefert einen Digitalwert (siehe Tabelle 1 im Datenblatt) und den kann man doch direkt für einen Vergleich mit dem Wert zum Schalten des Relais benutzen. * Ja, das ist genau meine Frage: WIE kann ich den gelieferten Digitalwert für den Vergleich mit dem Schaltwert fürs Relais benutzen?? Die Tabelle 1 im Datenblatt zeigt mir ein Schema mit Rechtecken, gibt mir aber keinen für mich verständlichen Hinweis zur Lösung meines Problems ... Hättest DU vielleicht einen? Mit Dank für Deine Antwort Helmut
Hi >Die Tabelle 1 im Datenblatt zeigt mir ein Schema mit Rechtecken, gibt >mir aber keinen für mich verständlichen Hinweis zur Lösung meines >Problems ... Die Werte stehen unter 'Table 1. Temperature/Data Relationship'. MfG Spess
Helmut O. schrieb: > * Ja, das ist genau meine Frage: > WIE kann ich den gelieferten Digitalwert für den Vergleich mit dem > Schaltwert fürs Relais benutzen?? fragst du auch wie du ein Ei verzehrfertig bekommst? eine Lösung als Programm zeigte ich und auch wo du erweiterst, aber so langsam denke ich das ist nichts für dich. Helmut O. schrieb: > * Nein, das kann ich leider nicht. > In meinem Sketch kommt das serial.print(irgendwas) gar nicht vor ... und > trotzdem kann ich im seriellen Monitor die Temperaturen lesen, vgl. > angehängtes Foto "Sketch 1". du zeigst ja auch nicht alles, scrolle mal runter zu loop()
:
Bearbeitet durch User
Hallo, Joachim B., vielen Dank für Deine Antwort ... vielleicht hilft die mir weiter? * diesen Beitrag https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ hatte ich mit schon einmal und habe ihn jetzt nochmal angesehen und in meinen Sketch kopiert und zum Laufen gebracht ... das ist der erste Sketch, der unsinnige Temperaturen liefert, Raumtemperatur bei mir 1,88 ... Warum dieser Sketch so einen Käse macht, weiß ich nicht. => und ab Zeile 14 kannst du die Temperatur nutzen * Zeile 14 meinst Du diese? float getTemp() // returns the temperature from one DS18S20 in DEG Celsius byte data[12]; byte addr[8]; if ( !ds.search(addr)) { // no more sensors on chain, reset search ds.reset_search(); return -1000; } * Wie kann ich das jetzt für MEINE if-Schleife benutzen, in der ich die gemessene mit der von mir gegebenen Temperatur vergleicht ... vorausgestzt, die gemessene Temperatur ist kein Käse ...? Mit Dank für Deine Mühen Helmut na ja if (Temperatures > 20) { // Ist 'Temperatures' hier das richtige??? besser (siehe Name von... if(temperature > 20.0) { ; };// mach was statt { ; }; // natürlich was sinnvolles einstellen
Helmut O. schrieb: > * Zeile 14 meinst Du diese? > > float getTemp() // returns the temperature from one DS18S20 in DEG > Celsius sag mal willst du mich veräppeln? Joachim B. schrieb: > und ab Zeile 14 kannst du die Temperatur nutzen
Nein, Joachim, ich will Dich auf keinen Fall veräppeln .. die Lösung meines Problems ist mir viel zu wichtig,da mache ich keine doofen Späße. Ich habe zurückgefragt, welche Zeile Du mit 14 meinst, weil MEIN Sketch keine so schicke Zählung am linken Rand hat ... und ich natürlich in Meinem Sketch gesucht habe ... jetzt ist mir klar, dass Du die Zeile 14 im Original gemeint hat, sorry. Und jetzt versuche ich also, diese Zeile zu verwenden. Ich habe Deine Worte vor mir: => na ja if (Temperatures > 20) { // Ist 'Temperatures' hier das richtige??? * Offenbar nicht ... hier weiß ich immer noch nicht genau, WELCHEN Namen ich einsetzen soll. => besser (siehe Name von... if(temperature > 20.0) { ; };// mach was *Ja, versuche ich ja .... aber WELCHEN Namen muss ich denn dort jetzt einsetzen?? DAS ist doch meine Kern-Frage hier ... Mit ernst gemeinten Grüßen Helmut
Hallo, Spess! Ja, da stehen Werte ... aber was fange ich denn mit denen an? Wie komme ich denn von diesen Werten auf den Vergleich der von mir vorgegebenen Temperatur mit der gemessenen??? Mit Dank für Deinen Beitrag Helmut
Helmut O. schrieb: > ich will Dich auf keinen Fall veräppeln .. die Worte les ich wohl..... > Ich habe zurückgefragt, welche Zeile Du mit 14 meinst, weil MEIN Sketch > keine so schicke Zählung am linken Rand hat ... und ich natürlich in > Meinem Sketch gesucht habe ... jetzt ist mir klar, dass Du die Zeile 14 > im Original gemeint hat, sorry. na wenn ich einen Link schicke, worauf werde ich mich dann wohl beziehen? > Und jetzt versuche ich also, diese Zeile zu verwenden. > > Ich habe Deine Worte vor mir: > => na ja > if (Temperatures > 20) { // Ist 'Temperatures' hier das richtige??? wenn im Sketch mit der Zeile 14 die Variable der Temperatur an Serial.print geschickt wird, wie wird sie dann heissen? offensichtlich nicht "Temperatures" > * Offenbar nicht ... hier weiß ich immer noch nicht genau, WELCHEN Namen > ich einsetzen soll. dabei schrieb ich sogar schon die Lösung > => besser (siehe Name von... > if(temperature > 20.0) { ; };// mach was und nun fühle ich mich doppelt veräppelt oder du bist wirklich absolut ungeeignet dafür. > *Ja, versuche ich ja .... aber WELCHEN Namen muss ich denn dort jetzt > einsetzen?? DAS ist doch meine Kern-Frage hier ... > Mit ernst gemeinten Grüßen > Helmut glaube ich dir das du das total ernst meinst mit dem veräppeln. Beitrag "Re: Welchen Parameter muss ich nutzen, um mit Arduino und DS18S20 ein Relais zu steuern?" kein loop in Sicht Beitrag "Re: Welchen Parameter muss ich nutzen, um mit Arduino und DS18S20 ein Relais zu steuern?" loop in Sicht aber immer noch kein Serial.print
:
Bearbeitet durch User
Hi >Wie komme ich denn von diesen Werten auf den Vergleich der von mir >vorgegebenen Temperatur mit der gemessenen??? Dir sind binäre und hexadezimale Zahlendarstellungen ein Begriff? 20°C entspricht einem vom Sensor gelesenen Wert = 40D = 0x28 oder 0b0000000000101000 Und dann brauchst du nur eine Vergleich von deinem Messwert und den 20° zu machen. MfG Spess
OK, ich schreibe jetzt meinen gesamten Sketch hier rein. Bin jetzt - wenn ich ihn richtig verstanden habe - dem Tipp von Joachim B. gefolgt und habe den von ihm empfohlenen Sketch https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ kopiert und am Ende meine if-Schleife reingesetzt. Meine Kernfrage, was ich denn eingeben muss, damit das Programm läuft, bekomme ich von Joachim B. mit dem Tipp beantwortet, ich sollte ich 1 Mit onewire die Temperatur lesen // ja, aber WIEEEEE DENN??? 2 dann erst die gelesene Temperatur verwenden. // Ja, WIEE DENN?? Ab Zeile 14 (im Original aus at.) könne ich die Temperatur nutzen. Ich solle, so meint Manfred, in serial.print(irgendwas) gucken,wie die Variable heißt und wie sie zyklisch ermittelt wird. //Was heißt denn 'zyklisch ermittelt'?? Ich finde an der angegebenen Stelle serial.print(temperature); und wenn ich 'temperature' in der if - Schleife eingebe, schimpft die error-Meldung " 'temperature' was not declared in this scope" Hier also der vollständige Sketch, der leider immer noch nicht funktioniert. Was mache ich denn falsch???? Ist doch zum Weinen!!
1 | #include <Wire.h> |
2 | #include <DallasTemperature.h> |
3 | #include <OneWire.h> |
4 | |
5 | const int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2 |
6 | const int relaisPin = 12; // Relais auf dem Pin 12 //Temperature chip i/o |
7 | |
8 | OneWire ds(DS18S20_Pin); // on digital pin 2 |
9 | |
10 | void setup(void) |
11 | {
|
12 | Serial.begin(9600); |
13 | }
|
14 | |
15 | void loop(void) { |
16 | float temperature = getTemp(); |
17 | Serial.println(temperature); |
18 | |
19 | delay(1000); //just here to slow down the output so it is easier to read |
20 | |
21 | }
|
22 | |
23 | |
24 | float getTemp(){ |
25 | //returns the temperature from one DS18S20 in DEG Celsius
|
26 | |
27 | byte data[12]; |
28 | byte addr[8]; |
29 | |
30 | if ( !ds.search(addr)) { |
31 | //no more sensors on chain, reset search
|
32 | ds.reset_search(); |
33 | return -1000; |
34 | }
|
35 | |
36 | if ( OneWire::crc8( addr, 7) != addr[7]) { |
37 | Serial.println("CRC is not valid!"); |
38 | return -1000; |
39 | }
|
40 | |
41 | if ( addr[0] != 0x10 && addr[0] != 0x28) { |
42 | Serial.print("Device is not recognized"); |
43 | return -1000; |
44 | }
|
45 | |
46 | ds.reset(); |
47 | ds.select(addr); |
48 | ds.write(0x44,1); // start conversion, with parasite power on at the end |
49 | |
50 | byte present = ds.reset(); |
51 | ds.select(addr); |
52 | ds.write(0xBE); // Read Scratchpad |
53 | |
54 | |
55 | for (int i = 0; i < 9; i++) { // we need 9 bytes |
56 | data[i] = ds.read(); |
57 | }
|
58 | |
59 | ds.reset_search(); |
60 | |
61 | byte MSB = data[1]; |
62 | byte LSB = data[0]; |
63 | |
64 | float tempRead = ((MSB << 8) | LSB); //using two's compliment |
65 | float TemperatureSum = tempRead / 16; |
66 | |
67 | return TemperatureSum; |
68 | |
69 | |
70 | |
71 | if(temperatures>20.0){ |
72 | digitalWrite(relaisPin, LOW); |
73 | }
|
74 | else
|
75 | {digitalWrite(relaisPin, HIGH); |
76 | }}
|
magahigi schrieb: > Ist doch zum Weinen!! ja leider > https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ > kopiert und am Ende meine if-Schleife reingesetzt. warum am Ende, ich zeigt schon mehrmals das du die Variable ab Serial.print Zeile 14 nutzen kannst. > Meine Kernfrage, was ich denn eingeben muss hatte ich bereits beantwortet, ohne sinnverstehendes LEsen wird das aber nichts. void loop(void) { float temperature = getTemp(); Serial.println(temperature); // Zeile 14 wird ja die Temperatur ausegeben // und wenn sie ausgeben ist kanst du sie auch für deinen Vergeich nutzen! // hier im sketch wurde sie "temperature" genannt delay(1000); //just here to slow down the output so it is easier to read } > 2 dann erst die gelesene Temperatur verwenden. // Ja, WIEE DENN?? wie oft soll man das noch erklären? > Ab Zeile 14 (im Original aus at.) könne ich die Temperatur nutzen. > Ich solle, so meint Manfred, in serial.print(irgendwas) gucken,wie die > Variable heißt und wie sie zyklisch ermittelt wird. //Was heißt denn > 'zyklisch ermittelt'?? was heisst zyklisch? Adjektiv 1. einem Zyklus (1) entsprechend, in Zyklen sich vollziehend "etwas läuft zyklisch ab, verläuft zyklisch" das wäre ja void loop(void) { // alles dazwischen wird immer wieder gemacht } wenn ich nun frage was wird gemacht? schaust du dann mal hin? > Ich finde an der angegebenen Stelle > serial.print(temperature); aber was machst du? du kopierst > if(temperatures>20.0){ > digitalWrite(relaisPin, LOW); > } > else irgendwo hin, nicht an der genannten Stelle dort wo du das hinkopiert hast heisst die Variable doch ganz anders! > return TemperatureSum; ausserdem wird nach return auch nichts mehr gemacht > und wenn ich 'temperature' in der if - Schleife eingebe, schimpft die > error-Meldung > " 'temperature' was not declared in this scope" ja welch Wunder, dort heisst sie ja auch anders. Du zerschlägst das Ei auf dem Frühstücksteller, rennst aus der Küche und schimpfst das es nicht gekocht im Eierbecher liegt? Wenn ich schreibe im Sketch ab Zeile 14 darfst du das nutzen, warum kopierst du es ans Ende der Welt, war das Zeile 15, nach 14? zähle noch mal nach...... Wie beim Ei kochen muss man schon eine Reihenfolge einhalten, 1. aus dem Kühlschrank nehmen 2. in einen Topf mit Wasser legen 3. den Topf mit Wasser und Ei auf den Herd stellen 4. nach der Dauer das Ei rausnehmen 5. in den Eierbecher tun 6. aufklopfen 7. Salz rauf 8. Löffel nehmen 9. Ei löffeln Du kannst natürlich nach 1 zu 5 springen, wohl bekommts
magahigi schrieb: > Hier also der vollständige Sketch, der leider immer noch nicht > funktioniert. Nur als kleiner Tip am Rande...in allen Editoren, die ich kenne, kann man eine Zeilennummerierung einschalten! Vielleicht versuchst du das erst einmal. Dann kann man sich deutlich besser über dein Programm unterhalten!! Gruß Rainer
Joachim B. schrieb: > oder du bist wirklich absolut ungeeignet dafür. Nicht ganz abwegig. Helmut: Weshalb Du erneut einen unvollständigen Screenshot gepostet hast ... dabei gibt sich Joachim nun wirklich viel Mühe mit Dir :-) Jetzt mal zu Deinem Sketch, ich ziehe den in die IDE: Dein Sketch wirft eine eindeutige Fehlermeldung "in Zeile 71 temperatures nicht deklarierte Variable" - warum hast Du Dich nicht darum gekümmert, bevor Du gepostet hast? In Zeile 17 steht "Serial.println(temperature);" - wenn da ein sinnvoller Temperaturwert in °C erscheint, dürfte klar sein, wie die Variable wirklich heißt? Deklariert ist diese variable nur innerhalb (loop), also kannst' sie nicht weiter unten in "get temp" verwenden. Warum auch ... ich würde die Abfrage auf >20° in die Hauptschleife legen. Testen kann ich mangels Hardware nicht, aber zumindest kompiliert das:
1 | #include <Wire.h> |
2 | #include <DallasTemperature.h> |
3 | #include <OneWire.h> |
4 | |
5 | const int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2 |
6 | const int relaisPin = 12; // Relais auf dem Pin 12 //Temperature chip i/o |
7 | |
8 | OneWire ds(DS18S20_Pin); // on digital pin 2 |
9 | |
10 | void setup(void) |
11 | {
|
12 | Serial.begin(9600); |
13 | }
|
14 | |
15 | void loop(void) { |
16 | float temperature = getTemp(); |
17 | Serial.println(temperature); |
18 | |
19 | delay(1000); //just here to slow down the output so it is easier to read |
20 | |
21 | if(temperature>20.0){ |
22 | digitalWrite(relaisPin, LOW); |
23 | }
|
24 | else { |
25 | digitalWrite(relaisPin, HIGH); |
26 | }
|
27 | }
|
28 | |
29 | |
30 | float getTemp(){ |
31 | //returns the temperature from one DS18S20 in DEG Celsius
|
32 | |
33 | byte data[12]; |
34 | byte addr[8]; |
35 | |
36 | if ( !ds.search(addr)) { |
37 | //no more sensors on chain, reset search
|
38 | ds.reset_search(); |
39 | return -1000; |
40 | }
|
41 | |
42 | if ( OneWire::crc8( addr, 7) != addr[7]) { |
43 | Serial.println("CRC is not valid!"); |
44 | return -1000; |
45 | }
|
46 | |
47 | if ( addr[0] != 0x10 && addr[0] != 0x28) { |
48 | Serial.print("Device is not recognized"); |
49 | return -1000; |
50 | }
|
51 | |
52 | ds.reset(); |
53 | ds.select(addr); |
54 | ds.write(0x44,1); // start conversion, with parasite power on at the end |
55 | |
56 | byte present = ds.reset(); |
57 | ds.select(addr); |
58 | ds.write(0xBE); // Read Scratchpad |
59 | |
60 | |
61 | for (int i = 0; i < 9; i++) { // we need 9 bytes |
62 | data[i] = ds.read(); |
63 | }
|
64 | |
65 | ds.reset_search(); |
66 | |
67 | byte MSB = data[1]; |
68 | byte LSB = data[0]; |
69 | |
70 | float tempRead = ((MSB << 8) | LSB); //using two's compliment |
71 | float TemperatureSum = tempRead / 16; |
72 | |
73 | return TemperatureSum; |
74 | }
|
Rainer V. schrieb: > ...in allen Editoren, die ich kenne, kann man eine Zeilennummerierung einschalten! Sogar in der Arduino ...
Manfred schrieb: > Rainer V. schrieb: >> ...in allen Editoren, die ich kenne, kann man eine Zeilennummerierung > einschalten! > > Sogar in der Arduino ... ...na also...
In der Arduino IDE kannst du die Anzeige von Zeilennummern einstellen. Klicke im Datei Menü auf Voreinstellungen, dann auf "Zeilennummern anzeigen".
@TO Du hast ein ganz einfaches Problem: Du kopierst wild irgendwelche Codeschnipsel zusammen, ohne zu wissen was Du tust. Damit kommt dann genau auch das heraus was wir hier sehen. Das macht es auch so schwer da zu helfen, weil Du die Basics schon nicht verstehst. Ich bewundere gerade Joachims Gelassenheit. Ich kann Dir nur Folgendes empfehlen: 1. Kaufe Dir ein gutes Buch zum Thema Arduino und dessen Programmierung. Was ich hier geschrieben habe meine ich auch wortwörtlich. Das Buch läßt sich besser durcharbeiten als ein Onlineturial. 2. Arbeite das gewissenhaft Schritt für Schritt durch und versuche die dort beschriebenen Beispiele zu verstehen. Die Betonung liegt auf verstehen. Einfach nur abtippen bringt gar nichts, weil Dich das nicht weiter bringt. Denke nicht das das alles an einem Tag erledigt ist. Rechner besser in Wochen.
Ja, Rainer, das habe ich versucht. Allerdings läuft mein arduino auf einem raspberry, und dort gibt es zwar den Kartenreiter "Datei", dort auch "Einstellungen", aber "Zeilennummern anzeigen" suche ich dort vergeblich ... was ich sehr schade finde, da ich auch lieber eindeutig beschreiben und verstehen würde. Helmut
Dann musst du vielleicht mal eine neuere Version der Arduino IDE installieren. Das ist doch kinderleicht. Am Linux liegt es jedenfalls nicht.
Also ehrlich, abgesehen davon, dass ich unter Linux ausgerechnet auf einem R-PI entwickeln möchte...ist das doch wirklich alles wildes gehampel! Gib' dir mal einen Ruck und versuche - vor allem für dich selbst , etwas Systematik in dein Vorhaben zu bringen. Fragen im Forum hat und soll vor allem - den Sinn - haben, die Frage "richtig" zu stellen. Einfach nur was hinschreiben bringt gar nichts!!! Und schon gar nicht ohne Zeilennummern :-) Viel Erfolg und Gruß Rainer
Rainer V. schrieb: > Also ehrlich, abgesehen davon, Punkt Punkt Punkt wurde wohl alles hinreichend erklärt. Vielleicht ist H* ja so nett, mal meine Änderung Beitrag "Re: Welchen Parameter muss ich nutzen, um mit Arduino und DS18S20 ein Relais zu steuern?" auszutesten - im Gegensatz zu seinem Sketch (18:05) ist die zumindest ohne Fehlermeldung kompilierbar. Wenn danach nichts von ihm kommt, *was irgendwie logisch nachvollziehbar ist* , hat es keinen Sinn mehr - dann empfehle ich, sich mit Holzarbeiten zu befassen.
Manfred schrieb: > - dann empfehle ich, sich mit Holzarbeiten zu befassen. Genau da wäre so ein Thermostat aber ausgesprochen praktisch, damit es in der Werkstatt nicht zu kalt wird.
magahigi schrieb: > Allerdings läuft mein arduino auf einem raspberry, und dort gibt es > zwar den Kartenreiter "Datei", dort auch "Einstellungen", aber > "Zeilennummern anzeigen" suche ich dort vergeblich ... Stefanus F. schrieb: > Dann musst du vielleicht mal eine neuere Version der Arduino IDE > installieren geht doch Zeno schrieb: > Ich bewundere > gerade Joachims Gelassenheit. danke
:
Bearbeitet durch User
Ja, ich habe den Sketch ausprobiert, der zunächst keine error-Meldungen nach sich zieht ...aber er komm auf unsinnige Werte, wie 2,13°, die sicherlich nicht der Raumtemperatur entsprechen. Ob es nur daran liegt, dass die gemessene Temperatur nicht zweistellig angezeigt weren kann? Jedenfalls funktioniert dieser Sketch auch nicht. Sollte ich diesen Sketch mit anderen zu kombinieren versuchen, die nachvollziehbare Temperaturangaben erzielt haben?
Helmut O. schrieb: > Sollte ich diesen Sketch mit anderen zu kombinieren versuchen, die > nachvollziehbare Temperaturangaben erzielt haben? Nein. ad Teil 1) Probier mal zum Temperaturmessen; https://github.com/milesburton/Arduino-Temperature-Control-Library/blob/master/examples/Simple/Simple.pde (1. Link in Suche nach "ds18s20 arduino library") leo
Helmut O. schrieb: > Ja, ich habe den Sketch ausprobiert, der zunächst keine > error-Meldungen nach sich zieht ...aber er komm auf unsinnige Werte, wie > 2,13°, die sicherlich nicht der Raumtemperatur entsprechen. Zu Anfang hast Du geschrieben, Du hättest im seriellen Monitor korrekte Temperaturwerte, das passt nicht zusammen. Ich gehen jetzt davon aus, dass diese 2,13° per serial.print in Zeile 17 ausgegeben werden. In der Zeile davor wird "getTemp()" aufgerufen, welches in der Variable "temperature" diesen Wert zurück gibt. Es ist an Dir, eine strukturierte Fehlersuche zu machen: 1. Andern sich die 2.13°, wenn der Sensor erwärmt wird? Ja - dann liegt ein Rechenfehler in getTemp() vor. Nein - dann ist der Sensor defekt, falsch angeklemmt oder ein falscher Typ. > Ob es nur daran liegt, dass die gemessene Temperatur nicht zweistellig > angezeigt weren kann? Nein, "float temperature = getTemp();" kann deutlich längere Zahlen darstellen. > Sollte ich diesen Sketch mit anderen zu kombinieren versuchen, die > nachvollziehbare Temperaturangaben erzielt haben? Das wäre ein denkbarer Weg, aus einem anderen Sketch den Teil zu isolieren, der die Temperatur holt und berechnet.
Helmut O. schrieb: > Ja, ich habe den Sketch ausprobiert, der zunächst keine > error-Meldungen nach sich zieht ...aber er komm auf unsinnige Werte, wie > 2,13°, die sicherlich nicht der Raumtemperatur entsprechen. Käme es dir passender vor, wenn der Sensor für die Raumtemperatur einen Wert von 17°C ermitteln würde?
Manfred schrieb: > aber er komm auf unsinnige Werte, Mir fällt gerade noch auf, dass die zwei #include <Wire.h> #include <DallasTemperature.h> von Dir garnicht benutzt werden! Probiere "float temperature = getTemp();" zu ersetzen durch sensors.requestTemperatures(); // Send the command to get temperatures Serial.println("DONE"); float temperature = sensors.getTempCByIndex(0); - das habe ich aus dem link von leo (Gast) für Dich abgemalt.
Na toll, Helmut O ist in meiner Klasse auf der Fachoberschule hier in Darmstadt und das ist eine Aufgabe zu unserer Facharbeit! Auf dem Schulhof posaunte er was von diesem Forum und alle haben nun Spaß hier mitzulesen wie er auch hier nicht klarkommt. Jan aus der FOS 11b ????
Neuer Versuch:
1 | #include <Wire.h> |
2 | #include <DallasTemperature.h> |
3 | #include <OneWire.h> |
4 | #define ONE_WIRE_BUS 2
|
5 | |
6 | const int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2 |
7 | const int relaisPin = 12; // Relais auf dem Pin 12 //Temperature chip i/o |
8 | |
9 | OneWire ds(DS18S20_Pin); // on digital pin 2 |
10 | OneWire oneWire(ONE_WIRE_BUS); |
11 | DallasTemperature sensors(&oneWire); |
12 | |
13 | void setup(void) { |
14 | Serial.begin(9600); |
15 | sensors.begin(); |
16 | }
|
17 | |
18 | void loop(void) { |
19 | sensors.requestTemperatures(); // Send the command to get temperatures |
20 | Serial.println("DONE"); |
21 | float temperature = sensors.getTempCByIndex(0); |
22 | Serial.println(temperature); |
23 | delay(1000); //just here to slow down the output so it is easier to read |
24 | |
25 | if(temperature>20.0){ |
26 | digitalWrite(relaisPin, LOW); |
27 | }
|
28 | else { |
29 | digitalWrite(relaisPin, HIGH); |
30 | }
|
31 | }
|
Hopsink schrieb: > Helmut O ist in meiner Klasse auf der Fachoberschule hier in Darmstadt Helmut - magst Du das bestätigen? Hopsink schrieb: > Auf dem Schulhof posaunte er was von diesem Forum und alle haben nun > Spaß hier mitzulesen wie er auch hier nicht klarkommt. Als ordentlicher Mensch wirst Du Dich sicherlich bemühen, mit Helmut gemeinsam eine Lösung zu finden? Schadensfreude oder Hohn sind in einem Technikforum fehl am Platze .
Rein fiktiv oder?!
Manfred schrieb: > Als ordentlicher Mensch wirst Du Dich sicherlich bemühen, mit Helmut > gemeinsam eine Lösung zu finden? Schadensfreude oder Hohn sind in einem > Technikforum fehl am Platze . Ich finde es auch nicht so toll, daß er hier seinen Komilitonen so vorführt, selbst wenn er Grund dazu hätte. Es gibt eben Dinge die tut man nicht. Andererseits wäre es wünschenwerte wenn Helmut mal meinen Rat Zeno schrieb: > Ich kann Dir nur Folgendes empfehlen: > 1. Kaufe Dir ein gutes Buch zum Thema Arduino und dessen Programmierung. > Was ich hier geschrieben habe meine ich auch wortwörtlich. Das Buch läßt > sich besser dur ..... befolgen würde und sich endlich mal auf den Hosenboden setzen würde, anstatt nur irgendwelche Codeschnipsel zu kopieren ohne deren Sinn verstanden zu haben. Es hilft ihm auch nicht wenn ihm hier jede Codezeile vorgekaut wird. Er muß erst mal die Grundlagen verstehen und dann kann man auch vernünftig und gezielt helfen. So und mit seiner Einstellung zu der Sache, lernt er gar nichts. Wenn das unser ingenieurtechnischer Nachwuchs werden soll, dann sehe ich bei dieser Einstellung für die Zukunft schwarz.
Zeno schrieb: > Andererseits wäre es wünschenwerte wenn Helmut mal meinen Rat > befolgen würde und sich endlich mal auf den Hosenboden setzen würde, > anstatt nur irgendwelche Codeschnipsel zu kopieren ohne deren Sinn > verstanden zu haben. Das Klischee des "Arduinos" :-) Ganz ehrlich: Ich selbst nutze auch viele fertige Libraries und schlage mich nicht mit den Bits eines LCD, INA219, DS18_irgendwas, SD-Card etc., das ist ja der Vorteil der Hochsprache. Ich habe schon so manche Stunde getestet, wenn irgendwas nicht erwartungsgemäß läuft, aber ich kann halbwegs strukturiert Fehler suchen. Meinen ersten Mikroprozessor hatte ich auf dem Tisch, als Internet noch nicht vorstellbar war, also Datenbuch und alleine in der Ecke - das hat mich sicherlich anders geprägt. > Es hilft ihm auch nicht wenn ihm hier jede Codezeile vorgekaut wird. Er > muß erst mal die Grundlagen verstehen und dann kann man auch vernünftig > und gezielt helfen. So und mit seiner Einstellung zu der Sache, lernt er > gar nichts. Damit hast Du zweifelsfrei recht. Im Thread wurden einige Dinge vorgekaut, vielleicht sogar zu viele. Mit "vorkauen" fühle auch ich mich angesprochen. > Wenn das unser ingenieurtechnischer Nachwuchs werden soll, > dann sehe ich bei dieser Einstellung für die Zukunft schwarz. Wenn ich so überlege, was ich an Kollegen hatte, ist die Zukunft schon partiell Gegenwart.
@ Helmut O. (magahigi) Das wird evtl. unangenehm für Dich, aber ich versuche so höflich wie möglich zu sein: 1. Es scheint, dass Du nicht weisst, was Du tust . So ein Programm hat eine Struktur. Ein Aspekt dieser Struktur ist die "Sichtbarkeit" von Variablen. Darum solltest Du Dich mal kümmern. Du kannst nicht einfach wild irgendwelche Variablen die irgendwo in dem Programm erscheinen, irgendwo_ _anders verwenden. Kümmere Dich darum und lerne, was es mit der Sichtbarkeit von Variablen auf sich hat. 2. Du zeigst Mängel in der Eigeninitiative Wenn Du nun auf ein unbekanntes Wort wie "zyklisch" triffst, wäre es doch möglich einfach mal in einem Wörterbuch nachzuschauen. Tust Du aber nicht. Das betrifft nicht nur diesen einen Fall, sondern beinahe jeden Aspekt Deines Problems. 3. Du versuchst offensichtlich, ausgehend von absolut unzureichenden Kenntnissen, Dir hier die Hausaufgaben machen zu lassen. Oder jedenfalls irgendeine Aufgabe zu erledigen, die Du im Rahmen Deiner schulischen Ausbildung erfüllen musst. Das ist hier in diesem Forum nicht das Ziel. Egal ob Du nun selbst oder die Schule oder das pädagogische Konzept schuld ist: Du alleine bist dafür verantwortlich alle nötigen Schritte zu unternehmen um das Problem zu lösen. Nicht wir. Die ständige Wiederholung der selben Frage, wird Dir nicht weiterhelfen. 4. Du gehst dermassen unsystematisch vor, dermassen unter Auslassung grundlegender Schlussweisen - was man sö landläufig vernünftiges und folgerichtiges Denken nennt -, dass man Dir nur dringend raten kann, sofort daran etwas zu ändern. Oder aber zu akzeptieren, dass Du dazu nicht fähig bist. In jedem Fall können und wollen wir nicht für Dich denken. 5. Du probierst offensichtlich, vermutlich aufgrund von geringem Wissen, einfach nur blind herum. Gib sofort das "herumprobieren" auf. Analysiere die Situation und das Problem. Falls Dir Wissen fehlt, lerne das. Falls Du nicht weißt, was Dir fehlt, frage danach. Aufgrund solcher Informationen werden wir gerne helfen, wenn Du gezielte und spezifische Fragen stellst. Aber nur dann und so. 6. Du wirst vermutlich eine gewisse "Bockbeinigkeit" hier feststellen. Anscheinend will Dir niemand den Code einfach hinschreiben. Nimm das als Zeichen, dass die oben erwähnten Vorgehensweisen einfach nicht angemessen sind. Weder in Bezug auf das Thema, noch in Bezug auf das Forum. Man versucht ja Dir zu helfen, aber ausgehend davon, das Du Dir selbst Wissen aneignest und das Du vernünftig und sachgerecht vorgehst. Also passe Dich der Situation an, oder das wird hier nichts.
Manfred schrieb: > Ganz ehrlich: Ich selbst nutze auch viele fertige Libraries und schlage > mich nicht mit den Bits eines LCD, INA219, DS18_irgendwas, SD-Card etc., > das ist ja der Vorteil der Hochsprache. Ganz ehrlich: Meinst du, dass es sinnvoll ist, eine Routine wie deine getTemp(), die für einen DS18B20 im 12-Bit Modus geschrieben wurde, kritiklos für einen DS18S20 zu verwenden und dann vernünftige Ergebnisse zu erwarten, nur weil keine Fehlermeldung kommt? Manfred schrieb: > Testen kann ich mangels Hardware nicht, aber zumindest kompiliert das: > ... Manfred schrieb: > byte MSB = data[1]; > byte LSB = data[0]; > > float tempRead = ((MSB << 8) | LSB); //using two's compliment > float TemperatureSum = tempRead / 16; Was soll dieses Kauderwelsch: 1) Welchen tieferen Grund gibt es, die vom Sensor gelesenen Bytes, nach dem Zusammensetzen auf einen 16-Bit Wert, auf eine float Variable tempRead zuzuweisen. Der Sensor liefert einen Ganzzahlwert und fertig. Beim Debuggen möchte man vielleicht genau diese Sensorrohdaten mit dem Datenblatt vergleichen und braucht sie also einmal. Die Konvertierung in einen float Datentyp stiftet hier nur Verwirrung, ist kontraproduktiv und beschäftigt an dieser Stelle völlig unsinnig den µC. Ganz abgesehen davon: Warum wird der auf der rechten Seite der Zuweisung berechnete signed int Wert für einen DS18S20 nicht einfach mit (Grenzwert * 2) verglichen, um festzustellen, dass der kritische Wert erreicht ist? 2) In der nächsten Zeile geht es dann mit dem Kauderwelsch weiter: Warum wird die float Variable tempRead dort durch den Ganzzahlwert 16 dividiert, warum nicht durch eine float Konstante (aber das hatten wir oben schon), die allerdings für einen DS18S20 absolut unpassend ist (RTFM Fig.4). Die Konvertierung der Sensorrohdaten in einen float hat genau hier statt zu finden, nämlich bei der Umsetzung und Skalierung der Rohdaten in einen °C-Temperaturwert mit Nachkommastellen (auch wenn diese float Zahl für die beschriebene Aufgabe des Programms völlig irrelevant ist). int16_t tempRead = ((MSB << 8) | LSB); //using two's compliment float TemperatureSum = (float) tempRead / x.0f; // Temperatur / °C
Wolfgang schrieb: > ...Welchen tieferen Grund gibt es, die vom Sensor gelesenen Bytes, nach > dem Zusammensetzen auf einen 16-Bit Wert, auf eine float Variable > tempRead zuzuweisen. Der Sensor liefert einen Ganzzahlwert und fertig. keinen, ich wunderte mich auch zumal float echt ein Resourcenfresser ist denke ich, aber nun gut so sei es hier, auch wenn ich nicht glaube das dem TO irgendwie zu helfen ist war ich neugierig, noch nie einen DS18x20 am nano328p gehabt und die LIB genutzt, deswegen: 1. die LIB geladen und ins Verzeichnis geschoben 2. einen funktionierenden nano328p gesucht, war schon fast soweit die Stiftleisten in den OVP zu löten, aber ich fand dann doch noch einen. 3. nach einigen Versuchen klappte es auch mit dem upload, schlimm halt wenn es bei mir nun 4 upload Möglichkeiten gibt und man nicht weiss welche gilt:
1 | nano.name=Arduino Nano |
2 | ## Arduino Nano w/ ATmega328P (new boot full mem low upload)
|
3 | ## Arduino Nano w/ ATmega328P (new bootloader full mem)
|
4 | ## Arduino Nano w/ ATmega328P (new bootloader old mem)
|
5 | ## Arduino Nano w/ ATmega328P (old bootloader low mem)
|
aber es lief, natürlich nicht mit dem sketch unter DS18s20 weil ich keinen besitze, aber mit Änderungen: aus:
1 | int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2 |
2 | //Temperature chip i/o
|
3 | OneWire ds(DS18S20_Pin); // on digital pin 2 |
schnell umgeschrieben zu
1 | int DS18B20_Pin = 2; //DS18S20 Signal pin on digital 2 |
2 | //Temperature chip i/o
|
3 | OneWire ds(DS18B20_Pin); // on digital pin 2 |
klappte es wie erwartet auch weil es ja hiess: Arduino – Temperatur messen mit 1Wire Sensor DS18S20/DS18B20/DS1820 also die LIB ist vorbereitet! Serial.print wirft also aus: Mi 23.Jan 2019 18x T= 23.7*C RTC T= 23,5*C con=63 hell=08 als Vergleich zum Sensor in der RTC mit Ausgabe aufs Nokia Display, man will ja nicht immer com: bemühen
Manfred schrieb: > Wenn ich so überlege, was ich an Kollegen hatte, ist die Zukunft schon > partiell Gegenwart. Das hast Du leider recht. Wichtig ist halt das das Problem erkannt und die Ursache beseitigtwird. Manfred schrieb: > Das Klischee des "Arduinos" :-) > > Ganz ehrlich: Ich selbst nutze auch viele fertige Libraries und schlage > mich nicht mit den Bits eines LCD, INA219, DS18_irgendwas, SD-Card etc., > das ist ja der Vorteil der Hochsprache. Ich habe schon so manche Stunde > getestet, wenn irgendwas nicht erwartungsgemäß läuft, aber ich kann > halbwegs strukturiert Fehler suchen. Das Arduino Konzept an sich ist nicht schlecht, da es die Leute an die Welt der Mikrokontroller heranführen soll. Das entbindet dennoch nicht vom selbstständigen Denken. So blauäugig wie der TO an die Sache geht funktioniert auch Arduino nicht. Grundlegende Dinge muß man schon lernen, damit sich der Erfolg einstellt. Die Arduinowelt kapselt im Wesentlichen die Hardware in passenden Bibliotheken und erspart so dem Anfänger den steinigen Einstieg über die Datenblätter der Controller in die µC Welt. Ich selbst bin auch über ein MSP430 Evalboard in die Controllerwelt eingestiegen und habe auch jede Menge Lehrgeld gezahlt. Es spricht auch nichts dagegen fertige Libs oder auch (im Privatbereich) fertige Codeschnipsel zu benutzen. Wenn man sich aber gar nicht mit der Materie auseinandersetzt und blind irgendwelche Codezeilen aneinander kopiert ohne zu wissen was man da macht, dann geht es eben in die Hose. Die Sketche aus denen der TO die Codefragmente zusammen kopiert hat funktionieren bestimmt. Der TO hat aber die Funktion der Sketche nicht kapiert und halt zur Zeilen herauskopiert von den er meint, daß sie zur LÖsung seiner Aufgabe hilfreich seien. Das funktioniert natürlich nicht - auch bei Arduino nicht.
Paul kauft sich in der Reste-Abteilung von Ikea einen halben Schrank. Im Bauhaus findet er ein paar Bretter die er dazu verwenden möchte. Schicke Türen bestellt er sich bei Aliexpress. Zum Schluss klebt er die Teile mit extra starkem Gewebeband von Tesa zusammen - so wie Chuck Norris das in seinem Youtube Channel immer macht. Leider fallen seine Sachen alle nach unten, weil die Bretter diagonal montiert wurden und die Türen fallen beim Öffnen ab. Ab sonst ist alles prima, denn der Paul darf sich jetzt "Fachkraft für Holz-Konstruktionen" nennen. Jetzt bewirbt er sich bei Phantasialand, dort wird er die Holz-Achterbahn pflegen.
Joachim B. schrieb: > aus: > int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2 > //Temperature chip i/o > OneWire ds(DS18S20_Pin); // on digital pin 2 > > schnell umgeschrieben zuint DS18B20_Pin = 2; //DS18S20 Signal pin on > digital 2 > //Temperature chip i/o > OneWire ds(DS18B20_Pin); // on digital pin 2 Das ist doch Quatsch. Nur durch umbenennen einer Variable wird sich das Verhalten der LIB nicht verändern. Du kannst ebenso schreiben:
1 | int Dummbatz_Pin = 2; // DS18S20 Signal pin on digital 2 |
2 | //Temperature chip i/o
|
3 | OneWire ds(Dummbatz_Pin); // on digital pin 2 |
Übrigens: Den genauen Typ bekommt die LIB über die ID des Sensors.
Hallo, Leute, vielen Dank für die seit gestern Abend neu eingegangenen Antworten! Bevor ich sie alle durcharbeite, habe ich erstmal den Sketch vom Manfred (=> Manfred (Gast) Datum: 22.01.2019 22:56) ausprobiert: Wie man auf dem angehängten Arduino-Screenshot erkennen kann, liefert der Sketch nun brauchbare Celsius-Werte. Daraus schließe ich, dass der Temp.-Sensor weder kaputt noch falsch angeschlossen ist. Einzig das Relais schaltet er nicht. Wenn ich den Pin 12 (an dem der Temp.-Sensor angeschlossen ist) über eine LED mit 2,2 kOhm-Widerstand mit Ground verbinde, während das Relais auch angeschlossen ist (5v, Ground und Pin 12), dann schaltet es. Das Relais kann also auch nicht kaputt sein. Da ich das Kabel der LED an Pin 12 kontaktiert habe, darf ich annehmen, dass dort gegen Ground eine Spannung anliegt - allerdings liegt die Spannung offenbar immer an, egal, ob die Temperatur ÜBER oder UNTER 20°C ist - das Relais schaltet dann immer. Ob DAS einen Schluss zulässt, der mir nicht klar ist?? Ich schicke diese Antwort jetzt erst mal ab und gehe alle weiteren Anregungen durch ... diese Schaltung muss doch irgendwie zum Laufen gebracht werden können - oder? Helmut
Zeige mal deinen Schaltplan.
magahigi schrieb: > Wenn ich den Pin 12 (an dem der Temp.-Sensor angeschlossen ist) über > eine LED mit 2,2 kOhm-Widerstand mit Ground verbinde, während das Relais > auch angeschlossen ist (5v, Ground und Pin 12), dann schaltet es. Das Relais und Sensor an PIN 12 angeschlossen / verkabelt?
Kann es sein, dass du den Pin12 in der setup() Funktion noch nicht als Ausgang konfiguriert hast? https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/ > Wenn ich den Pin 12 (an dem der Temp.-Sensor angeschlossen ist) Was jetzt, ist da das Relais oder der Sensor angeschlossen? Beide gleichzeitig mach keinen Sinn.
Brummbär schrieb: > Nur durch umbenennen einer Variable wird sich das > Verhalten der LIB nicht verändern statt zu brummen.... Brummbär schrieb: > int Dummbatz_Pin = 2; // DS18S20 Signal pin on digital 2 > //Temperature chip i/o > OneWire ds(Dummbatz_Pin); // on digital pin 2 ist aber nicht gut lesbar Brummbär schrieb: > Übrigens: Den genauen Typ bekommt die LIB über die ID des Sensors. gut das du das schreibst, ich fand halt passend umbenennen lesbarer! ja die Chip ID, ich hatte da noch was im Hinterkopf, aber am pur AVR ist es bei mir länger her, so seit 10 Jahren läuft es ja bei mir am NETIO ohne Arduino LIB Stefanus F. schrieb: > Zeige mal deinen Schaltplan. das ist doch alles so sinnlos Schaltplan wird nie gezeigt, der Sketch wieder als JPG Bild Ausschnitt nicht komplett als Code! dabei war er hier schon mal weiter: Beitrag "Re: Welchen Parameter muss ich nutzen, um mit Arduino und DS18S20 ein Relais zu steuern?" Sorry der Helmut MUSS kognitiv behindert sein, ich sehe überhaupt keine Lernkurve!
Mitunter finde ich ja manche Posts hier zum Lachen. Am besten war dieser: Hopsink (Gast) Datum: 22.01.2019 22:43 => Na toll, Helmut O ist in meiner Klasse auf der Fachoberschule hier in Darmstadt und das ist eine Aufgabe zu unserer Facharbeit! Auf dem Schulhof posaunte er was von diesem Forum und alle haben nun Spaß hier mitzulesen wie er auch hier nicht klarkommt. Jan aus der FOS 11b ???? * Nur so viel von mir: Die Zeit, dass ich auf einer Schule war, liegt schon Jahrzehnte zurück ... aber lustige Idee ... Das nur am Rande für all die engagierten Schreiber hier, die die Sachfrage mitunter aus den Augen verlieren ... Helmut
magahigi schrieb: > Die Zeit, dass ich auf einer Schule war, liegt schon Jahrzehnte zurück und nun kannst du nichts mehr dazulernen? was soll das immer mit dem Bildschirmfoto? sag mal kapierst du es wirklich nicht? Demenz, weil du alles sofort wieder vergisst? Code als Code einzustellen? magahigi schrieb: > die > Sachfrage mitunter aus den Augen verlieren ... Wer verliert denn hier alles aus den Augen?
:
Bearbeitet durch User
Danke für den Tipp von leo (Gast) Datum: 22.01.2019 22:05 => Probier mal zum Temperaturmessen; https://github.com/milesburton/Arduino-Temperature-Control-Library/blob/master/examples/Simple/Simple.pde (1. Link in Suche nach "ds18s20 arduino library") leo * Das habe ich ausprobiert, und mit diesem Sketch liefert das Programm völlig realistische Werte, vgl. mein angehängter Screenshot. Ein weiterer Beleg also, dass der Temp.-Sensor weder falsch angeschlossen noch defekt ist, stimmts? Mit Dank dafür Helmut
Joachim B. schrieb: > was soll das immer mit dem Bildschirmfoto? > sag mal kapierst du es wirklich nicht? Das frage ich mich inzwischen auch. Ich denke, es hat keinen Sinn, so weiter zu machen. Wir verschwenden hier nur unsere Zeit.
Stefanus F. schrieb: > Wir verschwenden hier nur unsere Zeit. wir wurden die ganze Zeit nach Strich und Faden ver**scht
:
Bearbeitet durch User
Joachim B. schrieb: > was soll das immer mit dem Bildschirmfoto? > sag mal kapierst du es wirklich nicht? > Demenz, weil du alles sofort wieder vergisst? @Joachim: Schalt mal einen Gang zurück, und über dich in Sachlichkeit @Helmut: Dein "Vergehen" wegen Joachims Aufgeregtheit zu Bildschirmfotos ist dir vermutlich überhaupt nicht bewust. MAnche "Puristen" mögen es halt, wenn man Textausgaben als Text wiedergibt, und nicht als Foto. Ich persönlich habe da kein Problem mit, auch wenn dein mit abfotografiertes Code-Schnipsel keine Information liefert, und "im Grunde" auch deine Ausgabe nicht viel Information erhält, welche man nicht per copy&paste als Text in deiner Rückantwort hätte einfügen können. Einen einfachen Tip von weiter oben hast du anscheinend bisher noch nicht aufgegriffen, bzw. nicht das Ergebnis hier berichtet: Halte den Sensor mal zwischen den Fingern während der Messung. Da sollte sich ja der eingelesene Wert kontinuierlich ändern...
Was ist jetzt mit dem Schaltplan und dem pinMode() ?
Wegstaben V. schrieb: > @Joachim: > Schalt mal einen Gang zurück, und über dich in Sachlichkeit hatte ich hier lange versucht aber irgendwann geht die auch bei mir verloren PS. du hast ein 'r' über
:
Bearbeitet durch User
@ Wegstaben V.: => Einen einfachen Tip von weiter oben hast du anscheinend bisher noch nicht aufgegriffen, bzw. nicht das Ergebnis hier berichtet: Halte den Sensor mal zwischen den Fingern während der Messung. Da sollte sich ja der eingelesene Wert kontinuierlich ändern... * Doch, diesen Tipp habe ich natürlich beherzigt: Ja, wenn ich meine Finger an den Temp.-Sensor halte, dann ändern sich die angegebenen Werte. Auf diese Weise habe ich ja ausprobiert, ob das Relais beim Überschreiten der 20°-Marke schaltet ... tut es nicht. @ Stefanus F. (stefanus) Datum: 23.01.2019 21:34 => Was ist jetzt mit dem Schaltplan und dem pinMode() ? * Am PinMode bin ich gerade dran ... Antwort kommt gleich! Helmut
Hallo, Stefanus F. (stefanus), Du hast geschrieben am 23.01.2019 20:32 * Kann es sein, dass du den Pin12 in der setup() Funktion noch nicht als Ausgang konfiguriert hast? * Verdammt! Ja, das stimmt! Pin 12 ist nicht als OUTPUT konfiguriert ... also habe ich das sofort nachgeholt [c] void setup() { pinMode(relaisPin = 12); .... } Aber als ich das gemacht habe, hat der compiler wieder geschimpft: "In function 'void setup' : ino :15:21: error: assignment of read-only variable 'relaisPin'" ino:15:29: error: too few arguments to function 'void pinMode(uint8_t, uint8_t)' In file included from /home/pi/sketchbook/libraries/OneWire/OneWire.h:13:0, from /home/pi/sketchbook/libraries/ArduinoTemperature/DallasTemperature.h:25, fromsketch_jan23a.ino:2: /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:98:6: note: declared here void pinMode(uint8_t, uint8_t); ^ " * Bei dieser Meldung verstehe ich zwar jedes Wort, aber nicht, was sie mir sagen will. Wo ist denn der Fehler? Helmut
Joachim B. schrieb: > hier schon fertig > https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ Helmut O. schrieb: > Ja, ich habe den Sketch ausprobiert, der zunächst keine welchen sketch? > error-Meldungen nach sich zieht ...aber er komm auf unsinnige Werte, wie > 2,13°, die sicherlich nicht der Raumtemperatur entsprechen. > Ob es nur daran liegt, dass die gemessene Temperatur nicht zweistellig > angezeigt weren kann? > Jedenfalls funktioniert dieser Sketch auch nicht. dieser funktioniert bei mir mit einem DS18B20 https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ und ich vertraue dem Kollegen Brummbär schrieb: > Übrigens: Den genauen Typ bekommt die LIB über die ID des Sensors. daran habe ich weniger Zweifel als das der TO uns hier veräppelt.
magahigi schrieb: > void setup() { > pinMode(relaisPin = 12); > .... } Am besten mal auf den Link von vorhin klicken. https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/ Stefanus F. schrieb: > Kann es sein, dass du den Pin12 in der setup() Funktion noch nicht als > Ausgang konfiguriert hast? > > https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/ >
Thomas F. schrieb: > magahigi schrieb: >> void setup() { >> pinMode(relaisPin = 12); >> .... } > > Am besten mal auf den Link von vorhin klicken. > https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/ > > Stefanus F. schrieb: >> Kann es sein, dass du den Pin12 in der setup() Funktion noch nicht als >> Ausgang konfiguriert hast? >> >> https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/ >> Ja, Thomas, danke für den Tipp. Diese reference habe ich registriert und beachtet .. und dennoch erscheint die von mir angegebene Fehlermeldung, sobald ich Pin 12 unter pinMode als OUTPUT deklariere .... was mache ich da falsch?? Helmut
Helmut O. schrieb: > .... was mache ich da falsch?? nichts du findest immer wieder neue Spielkameraden :)))
magahigi schrieb: > * Nur so viel von mir: > Die Zeit, dass ich auf einer Schule war, liegt schon Jahrzehnte zurück Ich bezweifele das. > Das nur am Rande für all die engagierten Schreiber hier, die die > Sachfrage mitunter aus den Augen verlieren ... Die Sachfrage ist schon lange zur Lachnummer mutiert, was Du hier abziehst, passt zu einem Schulkind, keinesfalls zu einem Erwachsenen. magahigi schrieb: > * Verdammt! Ja, das stimmt! Pin 12 ist nicht als OUTPUT konfiguriert ... > also habe ich das sofort nachgeholt > > [c] > void setup() { > pinMode(relaisPin = 12); > .... } > > Aber als ich das gemacht habe, hat der compiler wieder geschimpft: Dann hast Du es also falsch gemacht. Ich gehe davon aus, das Du 'meinen' Sketch von 22.01.2019 22:56 direkt kopiert hast, ohne zu erfassen, was da nun eigentlich passiert. Egal, es geht vorwärts. Ich könnte jetzt aus dem Ärmel weg die Output-Deklaration einfügen, aber das wird mir zu doof, diese eine Zeile schreibe ich Dir nicht mehr. Wenn Du etwas mit dem Arduino machen willst, gehe logisch vor. Schreibe einen einfachen Ablauf: Definiere Port Setze Port high Mache 2 Sekunden Pause Setze Port low Mache 2 s Pause und wieder auf "Setze Port high" Wenn das Relais nicht schaltet, nehme das Meßgerät in die Hand und ergründe die Ursache. Wenn Du innerhalb des Programmes sehen willst, was es tut, schreibe Serial.print-Befehle rein, z.B. in der if-Schleife "Serial.print ("if ausgeführt"); und in der Else "Serial.print ("Else ausgeführt"); Ziel aller Aktionen ist, kleine Einzelteile der Software zu testen, bevor man am Gesamten verzweifelt. In meinen ersten Versuchen habe ich eine LED blinken lassen, einen Taster abgefragt, ein Lauflicht gebaut, von einem Drehpoti den Wert geholt und so weiter, also erstmal einfache Grundlagen verinnerlicht. Wenn Du damit überfordert oder nicht dazu bereit bist, gestehe Dir ein, dass Du im falschen Bereich bastelst. Joachim B. schrieb: >> Übrigens: Den genauen Typ bekommt die LIB über die ID des Sensors. > daran habe ich weniger Zweifel als das der TO uns hier veräppelt. Darauf hat 'mein' Sketch gesetzt, es steht so im Kommentar der DallasTemperature.h., die ich schon benutzt habe. Ist ja das schöne an A*, Library einbinden und sich nicht um Details der Bit kümmern müssen - bis irgendwann der Speicher ausgeht und man optimieren muss. Joachim B. schrieb: > als das der TO uns hier veräppelt. Einen dermaßen perfekter Troll überschreitet mein Vorstellungsvermögen.
magahigi schrieb: > Bei dieser Meldung verstehe ich zwar jedes Wort, aber nicht, was sie > mir sagen will. > Wo ist denn der Fehler? Du verstehst gar nichts! Dir fehlen sämtliche Grundlagen.
Joachim B. schrieb: > was soll das immer mit dem Bildschirmfoto? Sei froh, dass die Phase mit dem Smartphone Photos vom Monitorbildschirm schon überstanden ist ... Joachim B. schrieb: > dieser funktioniert bei mir mit einem DS18B20 > > https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ > > und ich vertraue dem Kollegen Das mag ja alles sein. Mit einem DS18S20 kann der aber so nicht funktionieren, weil der DS18S20 keine 12 Bit Daten mit 4 binären Nachkommastellen liefert. Vergleiche mal in den beiden Datenblättern die Figure 4 oder kurz RTFM.
Er lacht sich krank...
Wolfgang schrieb: > Das mag ja alles sein. Mit einem DS18S20 kann der aber so nicht > funktionieren, weil der DS18S20 keine 12 Bit Daten mit 4 binären > Nachkommastellen liefert. Vergleiche mal in den beiden Datenblättern die > Figure 4 oder kurz RTFM. du gehst von der anderen LIB aus, ich von der von mir gezeigten, aber nein ich werde die von mir verlinkte LIB nicht sezieren ob du Recht hast. hier waren zur Info 2 LIBs genannt worden! Was mit was nicht funktioniert schreibst du ja nicht.
:
Bearbeitet durch User
magahigi schrieb: > pinMode(relaisPin = 12); > Wo ist denn der Fehler? Angeblich hast du ja die Doku von Arduino gelesen. Dort steht im Beispiel: > pinMode(13, OUTPUT); Bist du wirklich so bescheuert, den Unterschied nicht zu erkennen? Das kann doch nicht sein!
Joachim B. schrieb: > du gehst von der anderen LIB aus, ich von der von mir gezeigten, aber > nein ich werde die von mir verlinkte LIB nicht sezieren ob du Recht > hast. Ich habe mich auf deinen Betrag bezogen und den auch zitiert, in dem du den Blog-Eintrag verlinken hat, der sich auf einen ganz anderen Sensor bezieht und so nicht für den DS18S20 passt. https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ Da der TO auf Fragen nur sehr bedingt reagiert, ist die ganze Diskussion hier allerdings etwas fruchtlos.
Manfred schrieb: > Schreibe einen einfachen Ablauf: > Definiere Port > > Setze Port high > Mache 2 Sekunden Pause > Setze Port low > Mache 2 s Pause > und wieder auf "Setze Port high" > > Wenn das Relais nicht schaltet, nehme das Meßgerät in die Hand und > ergründe die Ursache. * Das habe ich heute als erstes gemacht. Erfolg: Das Relais Tongling 5V) schaltet genau 1 mal ... dann leuchten die rote und die grüne LED am Relais gleichzeitig, und nix passiert mehr. Was die Ursache sein könnte, weiß ich nicht ... Helmut
... wenn ich statt des Relais eine LED anschließe, dann blinkt sie abwechselnd ... das Relais ist vielleicht defekt? Helmut
Ich werde die gesamte Schaltung also nochmal aufbauen und statt des Relais eine LED anschließen .... Bin gespannt, ob dann der Temp.-Schalter die LED ein- bzw. ausschaltet. Danke für diesen Tipp! Helmut
Welche Spannungen misst du an dem Pin (während das Relais-Modul angeschlossen ist): Bei HIGH x,x Volt Bei LOW x,x Volt Bitte die fehlenden Zahlen ergänzen. Falls dein Multimeter dafür zu träge ist, nimm ein Oszilloskop.
Hallo Helmut, kann sein, dass ich es bei den Posts oben übersehen habe -> ich konnte noch keinen Schaltplan entdecken. Stell doch bitte mal einen Schaltplan hier ein. Und eventuell zusätzlich ein Foto vom Aufbau, dann kann man überprüfen, ob der Aufbau auch dem Schaltplan entspricht.
Wolfgang schrieb: > Ich habe mich auf deinen Betrag bezogen und den auch zitiert, nicht in diesem Posting: Wolfgang schrieb: > Das mag ja alles sein. Mit einem DS18S20 kann der aber so nicht > funktionieren, weil der DS18S20 keine 12 Bit Daten mit 4 binären > Nachkommastellen liefert. Vergleiche mal in den beiden Datenblättern die > Figure 4 oder kurz RTFM. dann schwindelt der Link und Brummbär? Brummbär schrieb: > Übrigens: Den genauen Typ bekommt die LIB über die ID des Sensors. https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ Arduino – Temperatur messen mit 1Wire Sensor DS18S20/DS18B20/DS1820 wie gesagt, ich habe die LIB nun nicht zerpflückt, die meisten Arduino LIBs machen was sie sollen, natürlich nicht alle und fehlerfrei gibts selten. Wer nur etwas programmieren kann (so wenig wie ich z.B.) der kann das auch leicht korrigieren, aber ein DS18S20 wäre hilfreich. > in dem du > den Blog-Eintrag verlinken hat, der sich auf einen ganz anderen Sensor > bezieht und so nicht für den DS18S20 passt. > https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ > > Da der TO auf Fragen nur sehr bedingt reagiert, ist die ganze Diskussion > hier allerdings etwas fruchtlos. stimmt, aber da nun einige schon genug Zeit reingesteckt hatten ist das nicht für den TO sondern für alle Interessierten. Sollte meine genannte LIB wirklich den DS18s20 nicht können habe ich hier dazu gelernt und behalte das im Hinterkopf!
Ralf S: schrieb: > Hallo Helmut, > kann sein, dass ich es bei den Posts oben übersehen habe -> ich konnte > noch keinen Schaltplan entdecken. > > Stell doch bitte mal einen Schaltplan hier ein. Und eventuell zusätzlich > ein Foto vom Aufbau, dann kann man überprüfen, ob der Aufbau auch dem > Schaltplan entspricht. Hallo, Ralf, wie soll ich den Schaltplan zeichnen? Wäre einfach auf Papier und abfotografieren in Ordnung?
Hallo Helmut, ja, zeichnen und abfotografieren ist in Deinem Fall in Ordnung. Schöner ist natürlich ein Schaltplan aus einem Programm, aber da muss man sich ja erstmal einarbeiten. Mir würde eine handgefertigte Skizze reichen. Und ein Foto vom realen Aufbau. Damit kann man dann vergleichen, ob die Idee (=Schaltplan) mit der Praxis (=aufgebaute Schaltung) übereinstimmt. Fehler beim Aufbau passieren nämlich fast jedem mal, auch geübteren Bastlern.
Ach ja, und bitte auch noch den vollständigen Sketch für den Minimaltest aus dem Post oben. >Manfred schrieb: >> Schreibe einen einfachen Ablauf: >> Definiere Port >> >> Setze Port high >> Mache 2 Sekunden Pause >> Setze Port low >> Mache 2 s Pause >> und wieder auf "Setze Port high" >> >> Wenn das Relais nicht schaltet, nehme das Meßgerät in die Hand und >> ergründe die Ursache. >* Das habe ich heute als erstes gemacht. >Erfolg: >Das Relais Tongling 5V) schaltet genau 1 mal ... dann leuchten die rote >und die grüne LED am Relais gleichzeitig, und nix passiert mehr. >Was die Ursache sein könnte, weiß ich nicht ... >Helmut
Joachim B. schrieb: > Wolfgang schrieb: >> Ich habe mich auf deinen Betrag bezogen und den auch zitiert, > > nicht in diesem Posting: > > Wolfgang schrieb: >> Das mag ja alles sein. Mit einem DS18S20 kann der aber so nicht ... Genau dort, wenn du mal vollständig zitierst Wolfgang schrieb: > Joachim B. schrieb: >> dieser funktioniert bei mir mit einem DS18B20 >> > https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ >> >> und ich vertraue dem Kollegen > > Das mag ja alles sein. ...
Wolfgang schrieb: > Genau dort, wenn du mal vollständig zitierst wir reden echt aneinander vorbei, müssen hier keine Nebenkriegsschauplätze aufmachen. Wenn die LIB aus: https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/ mit http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip nicht mit dem DS18s20 funktioniert soll es mir recht sein.
Hier erst mal mein Schaltungsaufbau: Man erkennt auf dem linken Breadboard den dreibeinigen schwarzen DS18S20. Sein (von uns aus) linkes Beinchen ist direkt mit dem Ground-Pin des Nano verbunden, sein mittleres mit Pin 2, und das rechte Beinchen über das Breadboard mit dem 5V-Pin. Indirekt, weil vom 5V am Breadboard ein Widerstand zum mittleren Beinchen führt. Unten sieht man das Relais. Dessen rotes Kabel geht auch direkt zum 5V des Nano, das mittlere zu Ground, und das braune (an der roten LED des Relais) zu D12. Ein 2. Kabel geht vom D12 am selben Breadboard, auf dem auch der Nano sitzt, zu einem Widerstand, zu einer LED und von dieser zu einem roten Kabel, das einfach so dahängt, ohne Kontakt. Wenn ich das mit dem Ground verbinde, leuchtet die LED und das Relais schaltet - egal, ob über oder unter 20°C ... Jetzt versuche ich noch, eine brauchbare Zeichnung zu erstellen, die ich dann auch noch ins forum schicke. Helmut
Geiler Thread, seit 4 Tagen versucht hier jemand ne Lamp an- und auszuschalten. Mit gehfühlt 100 Helfern. Mit genug Schub bekommt man auch Schweine zum Fliegen, dachte ich bisher. Stimmt aber nicht. Das Wochenende wird zu weiteren 233 Beiträgen führen. Ich ess mein Popcorn aber lieben im Kino ;-) Und dann noch dieser "M Ing." hier, zum schiessen!!!
So - jetzt habe ich auch den Schaltplan irgendwie hingekriegt. Ob der zur Lösung meines Problems etwas beitragen kann?
2,2k Ohm Widerstand an 5V für eine LED ist gefühlt "etwas" zu hoch. Ist das "Ding" nach 2,2k ohm -> led -> Ding Mitte unten gelbe Linie höhe RST Pin eine Diode?
Thomas F. schrieb: > 2,2k Ohm Widerstand an 5V für eine LED ist gefühlt "etwas" zu hoch. > > Ist das "Ding" nach > 2,2k ohm -> led -> Ding > Mitte unten gelbe Linie höhe RST Pin eine Diode? Hallo, Thomas, ja, das ist eine Diode, eine LED.
Schöner Plan, fotografiere ihn beim nächsten mal senkrecht von oben, dann kann man ihn viel besser erkennen. > Ist das "Ding" nach 2,2k ohm -> led -> Ding > Mitte unten gelbe Linie höhe RST Pin eine Diode? > ja, das ist eine Diode, eine LED Drehe die Diode richtig herum oder lasse sie besser weg. Die hat dort keine sinnvolle Funktion. Hast du den Ausgang jetzt mit pinMode(12, OUTPUT) konfiguriert? Welche Spannungen misst du bei HIGH und LOW Pegel? Hast du vor, Rückfragen zu beantworten um Hilfe zu bekommen, oder willst du uns nur mit wiederholten Fragen auf Trab halten?
Joachim B. schrieb: > du gehst von der anderen LIB aus, ich von der von mir gezeigten, aber > nein ich werde die von mir verlinkte LIB nicht sezieren ob du Recht > hast. Was hast du denn jetzt gegen die Lib? Die OneWire-Lib ist doch in Ordnung - auch für den DS18S20. http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip Die Library hat überhaupt keine speziellen Funktionen, die auf den DS18x20 abzielen. Was so nicht für den DS18S20 funktioniert, ist der im Blog gezeigte Code zum uploaden und betrachten der Messdaten im Serial Monitor. Ich schreibe jetzt nicht nochmal, was an den Daten vom DS18B20 anders ist, als an denen vom DS18S20. Im Beispiel DS18x20_Temperature, das bei der OneWire Library dabei ist, wird doch der Code zur automatischen Auswertung beider Sensortypen (DS18S20 und DS18B20) sogar gezeigt. In den Library-Code muss man dafür nun wirklich nicht ein gucken. Aber das nützt alles nichts, wenn man nicht weiss, was man tut und zu faul ist, mal die beiden Datenblätter nebeneinander zu legen und Fig.4 zu betrachten.
Wolfgang schrieb: > Aber das nützt alles nichts, wenn man nicht weiss, was man tut und zu > faul ist, mal die beiden Datenblätter nebeneinander zu legen und Fig.4 > zu betrachten. was erzählst du das mir, hast du keinen leeren Schrank? ich bin nicht zu faul habe das sogar aufgebaut und die Funktion für einen DS18B20 bewiesen und mich interessiert es nicht ob es mit einem DS18s20 und dieser LIB funktioniert, ein User sagt ja und nun? Wenn der TO was lernen wollte kann er gerne reinschauen oder eine andere LIB nutzen. Das ist doch hier nicht das Problem und nun geh woanders spielen. Hier reinpoltern dem TO nicht helfen und andere User anpinkeln scheint deine Masche zu sein?
Joachim B. schrieb: > Hier reinpoltern dem TO nicht helfen und andere User anpinkeln scheint > deine Masche zu sein? Nun ist aber mal gut. Wenn der TO auf Rückfragen nicht reagiert, ist das sein Problem.
Wolfgang schrieb: > und zu > faul ist, mal die beiden Datenblätter nebeneinander zu legen du hattest MICH zitiert meintest offensichtlich den TO? dann schreib das doch, wäre ich im Hellsehen besser würde ich Lotto spielen :)
Joachim B. schrieb: > du hattest MICH zitiert meintest offensichtlich den TO? Das Blog-Zitat kommt doch von DIR. Was nützt es dem TO mit seinem DS18S20, wenn du auf Code verweist, der genau für einen DS18B20 geschrieben ist. Ein Blick ins Datenblatt zeigt sofort den Grund - DIR und dem TO.
Stefanus F. schrieb: >> Ist das "Ding" nach 2,2k ohm -> led -> Ding >> Mitte unten gelbe Linie höhe RST Pin eine Diode? >> ja, das ist eine Diode, eine LED > > Drehe die Diode richtig herum oder lasse sie besser weg. Die hat dort > keine sinnvolle Funktion. * Hallo, Stefanus. Meine Antwort hat ja etwas auf sich warten lassen. Ich muss mitunter auch noch anderen Beschäftigungen nachgehen ... sorry. Ja, die Diode habe ich von dort wieder entfernt. Mit der habe ich nur probiert, was passiert, wenn sie parallel zum Relais angesteuert wird. Der Effekt war aber, dass beim Schließen des Dioden-Kontakts diese brennt UND das Relais schaltet ... woraus ich mir keinen Reim machen kann. > > Hast du den Ausgang jetzt mit pinMode(12, OUTPUT) konfiguriert? * Ja, das habe ich! Mein Gedanke dazu: Ich muss ja nicht alles verstehen ... (alles lacht, OK) Warum? Während ich gestern eine ganze Liste von Fehlermeldungen bekommen habe, ist die Deklaration als OUTPUT heute anstandslos durchgegangen ... Allerdings habe ich meinem Relais nicht mehr über den Weg getraut und es durch eine LED ersetzt. Schalten ist ja schalten, stimmt's? Und zu meiner größten Überraschung zeigt der Serial Monitor nur vernünftige Temperaturen an - UND: beim Überschreiten der 20°C geht die LED aus!! Kurz: Zum ersten Mal hat's geklappt! Danke vielmals für Eure Unterstützung, Leute, ganz besonders für die sachdienliche natürlich!!! Die LED hat reagiert!!! Jippiie!!! > Welche Spannungen misst du bei HIGH und LOW Pegel? Ich messe 4,48 Volt ... Mit freudigen Grüßen Helmut
Thomas F. schrieb: > magahigi schrieb: >> void setup() { >> pinMode(relaisPin = 12); >> .... } > > Am besten mal auf den Link von vorhin klicken. > https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/ Ja! Jetzt habe ich auch den Fehler entdeckt: Das Gleichheitszeichen hätte ein Komma sein müssen. Aus Fehlern lernen wir! Selbst ich ... dieser passiert mir wahrscheinlich nicht mehr. Und: Die Schaltung funktioniert!!!! Ob ich diesen Thread irgendwie formal beenden muss, weiß ich nicht. Für diesen letzten Tipp wäre ich dann auch noch dankbar. Immer noch freudige Grüße Helmut :-))
Helmut O. schrieb: > > Und: Die Schaltung funktioniert!!!! Super, und als 3) schaust du mal nach, was "Hysterese" bedeutet. Leo, und wieder weg, nicht weg, weg, ...
Helmut O. schrieb: >> Welche Spannungen misst du bei HIGH und LOW Pegel? > > Ich messe 4,48 Volt ... ja ist klar.... was misst du denn bei tri state wenn high und low immer 4,48V bringen?
Wolfgang schrieb: > ist die ganze Diskussion hier allerdings etwas fruchtlos. Sie ist insoweit fruchtlos, als dass Helmut nicht sinnvoll nachtestet und antwortet. In anderen Punkten finde ich sie schon interessant! Joachim B. schrieb: > Hier reinpoltern dem TO nicht helfen und andere User anpinkeln scheint > deine Masche zu sein? Da wird Dir niemand widersprechen. Ich habe es mir verkniffen, Wolfgang hat schon genug vermeidbare Unruhe in den Thread gebracht. ---- Was die Libraries angeht: Arduino bringt von Haus aus die DallasTemperature.h mit, die ich in meinem Beispiel eingebunden hatte. Sie behauptet mit 18S20, 1820, 18B20 und weiteren umgehen zu koennen:
1 | // Model IDs
|
2 | #define DS18S20MODEL 0x10 // also DS1820
|
3 | #define DS18B20MODEL 0x28
|
4 | #define DS1822MODEL 0x22
|
5 | #define DS1825MODEL 0x3B
|
Nachdem Helmut schrieb, dass er glaubhafte Temperaturwerte hat, kaufen wir das mal. Ich denke mal, diese Komödie ist nun beendet.
Hallo, ich fand die Beiträge zum Problem auch ganz interessant und es hätte doch deutlich ätzender werden können! Jetzt bleibt doch eigentlich nur noch die Frage, warum das Relais nicht arbeitet, wenn doch die Led funktioniert! Oder kam das Rel. zu Testzwecken ins Spiel? Wie auch immer...ich hoffe, dass dem TO klar ist, dass er das Rel. wahrscheinlich nicht direkt an einen Port hängen kann. Wenn der benötigte Strom zu groß ist, muß das Rel. über einen Transistor angesteuert werden. Und der Port muß mit einer Diode geschützt werden... Gruß Rainer und viel Spass weiterhin!
M.Eng Ing. Daniel D. (Firma: Embedded-Laboratorys IBC) löst das Problem gegen Einwurf kleiner Münzen sicher souverän.
Rainer V. schrieb: > ich hoffe, dass dem TO klar ist, dass er das Rel. wahrscheinlich > nicht direkt an einen Port hängen kann. Dem TO ist garnichts klar. Aber, wenn Du Dir das Bild 24.01.2019 15:11 angeschaut hättest, hättest Du gesehen, dass er ein Chinamodul verwendet, was direkt vom µC ansteuerbar ist. Natürlich muß man auch das richtigherum anklemmen ... aber scheint ja gelöst zu sein.
Manfred schrieb: > Dem TO ist garnichts klar. > > Aber, wenn Du Dir das Bild 24.01.2019 15:11 angeschaut hättest Angeschaut schon, aber nicht genau genug...und da Chinamodule nicht zu meinem täglichen Bastelfreuden gehören, habe ich mich nur gefragt, was das denn nur für ein merkwürdiges Relais ist :-) Hopsink schrieb: > M.Eng Ing. Daniel D. (Firma: Embedded-Laboratorys IBC) ...und das hat uns ja wohl über alle Massen beeindruckt oder!? Gruß Rainer
Rainer V. schrieb: > ...ich hoffe, dass dem TO klar ist, dass er das Rel. wahrscheinlich > nicht direkt an einen Port hängen kann ... Das halte ich auch eher für unwahrscheinlich. Auf einem vernünftigen Bild von so einem Relaismodul sieht man, dass sowohl Treibertransistor als auch Freilaufdiode auf dem Modul vorhanden sind. Relaismodul: https://www.ebay.de/itm/132267277186 Helmut O. schrieb: > Schaltungsaufbau.jpg
Hallo wenn gefühlt 70% der Beiträge dieses Thread wegfallen würden, und dazu zählen eindeutig nicht(!) die von Helmut O. als TO, könnte dieser Thread sogar richtig hilfreich für so manchen, zugegeben leider ungeschickt vorgehenden, Anfänger und "Zwangsnutzer" sein. Ja der richtige und Ziel bringende Weg ist es natürlich in kleinen Schritten vorzugehen und immer zu versuchen zu verstehen was da jeweils im Sketch (des aufbauenden Tutorials bzw. Kurses)gemacht wurde. Aber genau daran scheitern die meisten Arduino und ganz allgemein µC Tutorials (wohl auch in den Ausbildungseinrichtungen?!). Es wird oft in kleinsten auf Trivialitäten bezüglich der Hardware über mehrere Seiten hinweg eingegangen, und in den ersten Kapiteln sehr genau, oft ermüdend und wiederholend, die ersten Grundlagen und Anwendungen der Programmiersprache (der Sketcherstellung) erklärt aber dann: Auf einmal kommt, ohne jegliche tiefere Erklärung im Programm (Sketch) ein Kommentar so etwas wie: "Ein Objekt erzeugen" oder noch heftiger "Eine Instanz des Objekt instantiieren" vorzugsweise noch mit englischsprachigen Bezeichnungen, auch dort wo sie nicht unbedingt notwendig sind, im eigentlichen Programmcode (Sketch). Und das dann nur noch Fragezeichen beim Lernenden auftauchen ist selbstverständlich. Denn im Tutorial selbst wird darauf meist nicht erklärend eingegangen, sondern es wird den lernenden nur einfach wie ein Knochen den Hund hingeworfen (Wobei der Hund mit den Knochen was anfangen kann - also es ist mehr so als wenn man den Hund ein Buch vor die Nase wirft...). Und jetzt? Googeln - entweder wieder nur (für einen Anfänger!) Kauderwelsch oder Erklärungen aus den PC Bereich der wieder zu neuen Fragen führt... Damit Fehler und falsche Vorstellungen nahzu garantiert. Es fehlt einfach an guten und in die Tiefe gehende µC und gerade auch speziell Arduino Tutorials die eben die nicht so einfach zu verstehenden, aber notwendigen, tief ergehenden Bestandteile der Programmierung (Egal ob nun in C oder C+ oder irgendwelchen "vereinfachten" Anpassungen wie beim Arduinogesamtsystem) wirklich verständlich erklären - und das sind eben halt nicht(!) vordringlich die Sachen wie eine z.B.Bibliothek eingebunden wird (das kann man "Überall" und gut verständlich nachlesen) und, gefühlt über viele Seiten gehende, Erklärungen zu Sachen wie PinMode DigitalWrite usw., sondern auch was diese Objekte, Instanzen usw. eigentlich -genau- sind, warum sie genutzt werden, die Vorteile und Ideen dahinter verständlich machen und warum sie sich manchmal von der Anwendung her unterscheidenden, warum ein µC bzw. Arduino Prgramm Sketch so und nicht anders aufgebaut sein sollte und so einiges mehr was einen Anfänger und oder "Codezusammenwürfeler" immer wieder "vor die Wand fahren lässt" Wenn es in der Ausbildung genause bescheiden mit der Wissensvermittlung aussieht ist es total verständlich das Probleme und ungeschicktes Vorgehen beim erlernen entstehen bzw. selbst beim besten Willen des Lernenden diese es einfach nicht verstehen und sich hineindenken können so wie es bei Helmut eventuell(ich kann mich natürlich auch irren - aber es gibt eindeutig genug Fälle wo es so ist) auch der Fall ist,und es sehr aufwendig und nervend ist das Wissen und Ziel bringende Hilfe zu vermitteln. Wenn es sich dann noch tatsächlich um eine "aufgedrückte" Aufgabe handeln sollte (weil es der Lehrplan so will) ist es total nachvollziehbar das so manche, nicht wirklich von Thema begeisterte, nur noch Verwirrt sind und ein mit "gefährlichen" Halbwissen die Aufgabe auf leider total falschen Weg zu lösen versuchen. Jemand
Das eigentliche Hauptproblem des TO (nachdem sein Monitor plausible Temperaturwerte anzeigte) war, dass er den Ausgang zum Relais-Modul nicht als Ausgang konfiguriert hat. Weiterhin hat er nicht verstanden, wie das Relais Modul funktioniert, deswegen hat er sehr irritiert reagiert, dass eine zusätzliche Status-LED einen dauerhaften Schaltvorgang auslöste. Dabei ist es ganz einfach: Das Relais Modul ist wie üblich mit einem PNP Transistor ausgestattet. Es schaltet daher bei LOW Pegel ein und dazu genügt ein geringer Steuerstrom. Da der Pin am Mikrocontroller nicht als Ausgang konfiguriert war, hat er durch seinen Schreibzugriff auf das PORT Register (gekapselt durch die Arduino Funktion digitalWrite()) lediglich den internen Pull-Up Widerstand ein/aus geschaltet. Als er nur die LED alleine angeschlossen hatte (zwischen I/O Pin und GND) konnte er ihre Reaktion auf die Temperaturänderungen deutlich sehen. Allerdings erreichte die LED nicht ihre volle Helligkeit, weil der interne Pull-Up Widerstand recht hochohmig ist. Es reicht aber, um den Unterschied zwischen an und aus zu erkennen. Als er nur das Relais-Modul anschloss, reagierte dieses gar nicht, denn es will mit LOW Pegel angesteuert werden. Der interne Pull-Up liefert aber nur HIGH Pegel. Als er beide zusammen anschloss, zog die LED die Spannung vom internen Pull-Up und vom Transistor des Relais-Moduls weit genug herunter, dass das Relais permanent anzog. Dabei leuchtete auch die LED permanent. Des Rätsels Lösung war am Ende, den Pin mit digitalMode(12,OUTPUT) als Ausgang zu konfigurieren. Das hat der TO trotz meines deutlichen Hinweises aber erst Stunden später hinbekommen, weil er die Doku dazu erst nicht gelesen hatte und dann hat er sie nicht verstanden. Aus den oben beschrieben Beobachtungen konnte er keine Schlüsse ziehen, hat aber irttümlich angenommen, dass aus dem Mikrocontroller bereits ohne pinMode() ein korrektes Signal heraus käme. Dazu kam noch, dass der TO lange verweigert hat, die Spannung an dem fraglichen Pin zu messen. Hätte er das getan, wäre hoffentlich auch ihm die Fehlerursache klar geworden. Als er es dann endlich tat, meldete er für HIGH und LOW nur einen Spannungswert (4,48 Volt), womit meine Frage uneindeutig und falsch beantwortet wurde. Der TO hat selbst massiv dazu beigetragen, dass er nicht voran kam. Das ist meine Sicht der Dinge. Mein Rat an Helmut: Du hast eine Hütte gebaut, bevor du den Hammer richtig halten kannst. Fange mit einfacheren Aufgaben an. Zuerst solltest du ganz ohne Computer die Eigenschaften der Bauteile erforschen, die du verwendest: Widerstand Diode LED Transistoren (PNP, NPN, vielleicht auch MOSFET) Relais-Modul Dann solltest du die Grundlagen der Programmiersprache und des gcc Compilers auf dem PC lernen, am besten anhand einer Windows oder Linux Konsolen-Anwendung. Die QT-Creator IDE wird Dir dabei helfen, es geht aber auch ohne IDE. Auch die Fehlermeldungen des Compilers sollst du erstmal auf dem PC kennen lernen, bevor du dich an Mikrocontroller-Programmierung wagst. Wenn du dann den Mikrocontroller programmierst, solltest du mit einfachen Sachen anfangen. Also eben keine Sensoren die ein komplexes serielle Kommunikations-Protokoll nutzen dass du nicht durchblickst. Fange besser mit LEDs und Tastern an. Programmiere Timer, Quiz-Buzzer, Blinker - alles was ohne spezielle "Libraries" auskommt. Beschäftige dich mit Multitasking: Lass eine LED im Sekundentakt blinken, eine andere soll regelmäßig blitzen und währenddessen sollen noch zwei Taster abgefragt werden, mit denen eine dritte LED an und aus geschaltet werden kann. Realisiere das, ohne eigene Interruptroutinen zu programmieren. Nur auf Basis von loop() und millis(). Das klingt vielleicht trivial, aber mach das mal. Glaube mir: Es wird lehrreich. Was du dabei lernst, wirst du in allen künftigen Projekten brauchen. Messe die Temperatur mit einem 10k Ohm NTC und einem analogen Eingang. Finde heraus, wie man die nicht-linearität des Sensors ausgleicht. Erst wenn du mit dem Mikrocontroller und den einfachen analogen Bauteilen drumherum vertraut bist, halte ich es für angemessen, sich mit Modulen/Chips zu beschäftigen, die ein Kommunikationsprotokoll haben.
Beitrag #5709437 wurde vom Autor gelöscht.
Jemand schrieb: > [...] > Ja der richtige und Ziel bringende Weg ist es natürlich in kleinen > Schritten vorzugehen und immer zu versuchen zu verstehen was da jeweils > im Sketch (des aufbauenden Tutorials bzw. Kurses)gemacht wurde. Genau! > Aber genau daran scheitern die meisten Arduino und ganz allgemein µC > Tutorials (wohl auch in den Ausbildungseinrichtungen?!). > Es wird [...] ... von Dir nun die verwendete Didaktik verallgemeinert. Was davon auf die Situation des TO zutrifft, weiss kein Mensch. Was der Anteil des TO an der Situation ist, weiss auch niemand. Der Tenor ist dann, dass andere Schuld haben, wenn man nicht weiterkommt. Nur bringt diese Feststellung, egal ob sie zutrifft oder nicht, dem TO gar nichts. Falls sie zutrifft, wäre die vernünftige Frage, wo er denn gute strukturierte, didaktisch hochwertige Information in Bezug auf ein bestimmtes, umgrenztes Thema findet. Die stellt der TO aber nicht. (Siehe Netiquette). Und das ist seine Verantwortung! > Und jetzt? [...] Noch mehr Verallgemeinerungen, von denen wieder keiner weiss, was hier wirklich zutrifft. Und insgesamt sind wieder Andere schuld. Die Feststellung, dass es im Internet einen Haufen ungeeignetes Zeug gibt, ist nicht neu. Es erfordert schon eine gewisse Kompetenz in der Wissensaneignung Darstellung von Information zu bewerten und filtern. Das Fehlen dieser Kompetenz kann ja ausgeglichen werden, aber dazu muss man eben, aufgrund von Selbstbeobachtung gezielte Fragen stellen können. Das ist wiederum die Verantwortung des TO selbst. > [...] und so einiges mehr was einen Anfänger und oder > "Codezusammenwürfeler" > immer wieder "vor die Wand fahren lässt" Wenn er blind dem folgt, was man ihm vorsetzt. Wenn er der Illusion - oder sagen wir mal der Werbeaussage -, folgt, dass jeder ohne Vorbildung programmieren kann. Wenn ich mir so anschaue, wie viele Leute hier mit Arduino-Problemen auftauchen, - warum sind die eigentlich nicht im Arduino-Forum? -, dann kann ich vermuten, dass das Versprechen nicht gehalten, die Zusammenhänge nicht ausreichend dokumentiert sind, die Gemeinschaft sich nicht untereinander helfen kann, weil sie inkompetent ist. Aber dabei muss man ja nicht stehenbleiben oder den Kram nun in ein anderes Forum schleppen, wo dann andere für einen denken sollen. > Wenn es in der Ausbildung genause bescheiden mit der Wissensvermittlung > aussieht [...] Ja, wenn das Wörtchen "wenn" nicht wär', ... > Wenn es sich [...] um eine "aufgedrückte" Aufgabe > handeln sollte [...] ist es [...] > nachvollziehbar das [...] Schön. Es ist nachvollziehbar. An der Situation ändert das nichts. Es mangelt uns ja nicht an Vorstellungsvermögen oder Mitgefühl. Aber wir sind hier moralisch nicht verpflichtet die Mängel des Internets, des Bildungssystems oder des TO in genau der Form auszugleichen, die der TO nachfragt. Wenn man (vermutlich) absichtlich ein fachgebundene Schule (FOS) wählt, dann muss man die Kröte eben schlucken. An sich sollte es, da man ja vorher wählen konnte, gar keine "Kröte" sein, sondern was, was einen aus purem Interesse und Leidenschaft antreibt. Wir können das Problem nicht lösen, falls es darin besteht, dass die Wahl falsch war, die Leidenschaft abgekühlt ist oder gar nicht vorhanden war. Um das ein wenig zu relativieren: Es ist ein in den Texten merklicher Unterschied, ob jemand wenig Ahnung hat, aber motiviert ist oder ob jemand keine Ahnung hat und nur externen Forderungen gerecht werden will oder ob jemand sogar nicht mal die allgemeinen, intellektuellen Fähigkeiten hat. Uns muss es überlassen blieben in welchen Fall wir welche Menge an Energie stecken und worin unsere "Hilfe zu Selbsthilfe" besteht. Gerade der letzte Punkt wird hier so oft vergessen oder sogar als Argument gegen die Antworter hier verwendet: Es geht hier um Hilfe zu Selbsthilfe , nicht die Rettung der Welt oder Einzelner vor den Realitäten.
Theor schrieb: > Gerade der letzte Punkt wird hier so oft vergessen oder sogar als > Argument gegen die Antworter hier verwendet: > Es geht hier um Hilfe zu Selbsthilfe , nicht die Rettung der Welt oder > Einzelner vor den Realitäten. Nein. In klarer, unmißverständlicher Weise gesagt: Es geht darum, auch einmal einfach die Fresse und die Pfoten stillzuhalten, wenn man dem Fragenden nicht helfen will , oder es nicht kann . Niemandem hilft es, seitenlange Pamphlete mit flammenden Ansprachen lesen zu sollen, die nicht einen Funken hilfreich sind, sondern nur den Autor in stralendem Licht dastehen lassen sollen. In diesem Ton mußte die Formulierung erfolgen, da sie sonst von Gutmeinenden nicht versatnden werden würde. Ende der Ansage.
Auch ohne langes Geschreibsel kann man hier beispielhaft gut sehen, was alles passieren kann, wenn ein relativ unbedarfter Kopf die Versprechungen aus einer Baukastenwelt "ernst" nimmt. Er nimmt sich vor, mal eine Temperatur zu messen. Im Harware-Baukasten findet er diverse Module, die passen könnten und dann kopiert er sich noch ein paar Softwareschnipsel und dann kann er anschließend die relativ inhaltslose Frage stellen: "Funktioniert nicht". Gut, der TO hat hier mit einer nicht ganz so inhaltslosen Frage begonnen, aber im Laufe der ganzen Diskussion sieht man doch deutlich, welche Abründe an Wissensmangel überbrückt werden müssen. Und ich unterstelle dem TO keinenfalls, daß er nicht lernwillig ist! Aber die richtigen Fragen muß man sich immer hart erarbeiten. Als Student habe ich Abiturienten Mathe-Nachhilfe gegeben und (fast) immer damit anfangen müssen, die simpelsten Grundlagen hoch zu holen. Also Grundrechenarten!, Formeln umstellen, Dreisatz...was hier bedeuten könnte ohmsches Gesetz, analoge und digitale Grundschaltungen und vielleicht auch das Lernen einer Programmiersprache, ohne gleich mit einem Controller loszulegen! Gruß Rainer
...und wenn der TO den ganzen Krempel jetzt nicht in der Schublade verschwinden läßt, dann wird er mit seinem nächsten Projekt deutlich mehr Spass haben! Und dazu wünsche ich Spass und Erfolg! Gruß Rainer
Hallo "Nein. In klarer, unmißverständlicher Weise gesagt:..." Im vorliegenden Fall kann man aber klar erkennen das auch die sogenannten "Ansprachen" wichtig sind. Es hilft zwar nicht direkt bei der Frage des TO aber hängt diesmal aber doch eng damit zusammen und mag so manchen, Fehler bzw. massiv ein ungeschicktes Vorgehen von anderen Anfängern zu minimieren. Außerdem: So etwas ist für ein Forum normal, und trägt deutlich zur Attraktivität bei - ein Forum ist auch Unterhaltung und auch mal heftigere Diskussion. jemand
120 Postings, um einen Aufruf von pinMode(), einen Faktor 8 bei der Rohdatenskalierung und eine if-Abfrage und auf die Reihe zu kriegen, ist schon recordverdächtig ...
...ist mir trotzdem tausendmal lieber, als einem "faulen" Drittsemester seine Klausuraufgabe zu erklären! Gruß Rainer
Wolfgang schrieb: > 120 Postings, ... , ist schon recordverdächtig ... Da hast Du genug zu beigetragen, aber durchweg am Problem des TO vorbei.
Manfred schrieb: > Da hast Du genug zu beigetragen, aber durchweg am Problem des TO vorbei. Wenn auf ganz konkrete Rückfragen keine Reaktion kommt und von anderen alle möglichen Nebelgranaten geschmissen werden, geht so ein Thread nun mal in die Breite. Ein bißchen Eigeninitiative als Reaktion auf Denkanstöße erwarte ich schon. Ansonsten guck dir den Verlauf des Threads ruhig noch mal von vorne an.
Rainer V. schrieb: > einem "faulen" Drittsemester wenn du den Ursprungsposter meinst: ich vermute mal, das "Helmut" ein alter Name, bzw. eine ältere Person ist. Ich gehe weiterhin von aus, dß Helmut keinen (originalen) Computer-Technischen Hintergrund hat. Helmut hat sich klar, freundlich und Präzise artikuliert, und konnte im allgemeinen die gestellten Fragen auch gescheit beantworten (sofern der Zusammenhang klar war oder erläutert wurde) Was soll also das teilweise rüpelhafte Verhalten einiger Forenteilnehmer? Freut auch doch eher, das jemand euer Wissen gebrauchen kann, und übt euch in der Kunst der Höflichkeit und didaktischer Höchstleistungen ...
Wegstaben V. schrieb: > ich vermute mal Hey, anstatt zu Vermuten, hättest du besser mal die Beiträge gelesen! Und deine persönliche Meinung um den TO interessiert doch nicht einmal den "Bundeskunzler" Also sag' was Konstruktives!! Gruß Rainer PS: oder bist du zufällig im 3. Semester?! :-) mußte sein...
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.