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???
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()
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
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
constintDS18S20_Pin=2;//DS18S20 Signal pin on digital 2
6
constintrelaisPin=12;// Relais auf dem Pin 12 //Temperature chip i/o
7
8
OneWireds(DS18S20_Pin);// on digital pin 2
9
10
voidsetup(void)
11
{
12
Serial.begin(9600);
13
}
14
15
voidloop(void){
16
floattemperature=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
floatgetTemp(){
25
//returns the temperature from one DS18S20 in DEG Celsius
26
27
bytedata[12];
28
byteaddr[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
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
constintDS18S20_Pin=2;//DS18S20 Signal pin on digital 2
6
constintrelaisPin=12;// Relais auf dem Pin 12 //Temperature chip i/o
7
8
OneWireds(DS18S20_Pin);// on digital pin 2
9
10
voidsetup(void)
11
{
12
Serial.begin(9600);
13
}
14
15
voidloop(void){
16
floattemperature=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
floatgetTemp(){
31
//returns the temperature from one DS18S20 in DEG Celsius
32
33
bytedata[12];
34
byteaddr[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
Manfred schrieb:> Rainer V. schrieb:>> ...in allen Editoren, die ich kenne, kann man eine Zeilennummerierung> einschalten!>> Sogar in der Arduino ...
...na also...
@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
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
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:> 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
????
constintDS18S20_Pin=2;//DS18S20 Signal pin on digital 2
7
constintrelaisPin=12;// Relais auf dem Pin 12 //Temperature chip i/o
8
9
OneWireds(DS18S20_Pin);// on digital pin 2
10
OneWireoneWire(ONE_WIRE_BUS);
11
DallasTemperaturesensors(&oneWire);
12
13
voidsetup(void){
14
Serial.begin(9600);
15
sensors.begin();
16
}
17
18
voidloop(void){
19
sensors.requestTemperatures();// Send the command to get temperatures
20
Serial.println("DONE");
21
floattemperature=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 .
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=ArduinoNano
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)
aber es lief, natürlich nicht mit dem sketch unter DS18s20 weil ich
keinen besitze, aber mit Änderungen:
aus:
1
intDS18S20_Pin=2;//DS18S20 Signal pin on digital 2
2
//Temperature chip i/o
3
OneWireds(DS18S20_Pin);// on digital pin 2
schnell umgeschrieben zu
1
intDS18B20_Pin=2;//DS18S20 Signal pin on digital 2
2
//Temperature chip i/o
3
OneWireds(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
intDummbatz_Pin=2;// DS18S20 Signal pin on digital 2
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
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?
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.
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...
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
@ 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
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.
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.
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
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
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!!!
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!
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/132267277186Helmut 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.
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 ...
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...