Temperatur Sensor auslesen und mit einem festen Wert vergleichen

Hallo alle zusammen,

viel Ahnung hab ich nicht, deshalb wende ich mich an Euch.
Ich habe ein Nano Board mit einem Temperatur Sensor BME280
und ein Diplay 0,96".
Die Ausgabe der Temperatur funktioniert.
Jetzt würd ich die aktuell gemessene Temperatur des Sensors, mit einem fest eingegebenen
Temperaturwert vergleichen und als Ausgabe an eine rote oder grüne LED oder Display anzeigen lassen.

was meint Ihr könnt Ihr mir helfen?

Pseudocode:

if (messwert > sollwert) {
  digitalWrite(rotPin, HIGH);
  digitalWrite(gruenPin,LOW);
}
else {
  digitalWrite(gruenPin,HIGH);
  digitalWrite(rotPin,LOW);
}

bei LED mit Vorwiderstand von Pin (Anode) nach GND (Kathode).

Gruß Tommy

hmm
ich weis willst mich testen, aber ich hab keinen Plan was Du da schreibst.

Ist es egal wo ich deine Zeilen im Sketch einfüge?
Mit der LED, was für ein Widerstand ist das genau?
So ich den dann in ein und der selben LED einfügen?

vielen lieben Dank Tommy

Hi

Auch Dir wird Google Antworten geben - vertraue mir!

Dann solltest Du Deinen ('DEINEN') Sketch ja auch verstanden haben - sonst würde Er ja nicht wirklich funktionieren, wa?

Und: Wir wollen Dich hier nicht 'testen' - wir wollen Dir hier nur nicht die vorgekauten Brocken hinwerfen - wenn Du Das selber schaffst, kannst Du Selber an Deinem Projekt weiter arbeiten.
Wenn wir Das für Dich amchen, kommst Du bei jedem fehlendem ; mit einem neuen Thread hier vorbei ... und ja, darauf haben wir keine Lust.

Dir fehlen, ganz zweifellos, so ziemlich sämtliche Grundlagen - Das kannst nur Du ändern.
Alleine die Frage zum Vorwiderstand der LED lässt mich doch starke Zweifen bekommen ...

MfG

Zum Vorwiderstand kann Dir das Elektronik-Kompendium weiter helfen.

Gruß Tommy

peseta3:
was meint Ihr könnt Ihr mir helfen?

Was meinst du, wäre es nicht Sinnvoll, wenn du uns den vorhandenen und funktionierenden Sketch zeigst ?
Dann könnten da evtl. ein paar weitere Tipps zusammen kommen, die dir evtl. sogar helfen könnten.

Ohne dich testen zu wollen

#include <Adafruit_SSD1306.h>

#include <cactus_io_BME280_I2C.h>

#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>





#include <Wire.h>

 
#include <SPI.h>
#include <Wire.h>



 
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
 
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
 
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
 
#define BTN_UP 9
 
int statusBtnUp = 0; //Status des Tasters
int index = 1; // Zählvariable
 
BME280_I2C bme(0x76);  // I2C using address 0x76
 
void setup() {
  Serial.begin(9600);
 
  //Setup für den BME280 Sensor
  if (!bme.begin()) {
    Serial.println("Es konnte kein BME280 Sensor gefunden werden!");
    Serial.println("Bitte überprüfen Sie die Verkabelung!");
    while (1);
  }
  bme.setTempCal(-1);
  
  //Setup für das Display
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(1000);
  display.clearDisplay();
 
  //Setup für den Button
  pinMode(BTN_UP,INPUT);
}
 
void loop() {
    bme.readSensor();
 
    statusBtnUp = digitalRead(BTN_UP);
    Serial.println(statusBtnUp);
    
    if(statusBtnUp == HIGH && index <3){ 
      index = index+1;
    } else if (statusBtnUp == HIGH && index ==3){
      index = 1;
    }
 
   switch(index){
     case 1: zeigeTemperatur(); break; 
     case 2: zeigeLuftfeuchtigkeit(); break;
     case 3: zeigeLuftdruck(); break;
   }    
}
 
void zeigeTemperatur(){
  String tempC = String(bme.getTemperature_C())+"C";
  displayText("Temperatur", tempC);
}
 
void zeigeLuftfeuchtigkeit(){
  String humidity = String(bme.getHumidity())+"%";
  displayText("Luftfeuchtigkeit", humidity);
}
 
void zeigeLuftdruck(){
   String pressure = String(bme.getPressure_MB())+" mPa";
   displayText("Luftdruck", pressure);
}
 
void displayText(String row1, String row2){
  delay(1000);
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println(row1);
  display.setCursor(0,50);
  display.println(row2);
  display.display();
  display.clearDisplay();
}

Hmm ... willst Du uns testen?
Oder was soll Das nun wieder sein?
Zumindest kein Versuch, einen ausgelesenen Wert mit egal was zu vergleichen.

Die delay() solltest Du ggf. noch entfernen - Die bremsen Dir Alles unnötig aus.

MfG

Wozu hast du 2 mal die Library "Wire.h" eingebunden ?

postmaster-ino:
Hmm ... willst Du uns testen?
Oder was soll Das nun wieder sein?
Zumindest kein Versuch, einen ausgelesenen Wert mit egal was zu vergleichen.

Die delay() solltest Du ggf. noch entfernen - Die bremsen Dir Alles unnötig aus.

MfG

nee hab ich auch nicht gemacht, das war ja hier meine Frage.

Ok ... langsam komme ich mir wie die Ratte im Labyrinth vor ... dann suche ich mir Mal meinen Käse und Popcorn und schaue dem Treiben von Außen zu ...

HotSystems:
Wozu hast du 2 mal die Library "Wire.h" eingebunden ?

Keine Ahnung ist schon ne weile her als ich das gemacht hatte.
vielleicht beim kopieren einfügen entstanden.

Hallo,

so wird das nichts, Du liesst die Daten des BM280 ja direkt in einen String ein , da kannst Du keine Abfragen mit if( x >Y) mehr machen.

Lese den Wert in eine variable vom Typ float ein. Dann kannst Du damit auch rechnen , halt das was man mit Zahlen so machen kann.
so nicht lauffähig

float temperatur= bme.getTemperature_C();  // auslesen als float

if  (temperatur > maxwert){

}

// für die Anzeige 

String Temp= temperatur+"C";

Geh da mal step by step for um es zu verstehen.

Heinz

Leider hab ich keine wirkliche Zeit für sowas.
Dachte nur das Ihr mir schnell weiter helfen könnt.
So muß noch ein wenig schlafen und dann zur Schicht die Welt retten.
Trotzdem vielen lieben Dank für Eure schnelle antworten.

Rentner:
Hallo,

so wird das nichts, Du liesst die Daten des BM280 ja direkt in einen String ein , da kannst Du keine Abfragen mit if( x >Y) mehr machen.

Lese den Wert in eine variable vom Typ float ein. Dann kannst Du damit auch rechnen , halt das was man mit Zahlen so machen kann.
so nicht lauffähig

float temperatur= bme.getTemperature_C();  // auslesen als float

if  (temperatur > maxwert){

}

// für die Anzeige

String Temp= temperatur+"C";





Geh da mal step by step for um es zu verstehen. 

Heinz

Danke Heinz