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

Die Götter müssen verrückt sein.
Ach es gibt gar keine?
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.

Die Götter müssen verrückt sein.
Ach es gibt gar keine?
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

Die Götter müssen verrückt sein.
Ach es gibt gar keine?
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

Die Götter müssen verrückt sein.
Ach es gibt gar keine?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 263 22.08.2017 15:17
Letzter Beitrag: Tommy56
  BME280 - Luftdruckoffset nicht einstellbar ? Stargazer 17 863 13.08.2017 15:38
Letzter Beitrag: hotsystems
  Ich komme mit millis nicht weiter !!! Gonmaus 8 636 09.07.2017 21:24
Letzter Beitrag: Tommy56
  WEMOS Motorshield funzt nicht Rumpl-X 8 449 07.06.2017 21:10
Letzter Beitrag: Tommy56
  TFT Monitor und Grafiken Thor Wallhall 10 554 16.05.2017 18:15
Letzter Beitrag: Thor Wallhall
  LCD geht nicht - keine Ahnung warum?? DL1AKP 12 736 15.05.2017 13:17
Letzter Beitrag: DL1AKP
  433mHz Funkmodule senden/empfangen nicht metzgefa 2 647 06.05.2017 13:30
Letzter Beitrag: metzgefa
  serial monitor, Ausgabe übereinander möglich?? silversurfer123 4 330 18.04.2017 19:19
Letzter Beitrag: silversurfer123
  SD Karte wird nicht erkannt Maxi290997 6 383 31.03.2017 06:05
Letzter Beitrag: Bitklopfer
Sad Sketch funktioniert auf dem Mega 2560 nicht Frank1234 16 997 26.03.2017 14:15
Letzter Beitrag: oOSpikeOo

Gehe zu:


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