INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Alles nur im seriellen Monitor, nicht LCD?
25.02.2016, 16:32
Beitrag #17
RE: Alles nur im seriellen Monitor, nicht LCD?
Hallo,
ich komme nicht weiter. Mir fällt es schwer zu entscheiden auf was ich mich beziehen muss. Bei einem Schalter,Ldr oder Pfoto- Diode wäre es klar. Aber wer regelt hier was. Dallas Temperatur Steuerung oder One Wire? Wahrscheinlich ist One Wire nur für die Zuordnung, ins besondere wenn mehrere Sensoren auf einem Bus hängen, zuständig. Aber wer gibt die Daten aus?. Nun hat die Fehlermeldung den Vorschlag gemacht, ich soll mich auf "Dallastemperature" beziehen.
Das sieht dann so aus:
Code:
int val =digitalRead(DallasTemperature); /Zahl einlesen
  
if (val ==> 25)  // Wenn größer als 25

{
    digitalWrite(ledPin, HIGH);     //Soll LED leuchten

Aber dann kommt die Fehlermeldung.
Code:
"Arduino: 1.6.5 (Windows 7), Platine: "Arduino / Genuino Uno"

_1._18B20_Regelung.ino: In der Funktion "Leere Schleife () ':
_1._18B20_Regelung: 43: Fehler: erwartet Primärausdruck vor ')' token
_1._18B20_Regelung: 44: Fehler: nicht gewachsen "Betreiber == '(Operandentypen sind' DallasTemperature 'und' int ')
erwartet Primärausdruck vor ')' token

   Waren dieser Bericht hätte mehr Informationen mit
   "Ausführliche Ausgabe während der Kompilierung"
   aktiviert in Datei> einstellungen

Leere Schleife? Ist nur
Code:
--sensors.requestTemperatures();
Ich kann mit -Primärausdruck- nichts anfangen.
Ich würde das so übersetzen:" von ihm ausgehender Grundparameter".
Dann bin ich wieder bei meiner obigen Frage.

Der ganze Code sieht jetzt so aus:
Code:
#include <LiquidCrystal.h>

const int numRows = 2; //2 Zeilen
const int numCols = 16;// 16 Zeichen

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //LCD Anschluß

// Include the libraries we need
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 6  //18B20 sitzt auf Digipin 6

OneWire oneWire(ONE_WIRE_BUS);  //Bereitet die Daten vom 18B20 auf


DallasTemperature sensors(&oneWire); //Arbeitet mit ONEWIRE

const int ledPin = 13; //Schaltet wenn Temp. erreicht



void setup(void)
{
//Startet Programme
lcd.begin(numCols, numRows);

  sensors.begin();

  pinMode(ledPin, OUTPUT); //Leuchtet wenn Temperatur=HIGH
pinMode(ONE_WIRE_BUS, INPUT); //Hier kommt das Signal her
      
}

void loop(void)
{
  lcd.setCursor(0,0);  //Schreibt 1.Zeile ab Anfang
  
lcd.print("Tempinnen: ");  //Text
  sensors.requestTemperatures(); // Output in Temperatur
lcd.println(sensors.getTempCByIndex(0));  //Fängt an zu schreiben
  
  int val =digitalRead(DallasTemperature); /Zahl einlesen
  
if (val ==> 25)  // Wenn größer als 25

{
    digitalWrite(ledPin, HIGH);     //Soll LED leuchten
  }
  
}

Achim

Ich kann kaum etwas lernen, vergesse das auch wieder. Aber wenn ich etwas immer wieder klar vor Augen habe, kann ich verdammt viel damit anfangen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 17:43
Beitrag #18
RE: Alles nur im seriellen Monitor, nicht LCD?
Hallo,
zu ernten gibt es hier aber noch nichts. Du machst genau dort weiter wo Du
aufgehört hast… ohne Rücksicht auf Verluste.

das "==>" kenne ich nicht, kennst Du es?
"lcd.printline" und LCD ist immer zweifelhaft.
Richtig ist : lcd.print(Wert X);
Die Fehlermeldungen kenne ich auch nicht.

Was machst Du dort eigentlich? Wenn Du im Grunde nicht weißt wie es geht,
dann kommst Du mit Copy & Paste weder bei Dir, noch hier weiter.
Im BeispielSketch zum Dallas kann man (auch Frau) doch genau erkennen wie
es im Ablauf vor sich geht.
Auch "Hallo Welt" zeigt Dir wie man ein Display nutzt.
Auch auf Seite 61 des Kochbuch kannst Du nachschauen, welche Funktion
der Operator "==>" abdeckt.
Gruß und Spaß
Andreas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 20:47 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2016 20:51 von malsehen.)
Beitrag #19
RE: Alles nur im seriellen Monitor, nicht LCD?
Danke Andreas,
ich brauchte aber mal Erfolg. Deshalb habe ich versucht unteren Sketch zu schreiben.
Ich habe (fast) nichts kopiert, sondern versucht zusammenstellend zu Schreiben.
Es Funktioniert auch alles. Bis auf die Pause ganz unten um den Pin 13 länger eingeschaltet zu lassen. Das ist von Seite 397 aus dem Hoppel Buch(Arduino Kochbuch) Da ich schon diverse Stunden davorsitze dachte ich:"Mal wieder verschrieben". Doch dann hatte ich die const long deklarierung reinkopiert, und auch unten das Delay(eine Minute). Der gleiche Fehler wie bei meinem Schreiben.

Code:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int numRows=2;
const int numCols=16;

const int inPin= 5;//NTC 10KΩ bei20°C in Serie mit R=10KΩ
int ledPin = 13;//Ausgang bei Temp erreichen auf High


void setup() {
  
lcd.begin(numCols, numRows);//Start


pinMode(ledPin,OUTPUT);  //Start

const long oneSecond = 1000;  // a second is a thousand milliseconds
const long oneMinute = oneSecond * 60;
const long oneHour   = oneMinute * 60;
const long oneDay    = oneHour * 24;

}

void loop() {
  
lcd.setCursor(0,0);  //1. Reihe
lcd.print("Temperatur ");  //Schreibt das Wort

lcd.setCursor(0,1);  // 2. Reihe

int val;  // Einen Wert vom Sensor einlesen
int Celsius;  // Er heißt Celsius

val=analogRead(inPin);  //Von A5 einlesen

Celsius=map(val,0,1023,0,40);
//0 bis 5V entspricht 0-1023
//511 ist davon 1/2.=2500mV
//10KΩ Sensor entpricht 20°C
//R=10kΩ in Reihe mit Sensor R=10KΩ entspricht 2500mV =20°


{

   lcd.setCursor(1,1);  //2. Reihe 3. Feld
   lcd.print( Celsius); //Schreibe den Wert für Celsius
  
  lcd.print("    Celsius ");  //Schreibe Celsius mit Platz davor für Wert

if (Celsius==21) //Wenn 21°C erreicht sind
  digitalWrite(ledPin,HIGH);//Schalte Pin D13 Auf High
{
delay(oneMinute); //Fehlermeldung?
{
  if (Celsius==20) //soll unter 20° Pin 13 auf Low setzen
  digitalWrite(ledPin,LOW);

  
}

}
Code:
Arduino: 1.6.5 (Windows 7), Platine: "Arduino/Genuino Uno"

sketch_feb25b.ino: In function 'void loop()':
sketch_feb25b:53: error: 'oneMinute' was not declared in this scope
sketch_feb25b:61: error: expected '}' at end of input
sketch_feb25b:61: error: expected '}' at end of input
'oneMinute' was not declared in this scope
Arduino: 1.6.5 (Windows 7), Platine: "Arduino / Genuino Uno"
Skizze 25. Februar b.ino: In der Funktion "Leere Schleife () ':
sketch_feb25b: 53: Fehler: »oneminute 'wurde in diesem Rahmen erklärt
sketch_feb25b: 61: Fehler: erwartet '}' am Ende der Eingangs
sketch_feb25b: 61: Fehler: erwartet '}' am Ende der Eingangs

Danke für die Anspornung.
Für Heute reicht es.

Achim

Ps: die map Funktion ging auch nicht. Ich wollte in der 2. Zeile in 2 x 7 stellige Blöcke teilen. Das wollte nicht gehen. Deshalb habe ich vor Celsius die Leerzeichen eingesetzt.

Ich kann kaum etwas lernen, vergesse das auch wieder. Aber wenn ich etwas immer wieder klar vor Augen habe, kann ich verdammt viel damit anfangen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 22:04 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2016 22:05 von SkobyMobil.)
Beitrag #20
RE: Alles nur im seriellen Monitor, nicht LCD?
Hallo,


const long eineSekunde = 1000; // 1 Sek sind 1000 Millisekunden
const long eineMinute = eineSekunde * 60; 1 Min
const long eineStunde = eineMinute * 60; 1 Std
const long einTag = eineStunde * 24; 1Tg


if (Celsius==21) //Wenn 21°C erreicht sind
{
digitalWrite(ledPin,HIGH);//Schalte Pin D13 Auf High
}

delay(eineMinute); //keine Fehlermeldung?

if (Celsius==20) //soll unter 20° Pin 13 auf Low setzen
{
digitalWrite(ledPin,LOW);
}

Gruß und Spaß
Andreas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 23:09
Beitrag #21
RE: Alles nur im seriellen Monitor, nicht LCD?
Andreas hatte dir das ja schon gezeigt.

Ich habe den kompletten Sketch noch mal eingebunden, inkl. der kompletten Deklaration und Loop.
Bei mir sind die "const Variablen" auch in der Deklaration, dann sind diese überall verwendbar.
Die gehören nicht in das Setup, so wie bei dir.

Code:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int numRows = 2;
const int numCols = 16;

const long oneSecond = 1000;  // a second is a thousand milliseconds
const long oneMinute = oneSecond * 60;
const long oneHour   = oneMinute * 60;
const long oneDay    = oneHour * 24;


const int inPin = 5; //NTC 10KΩ bei20°C in Serie mit R=10KΩ
int ledPin = 13;//Ausgang bei Temp erreichen auf High


void setup() {
  lcd.begin(numCols, numRows);//Start
  pinMode(ledPin, OUTPUT); //Start
}

void loop() {

  lcd.setCursor(0, 0); //1. Reihe
  lcd.print("Temperatur ");  //Schreibt das Wort

  lcd.setCursor(0, 1); // 2. Reihe

  int val;  // Einen Wert vom Sensor einlesen
  int Celsius;  // Er heißt Celsius

  val = analogRead(inPin); //Von A5 einlesen

  Celsius = map(val, 0, 1023, 0, 40);
  //0 bis 5V entspricht 0-1023
  //511 ist davon 1/2.=2500mV
  //10KΩ Sensor entpricht 20°C
  //R=10kΩ in Reihe mit Sensor R=10KΩ entspricht 2500mV =20°


  lcd.setCursor(1, 1); //2. Reihe 3. Feld
  lcd.print( Celsius); //Schreibe den Wert für Celsius

  lcd.print("    Celsius ");      //Schreibe Celsius mit Platz davor für Wert

  if (Celsius == 21) {            //Wenn 21°C erreicht sind
    digitalWrite(ledPin, HIGH);   //Schalte Pin D13 Auf High
  }

  delay(oneMinute);

  if (Celsius == 20) {            //soll unter 20° Pin 13 auf Low setzen
    digitalWrite(ledPin, LOW);
  }
}

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.02.2016, 08:10
Beitrag #22
RE: Alles nur im seriellen Monitor, nicht LCD?
Herzlichen Dank,
das war aber auch sehr dösig von mir. Über eine Stunde hatte ich da drauf gesehen ohne zu bemerken, das es im Setup steht.
Trotzdem bin ich froh, das überhaupt mal was geht.
Die Pause wirkt sich noch ungünstig aus.
Die nächste Aufgabe ist, die einzelnen Funktionen nacheinander ablaufen zu lassen.
Die Information hatte ich schon mal gelesen.

Schwieriger wird noch die gewünschte Temperatur über 2 Taster einzustellen. Da habe ich überhaupt keinen Plan.
Das einfachste wäre ganz FRECH die Meßbrücke zu ändern.

[Bild: 24703029wb.jpg]

Wäre eine Option?
Denn ob ich nun Schalter oder Taster nehme ist egal. Es würde reichen 21°-22°-23°.
Oh wie provokant!

Das ist aber auch ein Zeitgrab.

Noch bin ich aber dabei.
Das verdanke ich Euch.
Achim

Ich kann kaum etwas lernen, vergesse das auch wieder. Aber wenn ich etwas immer wieder klar vor Augen habe, kann ich verdammt viel damit anfangen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.02.2016, 11:19 (Dieser Beitrag wurde zuletzt bearbeitet: 26.02.2016 11:21 von SkobyMobil.)
Beitrag #23
RE: Alles nur im seriellen Monitor, nicht LCD?
Hallo,
am besten schreibst Du Dir einen neuen Sketch für die Taster- damit kannst
Du dann sehen ob diese Taster mit ihren Funktionen auch funktionieren.

Wenn das dann läuft, kopierst Du es Dir in Deinen Projekt-Sketch.
Wie man einen Taster verwendet steht auf Seite 152.
Wie man sich gegen das Prellen des selben schützt auf Seite 158.

Sieht dann in etwa so aus:

int Temperatur = 20; // Start Temperatur für die Regelung
static boolean TastenDruck = true; // für die Auswertung des Taster

IF (Taster gedrück)
{
Temperatur++ // zählt Temperatur hoch, Taster einmal (kurz) gedrückt- Temperatur=21
}
IF (anderer Taster gedrückt)
{
Temperatur-- // zählt Temperatur runter, Taster einmal (kurz) gedrückt- Temperatur=19
}

Dann brauchst Du noch eine "logischeFunktion" damit beim Taster drücken nur
einmal "Temperatur++" ausgeführt wird.

Könnte so aussehen:


if (Taster gedrück)
{
if(TastenDruck) // nur wenn wahr, dann mache etwas
{
Temperatur++
TastenDruck = false;
}
}
else
{
TastenDruck = true;
}

Im ersten Beispiel läuft "Temperatur++" so lange durch, wie der Taster gedrückt
ist- Du wirst es sehen.
Im zweiten Beispiel läuft "Temperatur++" einmal durch, wenn der Taster gedrückt
ist.

Wie man Taster nutzt und auswertet steht also genau beschrieben. Selbst ein
blutiger Anfänger bekommt das ohne Hilfe hin.
Also…
Gruß und Spaß
Andreas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.02.2016, 19:18
Beitrag #24
RE: Alles nur im seriellen Monitor, nicht LCD?
Hallo Andreas,
danke für Deine Ausführungen. Sogar mit Seitenzahl!
Da arbeite ich mich als Nächstes ein.

Ich habe erstmal:
Code:
const int threshold=21;  // Schwellwert
damit ab z.B. 21° geschaltet wird.

Irgendwie reagiert das Programm in Abhängigkeit von der delay Zeit schneller oder langsamer auf Temperaturänderungen. Der NTC ist viel schneller und so kalte Finger habe ich ja auch nicht.
Wenn ich auf delay(Minute) setze ist alles Lahm.
Wenn ich auf delay(100) setze ist alles OK.
Eben auch unterhalb des Schwellwertes.

Zitat:. Selbst ein
blutiger Anfänger bekommt das ohne Hilfe hin.
Also…
Wir können ja mal die Gehirne Tauschen. Das geht schon! Habe ich mal in der Programmzeitschrift gelesen. "Über Tag > 60 Jahre alt" Mal sehen wie schnell Du zurück tauschen willst.

Danke das Du für mich soviel Zeit hast.
Achim

Ich kann kaum etwas lernen, vergesse das auch wieder. Aber wenn ich etwas immer wieder klar vor Augen habe, kann ich verdammt viel damit anfangen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino lässt sich nicht installieren bergfrei 4 137 20.11.2016 18:34
Letzter Beitrag: bergfrei
  Arduino Mega 2560 läuft nicht Wolfgang50 6 174 13.11.2016 10:50
Letzter Beitrag: Wolfgang50
  Ausgabe Serial Monitor zu viele Byt`s Hannes 0 91 12.11.2016 20:29
Letzter Beitrag: Hannes
  Ardublock übertragt nicht an IDE oder UNO R3 tobi83 5 328 16.10.2016 14:07
Letzter Beitrag: Pit
  Upload funktioniert nicht Levi 5 237 22.09.2016 20:19
Letzter Beitrag: hotsystems
  ESP8266 tuts nicht sowerum 7 386 19.09.2016 21:01
Letzter Beitrag: sowerum
  If-Bedingung funktioniert nicht bei Serial1.write Datatom 6 222 16.09.2016 20:36
Letzter Beitrag: Datatom
  SD Karte wird nicht erkannt... Maxi290997 2 202 16.08.2016 14:36
Letzter Beitrag: Maxi290997
  Arduino lässt sich nicht mehr beschreiben Maxi290997 15 965 07.08.2016 11:40
Letzter Beitrag: Maxi290997
  Serial Monitor ASCII 1 schreiben BennIY 11 575 01.08.2016 16:42
Letzter Beitrag: Mathias

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste