Fehlermeldung „ stray \342´ in program “ ?

Moin Leute,

wieder eine Frage zum Controllino (Typ Maxi) - hier eigentlich nicht so ganz richtig -
aber hier bekommt man wenigstens Antworten!!!

Wir wissen ja alle, dass sich der DHT22 ab und zu „aufhängt“.

Meine Lösung für das Problem:

  • Einen pin als Ausgang definieren und als Ub+ 5V für den DHT22 verwenden
  • Diesen im setup auf HIGH (+5V) schalten
  • Diesen dann in regelmäßigen Abständen auf LOW schalten (d.h. keine Versorgungsspannung für den DHT22 = Reset )
  • Warten, (das Programm hat Zeit!)
  • Ausgang wieder HIGH (+5V) schalten

Die Hardware Versuche dazu liefen sehr gut.

Jetzt habe ich versucht ein Test-Programm zu schreiben.
(Reset über millis() nach Ablauf einer definierten Zeit)

Aber sobald ich die ausgeblendeten Zeilen aktiviere bekomme ich die Fehlermeldung „ stray \342´ in program “

Sonst würde das Programm laufen wie es soll.
(Anzeige millis in der ersten Zeile - Temp. und Feuchte in der zweiten Zeile)

// Test-Programm "DHT22_LCD_Jb1.ino" läuft!!   04.11.2023
// Rev.: 1   Variable für Millis einfügen - Anzeige Temp. und Feuchte in Zeile 2      -> funktioniert nur mit float-Variable - diese muss vor dem setup deklariert werden!
// Rev.: 2   Millis direkt in Zeile 1 anzeigen 
// Rev.: 3/4   Reset über Millis

// 04.11.2023 - läuft ??   -> Nein  :-(                                                                                               Board "CONTROLLINO MAXI", Port X, Programmer: AVRISP mkll

byte pin_DHT = 44;  

#include <Controllino.h>    // Usage of CONTROLLINO library

#include <SimpleDHT.h>      //Fügt DHT22 Libary ein
  SimpleDHT22 dht22;        // Typ DHT22 zuordnen
  
#include <LiquidCrystal.h>                  // läd das LCD-Programm (library code)
  LiquidCrystal lcd(9, 10, 11, 12, 13, 42);    // initialize the library  Syntax: LiquidCrystal lcd(rs, enable, d4, d5, d6, d7)
  
 float Alte_Zeit;                 //Variable zum Speichern des alten Wertes
 float Zeitinterval = (1000*60);  //Variable für gewünschte Reset-Zeitdauer (1sek=1000)
 float zeit = 0;
 float h = 0;   // Variable für Luftfeuchtigkeit definieren als "float" (Fliesskomma Wert mit Nachkommastelle.von -3.4028235E+38 bis 3.4028235E+38)
 float t = 0;   // Variable für Temperatur definieren als "float" 

void setup() 
{
  pinMode(43, OUTPUT); digitalWrite(43, HIGH);   // Spannungsversorgung für DHT22 einschalten
  
  lcd.begin(16, 2);              // Display mit 16 Zeichen - in 2 Zeilen
  lcd.clear();                   // Display löschen
}

void loop() 
{
   zeit =  millis(); 
   lcd.setCursor(0, 0);             // Cursor auf Position 1, Zeile 1
   lcd.print("Millis: ");
   lcd.print( zeit,0);
   
/*if (zeit – Alte_Zeit > Zeitinterval)
   {
   Alte_Zeit = millis();
   //.... weiterer Code für Reset DHT22 hier in Planung
   }
*/
   Lesen_DHT();
}

void Lesen_DHT() // und am LCD Display anzeigen
{
pinMode(pin_DHT, INPUT);             // pin # als Eingang für DHT definieren

int err = dht22.read2(pin_DHT, &t, &h, NULL);


lcd.setCursor(0, 1); lcd.print(t,1); lcd.print("");lcd.write (223); lcd.print("C ");
                     lcd.print(h,1); lcd.print(" %rF    ");

delay(500);  // 2 Sekunden Pause
}

Kann mir jemand weiterhelfen?
Gruß Martin

Also die Variablen "zeit", "Zeitinterval" und "Alte_Zeit" sollten vom Typ "unsingned long" und nicht vom Typ float sein.

Und wo genau befindet sich die fehlerhafte Stelle in deinem Sketch ?
Im übrigen ist das nicht der einzige Fehler in deinem Sketch.
Evtl. überarbeitest du den selbst.

Die Meldung wird der Realität entsprechen.
Es steht sogar Zeile und Position in der Zeile in der Meldung.

Ist alles da, was du brauchst um den Fehler zu beheben.

Bist Du sicher, das Du das willst?
Wieviel mA nimmt denn Dein Sensor so...

@Wuehlmaus

Du hast (wahrscheinlich) einen bestimmten Abschnitt per Copy und Paste in den gezeigten Quellcode eingefügt. Dabei ist ein „Sonderzeichen“ in den Codeabschnitt gelangt, welches in der IDE nicht dargestellt wird. Das musst du finden und beseitigen.

@my_xy_projekt : Der Sensor benötigt etwa 1,5mA während einer Messung.

Schöne Vermutung!
Ist auch fast richtig.

Vergleiche dieses Minuszeichen(–), mit diesem(-).
Das eine sieht fast aus wie ein Minuszeichen, ist aber ein "EN Dash"

1 Like

Gut zu wissen :slight_smile:

Adlerauge! :+1:

Danke Leute!
(Wie ich geschrieben habe: hier wird einem geholfen ! :slight_smile: )

Tatsächlich habe ich um Zeit zu sparen und um keine Tippfehler zu machen den Programmteil aus dem wirklich guten Arduino Tutorial von Andreas Nagle per "copy paste" raus kopiert aus dem .pdf.
Der Schuss ging offensichtlich nach hinten los, genau aus den von Euch beschriebenen Gründen.

Also gelöscht, selbst geschrieben und jetzt läufts.
(Reset für 5 Sekunden alle 10 Sekunden)
Jetzt steht der Langzeit Test an:
Reset alle 24h für ein paar Wochen.

Gruß
Martin

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.