Seltsames Zeichen in einem Merker

Ich habe einen Merker der nur drei Zustände haben kann. 0, 1, 2, ist möglich. Wenn ich diesen Merker im Display anzeige, steht aber immer ein "t" davor. Also "t0, oder t1, oder t2 :roll_eyes:
Deklariert wird er als byte. Also "byte fenstermerker = 0;". Wenn ich den Merker mit if auf 0, 1, oder 2, abfrage kommt das richtige Ergebnis. Also es stört nicht im Programm.

  //-------------Schalter lesen-------------------------------------------
    schalter1 = digitalRead(offen);
    if (schalter1 == LOW)
    {
      fenstermerker = 1;
    }
    schalter2 = digitalRead(zu);
    if (schalter2 == LOW)
    {
      fenstermerker = 2;
    }
    if ((schalter1 == HIGH) && (schalter2 == HIGH))
    {
      fenstermerker = 0;
    }
     lcd.setCursor (14 , 0);
      lcd.print (fenstermerker);
      lcd.print (F(" - "));
      lcd.print (lueftung);

Der Fehler liegt nicht im gezeigten Code.

Das Programm ist bis zur untestbarkeit verstümmelt.

@Franz54 Du solltest als alter Forumsnutzer eigentlich wissen, dass man mit solchen Schnipseln nichts anfangen kann. Wahrscheinl,ich ist das 't' der Rest einer Ausgabe irgendwo anders im Programm.

Du schreibst vorher schon in die Zeile. Überlauf von einer Funktion vorher. Schreib ein delay(5000) vor die Positionierung - dann siehst Du, was da steht.

Hier ist der ganze Code.

// Arduino CO2 Sensor - MH-Z19 Beispiel und Sketch
// https://iotspace.dev/arduino-co2-sensor-mh-z19-beispiel-und-sketch
/*
  bis 400   frische Außenluft
  bis 800   hohe Raumluftqualität
  bis 1000  akzeptabel „Pettenkoferzahl“
  1000–2000 Hygienisch auffällig
  über 2000 Hygienisch inakzeptabel
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#include "DHT.h"
const byte DHTPIN1 = 2;         // Hier die Pin Nummer eintragen wo der Sensor1 angeschlossen ist
const byte DHTPIN2 = 3;         // Hier die Pin Nummer eintragen wo der Sensor2 angeschlossen ist
#define DHTTYPE DHT22     // Hier wird definiert was für ein Sensor DHT11 oder DHT22 !!
DHT dht1(DHTPIN1, DHTTYPE); //Sensor1 einrichten
DHT dht2(DHTPIN2, DHTTYPE); //Sensor2 einrichten
const byte DataPin = 6; // Pin für CO2 Sensor
const byte RPWM = 9;
const byte LPWM = 10;
//-------Schalter------
const byte offen = 11;
byte schalter1 = 0;
const byte zu = 12;
byte schalter2 = 0;
byte fenstermerker = 0;
//-------Taster-------
const byte Taster = 13;
byte Tasterstatus = 0;
byte Tastenmerker = 0;
unsigned long Sekundenablauf01 = 0; // Tastenabfrage von Taster 300ms aussetzen
const unsigned long Pausezeit01 = 300;
//----CO2 Sensor------
int ppmrange = 5000;
unsigned long pwmtime;
int PPM = 0;
float pulsepercent = 0;
//---Fenstersteller--
byte lueftung = 0;
//---Programm Pause--
unsigned long Sekundenablauf02 = 0; // Programmpause 5 Sekunden
const unsigned long Pausezeit02 = 5000;
//-----------------------AusgangPIN7-------------------------------------
const byte Ausgang01 = 7;          // Pin 7 LED1
byte Ausgangsstatus01 = 0;
//-----------------------AusgangPIN8-------------------------------------
const byte Ausgang02 = 8;          // Pin 8 LED2
byte Ausgangsstatus02 = 0;
//-----------------------AusgangPIN9-------------------------------------
const byte Ausgang03 = 9;          // Pin 9 LED3
byte Ausgangsstatus03 = 0;
//-------------------------Tonausgabe PIN 17-----------------------------
const byte tonPin = 17;
const int frequenz = 1000;
unsigned long tonZeit = 50;
//--------------------------------------------------------------
void setup() {
  lcd.begin();
  lcd.backlight();
  lcd.setCursor (0, 0);
  lcd.print (F(" - CO2  Bel""\xF5""ftung -"));
  pinMode(DataPin, INPUT);
  Serial.begin(9600);
  // Luftfeuchte und Temperatur Sensoren
  dht1.begin(); // Sensor1 starten
  dht2.begin(); // Sensor2 starten
  //-----------Ausgänge einrichten--------------------------------------
  Ausgangsstatus01 = 0;                       // LED
  pinMode(Ausgang01, OUTPUT);
  Ausgangsstatus02 = 0;                       // LED
  pinMode(Ausgang02, OUTPUT);
  Ausgangsstatus03 = 0;                       // LED
  pinMode(Ausgang03, OUTPUT);
  pinMode(RPWM, OUTPUT);              // PWM Motorsteuerung auf
  pinMode(LPWM, OUTPUT);              // PWM Motorsteuerung zu
  pinMode(offen, INPUT_PULLUP);       // Schalter Fenster auf
  pinMode(zu, INPUT_PULLUP);          // Schalter Fenster zu
  pinMode(Taster, INPUT_PULLUP);      // Taster Display ein/aus
}
//--------------------------------------------------------------
void loop()
{
  //-------------Taster lesen-----------------------------------------------
  if (millis() - Sekundenablauf01 >= Pausezeit01) { // 200msec abgelaufen?
    Tasterstatus = digitalRead(Taster);         // Pin von Taster abfragen
    if (Tasterstatus == LOW) {                    // Ist Taster gedrueckt?
      Tastenmerker = !Tastenmerker;   // Merken dass Taster gedrueckt wurde
      if (Tastenmerker == LOW)
      {
        lcd.noBacklight();
      }
      else
      {
        lcd.backlight();
      }
      Sekundenablauf01 = millis();                  // Die 200ms neu starten
    }
  }
  //-------------------------------------------------------------------------
  if (millis() - Sekundenablauf02 >= Pausezeit02) { // 5000ms abgelaufen?
    Sekundenablauf02 = millis();                     // Die 5000ms neu starten
    //-----------------------------------------------------------------------
    pwmtime = pulseIn(DataPin, HIGH, 2000000) / 1000;
    float pulsepercent = pwmtime / 1004.0;
    PPM = ppmrange * pulsepercent;
    lcd.setCursor (0, 3);
    lcd.print (F(" CO2 in PPM = "));
    lcd.setCursor (14, 3);
    lcd.print (F("     "));
    lcd.setCursor (14, 3);
    lcd.print (PPM);

    float h1 = dht1.readHumidity();    // Lesen der Luftfeuchtigkeit1 und speichern in die Variable h1
    float t1 = dht1.readTemperature(); // Lesen der Temperatur in °C1 und speichern in die Variable t1
    float h2 = dht2.readHumidity();    // Lesen der Luftfeuchtigkeit2 und speichern in die Variable h2
    float t2 = dht2.readTemperature(); // Lesen der Temperatur in °C2 und speichern in die Variable t2
    //--------------------------
    lcd.setCursor (18, 1);
    lcd.print (F(" "));
    lcd.setCursor (0, 1);
    lcd.print (F(" L1 "));
    lcd.print (h1);
    lcd.print (F("% T1 "));
    lcd.setCursor (14, 1);
    lcd.print (t1);
    if (t1 < 10)
    {
      lcd.setCursor (14, 1);
      lcd.print (F(" "));
      lcd.print (t1);
    }
    //------------------------
    lcd.setCursor (18, 2);
    lcd.print (F(" "));
    lcd.setCursor (0, 2);
    lcd.print (F(" L2 "));
    lcd.print (h2);
    lcd.print (F("% T2 "));
    lcd.setCursor (14, 2);
    lcd.print (t2);
    if (t2 < 10)
    {
      lcd.setCursor (14, 2);
      lcd.print (F(" "));
      lcd.print (t2);
    }
    //-----------------------
    if (PPM <= 1000)
    {
      Ausgangsstatus01 = 1;
      Ausgangsstatus02 = 0;
    }
    if ((PPM > 1000) && (PPM < 2000))
    {
      Ausgangsstatus01 = 0;
      Ausgangsstatus02 = 1;
    }
    if (PPM > 2000)
    {
      Ausgangsstatus01 = 0;
      Ausgangsstatus02 = 0;
      tone(tonPin, frequenz, tonZeit);
    }
    //----------------------
    //---Lüftung Einschaltbedingung-----
    if (lueftung == 0)
    {
      if ((t1 >= 23) && (PPM > 900))
      {
        lueftung = 1;
        Ausgangsstatus03 = 1;
      }
    }
    //---Lüftung Ausschaltbedingung-----
    if (lueftung == 1)
    {
      if ((t1 <= 21) || (PPM < 430))
      {
        lueftung = 0;
        Ausgangsstatus03 = 0;
      }
    }
    //-------------Schalter lesen-------------------------------------------
    schalter1 = digitalRead(offen);
    if (schalter1 == LOW)
    {
      fenstermerker = 1;
    }
    schalter2 = digitalRead(zu);
    if (schalter2 == LOW)
    {
      fenstermerker = 2;
    }
    if ((schalter1 == HIGH) && (schalter2 == HIGH))
    {
      fenstermerker = 0;
    }
     lcd.setCursor (14 , 0);
      lcd.print (fenstermerker);
      lcd.print (F(" - "));
      lcd.print (lueftung);
    //-------------LED01 schalten-------------------------------------------
    digitalWrite (Ausgang01, Ausgangsstatus01);     // Ausgang01 LED Grün umschalten

    //-------------LED02 schalten-------------------------------------------
    digitalWrite (Ausgang02, Ausgangsstatus02);     // Ausgang02 LED Gelb umschalten

    //-------------LED03 schalten-------------------------------------------
    digitalWrite (Ausgang03, Ausgangsstatus03);     // Ausgang03 LED Rot (Blau) umschalten

    //------------------Fenster öffnen--------------------------------------
    if (((lueftung == 1) && (fenstermerker == 0)) || (fenstermerker == 1))
    {
      analogWrite(LPWM, 0);
      analogWrite(RPWM, 255);
      lcd.setCursor (0, 0);
      lcd.print (F(" Fenster auf "));
    }
    //------------------Fenster schließen-----------------------------------
    if (((lueftung == 0) && (fenstermerker == 0)) || (fenstermerker == 2))
    {
      analogWrite(LPWM, 255);
      analogWrite(RPWM, 0);
      lcd.setCursor (0, 0);
      lcd.print (F(" Fenster zu  "));
    }
  }
}

Ja, du hast recht. Ich überbügle einfach nur den alten Text. Da kommt das "t" her. :pleading_face: :pleading_face: :pleading_face: Dass mir sowas einfaches noch passiert :roll_eyes:

Hallo,
Bäume, Wald .... Und man wird vergesslich.
Heinz

Ja, auf einen derartigen Fehler habe ich schon oft andere hingewiesen. Und dann macht man ihn selber. Ich bin ja mit dem Gerät schon eine Zeit lang am Arbeiten und immer wieder bischen verbessern. Dadurch habe ich an diese Zeile fast ganz oben in Code nicht mehr gedacht. Ich meinte echt, ich habe einen Fehler der im Speicher was überschreibt, habe aber natürlich nichts gefunden :roll_eyes: ....weil da nichts derartiges ist.

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