Servo und Temperatursensors am Multifunktionalem Shield als analoges Zeigerthermometer

Hallo,
ich arbeite gerade mit einen Servo ein emp Sensor und dem Multi Funktions Shield .

Ich versuche : das der servo sich höher dreht jee wärmer es wird und jee kälter soll er sich auch stuffenlos zurück drehen.
Im Display sollte Temparatur angezeigt werden .
Zur zeit zeigt es mir den dat wert ( temparatur an ) und der servo fährt auf null .
Aber ich bekomme es nicht hin das er mit der Temparatur arbeitet.
Was mache ich falsch ?
LG

#include <TimerOne.h>
#include <Wire.h>
#include <Servo.h>  //Bibliothek ansteuern von mainServo
#define PinTemp A4  // sensor 
#define latch 4
#define clk 7
#define data 8  // data 8 Setzen 
const byte SEGMENT_MAP[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0X80, 0X90};
const byte SEGMENT_SELECT[] = {0xF1, 0xF2, 0xF4, 0xF8};


//decode_results results;
Servo mainServo; //mainServo Objekt erstellen (noch nicht initialisiert)


int position = 0;
int previousPosition;
int mainServoPosition = 0;  // Start mainServo am start auf null fahren
int mainServoSchritte = 10; //  schritte angeben für den mainServo
int mainServoGrad = 190; //   grad angabe  wie weit soll sich der mainServo drehen


void setup() {

  Serial.begin(115200);  // serial Monitor start
  Timer1.initialize();
  pinMode(PinTemp, INPUT);    // input setzen
  mainServo.attach(5); //digitalen PIN 5 für mainServo
  mainServo.write(0);  // servo auf null seten
  mainServo.write(mainServoPosition);

  pinMode(latch, OUTPUT);    // Output pins  vom mainServo
  pinMode(clk, OUTPUT);
  pinMode(data, OUTPUT);

}

void loop() {

  //MFS.beep(1, 5, 2); // bereit
  int val = analogRead(PinTemp); // Den analogen Wert des Temperatursensors lesen.
  int dat = (1019 * val) >> 8 ;               // Aus dem gelesenen Wert die Temperatur berechnen.
  /*  while (1) {
      int wert = analogRead(PinTemp);
      float mV = wert * 4935. / 1024.; // MFS liefert gemessene 4,935 V an +5V
      float temp = mV / 10.; // OUTPUT = 0 mV + 10.0 mV/°C
  */
  int position = map(dat, 28, 40, 0, 180);
  Serial.println(position);
  if (previousPosition != position) {
    mainServo.write(position);
    mainServo.write(mainServoPosition);
    //mainServo.write(10);  // servo test
    WriteNumberToSegment(0 , dat / 1000);
    WriteNumberToSegment(1 , (dat / 100) % 10);
    WriteNumberToSegment(2 , (dat / 10) % 10);
    WriteNumberToSegment(3 , dat % 10);
    //  delay(2000);
  }
}
void WriteNumberToSegment(byte segment, byte value) {
  digitalWrite(latch, LOW);
  shiftOut(data, clk, MSBFIRST, SEGMENT_MAP[value]);
  shiftOut(data, clk, MSBFIRST, SEGMENT_SELECT[segment] );
  digitalWrite(latch, HIGH);
}

mein erster versuch sah so aus :
dort will der servo aber das Display zeigt mir keine werte an . Und wollte extra die Lib vom Shield nutzen komisch . deswegen über den alten weg versucht .

#include <TimerOne.h>
#include <Wire.h>
#include <Servo.h>
#include <MultiFuncShield.h> // API für das Multi Function Shield
#define PinTemp A4  // sensor  

Servo mainServo;
int position = 0;
int previousPosition;

void setup() {
  Serial.begin(115200);  //serial  konrolle 
  Timer1.initialize();
  MFS.initialize(&Timer1);    // initialize multi-function shield library
  MFS.write("temp");
  pinMode(PinTemp, INPUT);    // input setzen 
  mainServo.attach(5);
  
}

void loop() {
    //MFS.beep(1, 5, 2); // bereit
  //while (1) {
    
    int wert=analogRead(PinTemp);
    
    float mV = wert * 4935. / 1024.; // MFS liefert gemessene 4,935 V an +5V
    float temp = mV / 25.; // OUTPUT = 0 mV + 10.0 mV/°C
    MFS.write(temp);
     
  int position = map(temp, 28, 40, 0, 180);
  Serial.println(position);
  if(previousPosition != position){
     mainServo.write(position);
     delay(2000);
   }
     }

versuch nummer 3 :frowning:

#include <TimerOne.h>        // für Timings und Interrupts
#include <MultiFuncShield.h> // API für das Multi Function Shield
#include <Adafruit_Sensor.h> // allgemeine Adafruit-Library
#include <DHT.h>             // Libraries für DHT-11
#include <DHT_U.h>
#include <Wire.h>
#include <Servo.h>


#define latch 4
#define clk 7
#define data 8

#define PinData 6           // wo ist Data angeschlossen?
#define DurPause 2000       // Pause in ms zwischen den Messungen
// der DHT11 liefert nur alle 1s neue Daten

#define DHTTYPE           DHT11

DHT_Unified dht(PinData, DHTTYPE);  // DHT Instanz erzeugen



Servo servo; //Servo Objekt erstellen (noch nicht initialisiert)
const byte SEGMENT_MAP[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0X80, 0X90};
const byte SEGMENT_SELECT[] = {0xF1, 0xF2, 0xF4, 0xF8};
int position = 0; //Variable zum speichern von der aktuellen Position
const int waitTime = 3000; //Zeit zum pausieren zwischen den einzelnen Schritten des Servos

void displayPosition(int position) {
  //Eine For Schleife, denn eine Pause mit delay
  //ist nicht möglich. Hier muss "nur" die Zeit durch
  //den max Wert der For Schleife angepasst werden.
 for (int i = 0; i < 750; i++) {
    WriteNumberToSegment(0 , position / 1000);
    WriteNumberToSegment(1 , (position / 100) % 10);
    WriteNumberToSegment(2 , (position / 10) % 10);
    WriteNumberToSegment(3 , position % 10);
  }

}
void WriteNumberToSegment(byte segment, byte value) {
  digitalWrite(latch, LOW);
  shiftOut(data, clk, MSBFIRST, SEGMENT_MAP[value]);
  shiftOut(data, clk, MSBFIRST, SEGMENT_SELECT[segment] );
  digitalWrite(latch, HIGH);
}

void temp() {
   int btn = 0;
    int mode = 1; // fängt an nur temparatur zu zeigen
    char msg[10];
    sensor_t sensor;
    sensors_event_t event;

    MFS.beep(0); // bereit 

}
void setup() {
  Serial.begin(115200);
  Timer1.initialize();
  MFS.initialize(&Timer1);    // initialize multi-function shield library
  pinMode(latch, OUTPUT);
  pinMode(clk, OUTPUT);
  pinMode(data, OUTPUT);
  servo.attach(9); //setzen des Servo Objektes auf den digitalen PIN 9
  servo.write(0);
  dht.begin();                // DHT11 initialisieren
}

void loop() {

 // temp();
  int btn = 0;
  int mode = 1; // fängt an nur temparatur zu zeigen
  char msg[10];
 sensor_t sensor;
  sensors_event_t event;
  dht.temperature().getSensor(&sensor);
  Serial.print ("Sensor: "); Serial.println(sensor.name);




  //For Schleife zum drehen des Servos um 180°
  for (position = 0; position < 180; position++) {
    servo.write(position); //Schreiben des aktuellen Wertes der Variable 'position' (1...180)
    displayPosition(position);
    Serial.print (msg);
  }
  //For Schleife zum drehen des Servos um 180°
  for (position = 180; position >= 1; position--) {
    servo.write(position); //Schreiben des aktuellen Wertes der Variable 'position' (180...1)
    displayPosition(msg);
  }


    dht.temperature().getSensor(&sensor);
    Serial.print ("Sensor: "); Serial.println(sensor.name);
    MFS.write(msg);
    while (1) {
      btn = MFS.getButton();
      if (btn == BUTTON_1_PRESSED) {
        mode = 1; // nur Temperatur

        MFS.beep(5);
      } else if (btn == BUTTON_2_PRESSED) {
        mode = 2; // nur Luftfeuchtigkeit
        MFS.beep(5);
      } else if (btn == BUTTON_3_PRESSED) {
        mode = 3; // beides abwechselnd anzeigen
        MFS.beep(5);
      }


      // Temperatur /////////////////////////////////
      if (mode == 1 || mode == 3) {
        dht.temperature().getEvent(&event);

        sprintf(msg, "%d C ", (int) event.temperature - 1); //  Ausgabe vorbereitenvorbereitung
        Serial.print (msg);
        MFS.write(msg);
        delay(DurPause);
      }

      // Luftfeuchtigkeit /////////////////////////////////
      if (mode == 2 || mode == 3) {
        dht.humidity().getEvent(&event);

        sprintf(msg, "H. %d", (int) event.relative_humidity - 7);
        MFS.write(msg);
        delay(DurPause);
      }

    }



}

mal ganz anders versucht und trotzdem bekomme ich MSG wert nicht im display angezeigt . Gibts doch nicht displayPosition(position); geht displayPosition(msg); geht nicht

Also ein analoges Zeigerthermometer. Nette Idee!

Erstens: displayPosition(msg); kann gar nicht gehen, weil msg ein Character-Array ist, displayPosition aber ein int erwartet. Das sollte eigentlich eine Fehlermeldung vom Compiler geben.

Zweitens: Warum um Himmels willen beschreibst Du die Segmente 750mal?

 for (int i = 0; i < 750; i++) {

Drittens: msg wird im ganzen Sketch nie beschrieben (oder ich habe es übersehen).

Viertens: Es reicht, dem Servo einmal mitzuteilen, dass es die Position 180° bzw. 1 anfahren soll. Ob es die schnelle Abfolge der einzelnen Werte verkraftet, weiß ich nicht. Wenn es um "langsam" geht: Die MobaTools haben da mit MoToServo eine schöne Klasse, die Servos bei Bedarf auch langsam fahren lässt.

Da ist bestimmt noch mehr, aber ich wollte mir die Bibliotheken nicht alle installieren.

Wie kommst Du auf die Idee?

1 Like

genau darum gehts eigentlich . ich hab schon soviel jetzt versucht das ich selbst gerade nicht mehr weiß wo hinten und vorn ist . normal müsste ich noch mal komplett neu anfangen. bin da aber echt gerade etwas ratlos . beim 2 versuch hat es ja teilweise funktion gehabt . Nur dort ging das display nicht . puh wieder so eine Idee von mir .
dein tipp ist gut da schau ich mir mal an wie andere das machen . analoges Zeigerthermometer . klar genau danach muss ich mal schauen und mir ansehen wie das gemacht wird

Der Standardrat in solchen Fällen:
Probleme schrittweise mit EInzelsketches lösen.

  • Sensor lesen und auf dem seriellen Monitor die Temperatur ausgeben
  • beliebige (vorgegebene) Zahlen auf die Segmentanzeige zaubern
  • Den Servozeiger auf feste vorgegebene Werte stellen.

Dann erst zusammenbauen.

na ja weil ich im ersten versuch versucht habe das anderes zu übergeben und ich auf ein beitrag gestossen war, wo so die daten an dieses display übergeben werden

Ah ja - ok, @wno158 übernimmt ja schon :wink:
Na denne...

Nee nee. Ich versuche Hilfestellung ("Schubser") zum Selbt-Helfen zu geben. Deine Vorgehensweise ist beispielgetrieben und damit eine andere (kein Problem, nur Feststellung) - wenn Du was in petto hast: Nur zu!

ich denke dein tipp @wno158 war schon super jetzt kann ich mir das anschauen . hab auch schon was gefunden und muss mich da jetzt mal dazu belesen .

edit : ich schau mir gerade https://polluxlabs.net/arduino-projekte/arduino-analog-thermometer/
an .
was ich daran nicht verstehe ist der zusammenhang

 degreesC = (voltage - 0.5) * 100.0;

und

  return (analogRead(pin) * 0.004882814);

es steht nicht beschrieben wie er auf die zahlen kommt . bei mir zeigt es da 52°c an mit dht11.
wie komme ich auf die richtigen zahlenwerte ?
das mit display stelle ich jetzt mal bei seite :wink:

float voltage, degreesC; ok das char fällt somit aus und kann man mal für eine textausgabe nutzen aber nicht zum übergeben von werten ! gemerkt .

voltage = getVoltage(temperaturePin); bin ich mir jetzt nicht sicher warum ich die volt brauche. das ```
degreesC

Ohne es gesehen zu haben.
Der AnalogIN liest 5V in 10bit ein.
10 bit => 1024 steps
5V/1024 = 0,004882813
Jeder step am analogPin mach also 0,004882813V
Hast Du also einen AnalogRead-Wert von 512, hast Du 512*0,004882813 V anliegen.

Der Rest dürfte irgendwie die Umrechnung der Spannung in °C sein.

Also ich habe den code von der seite mal Übernommen . und die paar klammer fehler geändert .
aber mit den zahlen komme ich nicht weiter .
degreesC = (voltage - 0.80) * 100.0; // trage ich das ein liest mein sensor 23.8 ° das würde stimmen nur erwärme ich ihn jetzt tut sich nicht viel 23.9 oder 22.8 . springt auch nur hin her .
@my_xy_projekt danke für die erklärung somit muss also dieser wert ja bleiben .
könnte das sein = sein sensor ist ja analog und der dht ist ja digital .
da müsste man doch das anders machen .

wat isn da fürn sensor dran?
Ich hab grad noch ein MuFuShield in der Variowand gefunden

ich habe ein DHT11 und er nutzt ein TMP36 .
edit : gerade noch eine seite gefunden . da wird das noch etwas schöner erklärt und es gibt eine INO . die man sich anpassen kann . im grunde das gleiche da sie auch so ein sensor nutzen
Edit . ist der gleiche code .

#include <Servo.h>
#include <TimerOne.h>        // für Timings und Interrupts
#include <MultiFuncShield.h> // API für das Multi Function Shield
#include <Adafruit_Sensor.h> // allgemeine Adafruit-Library
#include <DHT.h>             // Libraries für DHT-11
#include <DHT_U.h>
#include <Wire.h>


Servo myServo;

const int temperaturePin = 6;

int angle;

void setup() {
  myServo.attach(5);
  Serial.begin(115200);
  
  myServo.write(0);
  delay(2000);
}
void loop() {
 
  float voltage, degreesC;

  voltage = getVoltage(temperaturePin);
  
 degreesC = (voltage - 0.80) * 100.0;

Serial.print("  voltage: ");
  Serial.print(voltage);
  Serial.print("  deg C: ");
  Serial.println(degreesC);
 
  angle = map(degreesC, 10, 30, 0, 180);

  if(degreesC < 10){
    delay(50);
    }else if(degreesC > 30){
      delay(50);
      }else{
         myServo.write(angle);
        }
        
 delay(1000);
}
float getVoltage(int pin)
{
  return (analogRead(pin) * 0.004882814);
}

im grunde ist das nur für mich zum lernen . ich möchte auf dem shield mir das digital anzeigen lassen und eben analog durch den servo . ist spielzeug aber nur so kann man die zusammenhänge besser verstehen .

vieleicht liegt da noch ein sensor rum :slight_smile: hab mir extra paar sets zugelegt um zu testen und zum lernen. ein gutes buch suche ich noch . Sollte aber nicht nur projekte zeigen sondern eher erklärungen . . Nachti bis morgen

Ah So wird das doch langsam was . Der Serial Monitor hat mir sehr geholfen :slight_smile:
Also der servo dreht und Temparatur stimmt so bis aus paar grad würde ich sagen .
Nun muss ich es nur noch hinbekommen das es im Display Angezeigt wird .
Ja bissel belesen hilft ja doch " Lach "

#include <Servo.h>
#include <TimerOne.h>        // für Timings und Interrupts
#include <MultiFuncShield.h> // API für das Multi Function Shield
#include <Adafruit_Sensor.h> // allgemeine Adafruit-Library
#include <DHT.h>             // Libraries für DHT-11
#include <DHT_U.h>
#include <Wire.h>

#define DHTPIN 6              //Der Sensor wird an digital 6 angeschlossen    
#define DurPause 2000         // Pause in ms zwischen den Messungen DHT11 liefert nur alle 1s neue Daten
#define DHTTYPE DHT11         // Es handelt sich um den DHT11 Sensor
DHT dht(DHTPIN, DHTTYPE);     //Der Sensor wird ab jetzt mit „dth“ angesprochen

///////////////////////////////für Anzeige einbauen ////////////////////////////
#define latch 4
#define clk 7
#define data 8
/* Mapping der Adressen für die Zahlen 0 bis 9 */
const byte SEGMENT_MAP[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0X80, 0X90};
/* Mapping für die Segmente 0 bis 3 */
const byte SEGMENT_SELECT[] = {0xF1, 0xF2, 0xF4, 0xF8};
/* letzter Zeitpunkt der Ausführung.*/
unsigned long previousMillis = 0;
/* Interval der Ausführung.*/
const long interval = 550;
////////////////////////////////////////////////////////////////////////////////
Servo myServo;
int angle;

void WriteNumberToSegment(byte segment, byte value){
  digitalWrite(latch,LOW);
  shiftOut(data, clk, MSBFIRST, SEGMENT_MAP[value]);
  shiftOut(data, clk, MSBFIRST, SEGMENT_SELECT[segment]);
  digitalWrite(latch,HIGH);
}

void setup()
{
  Timer1.initialize();
  MFS.initialize(&Timer1);    // initialize multi-function shield library
  Serial.begin (115200);
  //// anzeige Starten /////
  pinMode(latch, OUTPUT);
  pinMode(clk, OUTPUT);
  pinMode(data, OUTPUT);
  //////////////////////////
  dht.begin(); //DHT11 Sensor starten

  myServo.attach(5);
  myServo.write(0);
  //   MFS.beep(1, 5, 2); // bereit
  delay(2000);
}

void loop()
{

  delay(2000); //Vorlaufzeit
  float Luftfeuchtigkeit = dht.readHumidity(); //die Luftfeuchtigkeit auslesen und unter „Luftfeutchtigkeit“ speichern
  float Temperatur = dht.readTemperature();//die Temperatur auslesen und unter „Temperatur“ speichern

  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(Luftfeuchtigkeit);
  Serial.println(" %");

  Serial.print("Temperatur: ");
  Serial.print(Temperatur);
  Serial.println(" Grad Celsius");



  angle = map(Temperatur, 10, 30, 0, 180);
  if (Temperatur < 10) {
    delay(50);
  } else if (Temperatur > 30) {
    delay(50);
  } else {
    myServo.write(angle);
          //////////////////Ausgabe der Anzeige ////////////
    int zahl = 1234;
    WriteNumberToSegment(0 , zahl / 1000); 
    WriteNumberToSegment(1 , (zahl / 100) % 10);
    WriteNumberToSegment(2 , (zahl / 10) % 10);
    WriteNumberToSegment(3 , zahl % 10);
  //////////////////////////////////////////////////
  }

 delay(1000);
}

OK hab jetzt 2 Probleme Die Anzeige läuft nun und auch der servo . ( nach langen Kampf )

Problem 1: der temperatur( wert ); wird nur ganz kurz angezeigt ede sek. und dauerhaft die 4

Problem 2: wie kann ich das float Temperatur übergeben nach anzeige ausgabe ?
Edit : Problem 2 habe ich jetzt so geklärt . Ob das so die feine Art ist wird mir sicher @my_xy_projekt noch sagen oder wie es besser geht den bei 24.90 Grad Celsius bekomme ich jetzt nur eine 25 :frowning:

void loop()
{

  delay(2000); //Vorlaufzeit
  float Luftfeuchtigkeit = dht.readHumidity(); //die Luftfeuchtigkeit auslesen und unter „Luftfeutchtigkeit“ speichern
  float Temperatur = dht.readTemperature();//die Temperatur auslesen und unter „Temperatur“ speichern

  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(Luftfeuchtigkeit);
  Serial.println(" %");

  Serial.print("Temperatur: ");
  Serial.print(Temperatur);
  Serial.println(" Grad Celsius");



  angle = map(Temperatur, 10, 30, 0, 180);
  if (Temperatur < 10) {
    delay(50);
  } else if (Temperatur > 30) {
    delay(50);
  } else {
    myServo.write(angle);
          //////////////////Ausgabe der Anzeige ////////////
   // int zahl = 1234;
    long wert = ((int)round(Temperatur)) & 0x7FF;
    WriteNumberToSegment(0 , wert / 1000); 
    WriteNumberToSegment(1 , (wert / 100) % 10);
    WriteNumberToSegment(2 , (wert / 10) % 10);
    WriteNumberToSegment(3 , wert % 10);
    Serial.println(wert);
  //////////////////////////////////////////////////
  }

LG

Ungetestet, ich hab die lib nicht bei

#include <Servo.h>
#include <TimerOne.h>        // für Timings und Interrupts
#include <MultiFuncShield.h> // API für das Multi Function Shield
#include <Adafruit_Sensor.h> // allgemeine Adafruit-Library
#include <DHT.h>             // Libraries für DHT-11
#include <DHT_U.h>
#include <Wire.h>

#define DHTPIN 6              //Der Sensor wird an digital 6 angeschlossen    
#define DurPause 2000         // Pause in ms zwischen den Messungen DHT11 liefert nur alle 1s neue Daten
#define DHTTYPE DHT11         // Es handelt sich um den DHT11 Sensor
DHT dht(DHTPIN, DHTTYPE);     //Der Sensor wird ab jetzt mit „dth“ angesprochen

///////////////////////////////für Anzeige einbauen ////////////////////////////
#define latch 4
#define clk 7
#define data 8
/* Mapping der Adressen für die Zahlen 0 bis 9 */
const byte SEGMENT_MAP[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0X80, 0X90};
/* Mapping für die Segmente 0 bis 3 */
const byte SEGMENT_SELECT[] = {0xF1, 0xF2, 0xF4, 0xF8};
/* letzter Zeitpunkt der Ausführung.*/
unsigned long previousMillis = 0;
/* Interval der Ausführung.*/
const long interval = 550;
////////////////////////////////////////////////////////////////////////////////
Servo myServo;
int angle;

void WriteNumberToSegment(byte segment, byte value)
{
  digitalWrite(latch, LOW);
  shiftOut(data, clk, MSBFIRST, SEGMENT_MAP[value]);
  shiftOut(data, clk, MSBFIRST, SEGMENT_SELECT[segment]);
  digitalWrite(latch, HIGH);
}

void setup()
{
  Timer1.initialize();
  MFS.initialize(&Timer1);    // initialize multi-function shield library
  Serial.begin (115200);
  //// anzeige Starten /////
  pinMode(latch, OUTPUT);
  pinMode(clk, OUTPUT);
  pinMode(data, OUTPUT);
  //////////////////////////
  dht.begin(); //DHT11 Sensor starten
  myServo.attach(5);
  myServo.write(0);
  //   MFS.beep(1, 5, 2); // bereit
  delay(2000);
}

void loop()
{
  if (millis() - lastmillis > 1000)
  {
    float Luftfeuchtigkeit = dht.readHumidity(); //die Luftfeuchtigkeit auslesen und unter „Luftfeutchtigkeit“ speichern
    float Temperatur = dht.readTemperature();//die Temperatur auslesen und unter „Temperatur“ speichern
    Serial.print("Luftfeuchtigkeit: ");
    Serial.print(Luftfeuchtigkeit);
    Serial.println(" %");
    Serial.print("Temperatur: ");
    Serial.print(Temperatur);
    Serial.println(" Grad Celsius");
    lastmillis += 1000;
  }
  MFS.write(Temperatur, 2);
  if (Temperatur < 10)
  {
    //
  }
  else if (Temperatur > 30)
  {
    //
  }
  else
  {
    angle = map(Temperatur, 10, 30, 0, 180);
    myServo.write(angle);
    //////////////////////////////////////////////////
  }
}

Danke für deine Hilfe . bekomme ich eine fehlermeldung .

Arduino: 1.8.19 (Windows 10), Board: "Arduino Uno"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\hober\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=2341_0043 -ide-version=10819 -build-path C:\Users\hober\AppData\Local\Temp\arduino_build_578751 -warnings=all -build-cache C:\Users\hober\AppData\Local\Temp\arduino_cache_873135 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\hober\Documents\Arduino\sketch_feb17b\sketch_feb17b.ino

C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\hober\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=2341_0043 -ide-version=10819 -build-path C:\Users\hober\AppData\Local\Temp\arduino_build_578751 -warnings=all -build-cache C:\Users\hober\AppData\Local\Temp\arduino_cache_873135 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\hober\Documents\Arduino\sketch_feb17b\sketch_feb17b.ino

Using board 'uno' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr

Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr

Detecting libraries used...

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\sketch\\sketch_feb17b.ino.cpp" -o nul

Alternatives for Servo.h: [Servo@1.1.8]

ResolveLibrary(Servo.h)

  -> candidates: [Servo@1.1.8]

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\sketch\\sketch_feb17b.ino.cpp" -o nul

Alternatives for TimerOne.h: [TimerOne@1.1]

ResolveLibrary(TimerOne.h)

  -> candidates: [TimerOne@1.1]

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\TimerOne" "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\sketch\\sketch_feb17b.ino.cpp" -o nul

Alternatives for MultiFuncShield.h: [MultiFuncShield-Library]

ResolveLibrary(MultiFuncShield.h)

  -> candidates: [MultiFuncShield-Library]

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\TimerOne" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\MultiFuncShield-Library" "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\sketch\\sketch_feb17b.ino.cpp" -o nul

Alternatives for Adafruit_Sensor.h: [Adafruit_Unified_Sensor@1.1.4]

ResolveLibrary(Adafruit_Sensor.h)

  -> candidates: [Adafruit_Unified_Sensor@1.1.4]

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\TimerOne" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\MultiFuncShield-Library" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\Adafruit_Unified_Sensor" "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\sketch\\sketch_feb17b.ino.cpp" -o nul

Alternatives for DHT.h: [DHT_sensor_library@1.4.3]

ResolveLibrary(DHT.h)

  -> candidates: [DHT_sensor_library@1.4.3]

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\TimerOne" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\MultiFuncShield-Library" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\Adafruit_Unified_Sensor" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\DHT_sensor_library" "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\sketch\\sketch_feb17b.ino.cpp" -o nul

Alternatives for Wire.h: [Wire@1.0]

ResolveLibrary(Wire.h)

  -> candidates: [Wire@1.0]

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\TimerOne" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\MultiFuncShield-Library" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\Adafruit_Unified_Sensor" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\DHT_sensor_library" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\sketch\\sketch_feb17b.ino.cpp" -o nul

Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\avr\Servo.cpp

Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\mbed\Servo.cpp

Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\megaavr\Servo.cpp

Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\nrf52\Servo.cpp

Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\sam\Servo.cpp

Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\samd\Servo.cpp

Using cached library dependencies for file: C:\Program Files (x86)\Arduino\libraries\Servo\src\stm32f4\Servo.cpp

Using cached library dependencies for file: C:\Users\hober\Documents\Arduino\libraries\TimerOne\TimerOne.cpp

Using cached library dependencies for file: C:\Users\hober\Documents\Arduino\libraries\MultiFuncShield-Library\I2C.cpp

Using cached library dependencies for file: C:\Users\hober\Documents\Arduino\libraries\MultiFuncShield-Library\MPU6050.cpp

Using cached library dependencies for file: C:\Users\hober\Documents\Arduino\libraries\MultiFuncShield-Library\MultiFuncShield.cpp

Using cached library dependencies for file: C:\Users\hober\Documents\Arduino\libraries\Adafruit_Unified_Sensor\Adafruit_Sensor.cpp

Using cached library dependencies for file: C:\Users\hober\Documents\Arduino\libraries\DHT_sensor_library\DHT.cpp

Using cached library dependencies for file: C:\Users\hober\Documents\Arduino\libraries\DHT_sensor_library\DHT_U.cpp

Using cached library dependencies for file: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\Wire.cpp

Using cached library dependencies for file: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c

Generating function prototypes...

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\TimerOne" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\MultiFuncShield-Library" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\Adafruit_Unified_Sensor" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\DHT_sensor_library" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\sketch\\sketch_feb17b.ino.cpp" -o "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\preproc\\ctags_target_for_gcc_minus_e.cpp"

"C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\preproc\\ctags_target_for_gcc_minus_e.cpp"

Sketch wird kompiliert...

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\TimerOne" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\MultiFuncShield-Library" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\Adafruit_Unified_Sensor" "-IC:\\Users\\hober\\Documents\\Arduino\\libraries\\DHT_sensor_library" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\sketch\\sketch_feb17b.ino.cpp" -o "C:\\Users\\hober\\AppData\\Local\\Temp\\arduino_build_578751\\sketch\\sketch_feb17b.ino.cpp.o"

C:\Users\hober\Documents\Arduino\sketch_feb17b\sketch_feb17b.ino: In function 'void loop()':

sketch_feb17b:57:16: error: 'lastmillis' was not declared in this scope

 if (millis() - lastmillis > 1000)

                ^~~~~~~~~~

C:\Users\hober\Documents\Arduino\sketch_feb17b\sketch_feb17b.ino:57:16: note: suggested alternative: 'millis'

 if (millis() - lastmillis > 1000)

                ^~~~~~~~~~

                millis

sketch_feb17b:69:13: error: 'Temperatur' was not declared in this scope

   MFS.write(Temperatur, 2);

             ^~~~~~~~~~

C:\Users\hober\Documents\Arduino\sketch_feb17b\sketch_feb17b.ino:69:13: note: suggested alternative: 'operator+'

   MFS.write(Temperatur, 2);

             ^~~~~~~~~~

             operator+

Bibliothek Servo in Version 1.1.8 im Ordner: C:\Program Files (x86)\Arduino\libraries\Servo  wird verwendet

Bibliothek TimerOne in Version 1.1 im Ordner: C:\Users\hober\Documents\Arduino\libraries\TimerOne  wird verwendet

Bibliothek MultiFuncShield-Library im Ordner: C:\Users\hober\Documents\Arduino\libraries\MultiFuncShield-Library (legacy) wird verwendet

Bibliothek Adafruit_Unified_Sensor in Version 1.1.4 im Ordner: C:\Users\hober\Documents\Arduino\libraries\Adafruit_Unified_Sensor  wird verwendet

Bibliothek DHT_sensor_library in Version 1.4.3 im Ordner: C:\Users\hober\Documents\Arduino\libraries\DHT_sensor_library  wird verwendet

Bibliothek Wire in Version 1.0 im Ordner: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire  wird verwendet

exit status 1

'lastmillis' was not declared in this scope


Lesen musste die schon....
Du hast ne unbenutzte Variable previousMillis - mach daraus lastmillis - oder aus lastmillis.. Na Du weisst schon.

Für Temperatur und Luftfeuchtigkeit lege zwei globale Variablen mit float an und nimm das float aus dem loop raus.

ok im Grunde meinst du das jetzt erst mal so " wenn ich das Richtig verstanden habe " hab 2 globale Variablen angelegt und rufe aber erst mal nur eine auf. Mir gehts ja eh mehr um die Temp. die andere könnte ich eigentlich löschen.
das geht soweit und im Serial ist auch alles ok Temperatur: 20.70 Grad Celsius
die sekmentanzeige ist noch aus . soweit erst mal richtig gemacht ?

#include <Servo.h>
#include <TimerOne.h>        // für Timings und Interrupts
#include <MultiFuncShield.h> // API für das Multi Function Shield
#include <Adafruit_Sensor.h> // allgemeine Adafruit-Library
#include <DHT.h>             // Libraries für DHT-11
#include <DHT_U.h>
#include <Wire.h>

#define DHTPIN 6              //Der Sensor wird an digital 6 angeschlossen    
#define DurPause 2000         // Pause in ms zwischen den Messungen DHT11 liefert nur alle 1s neue Daten
#define DHTTYPE DHT11         // Es handelt sich um den DHT11 Sensor
DHT dht(DHTPIN, DHTTYPE);     //Der Sensor wird ab jetzt mit „dth“ angesprochen

///////////////////////////////für Anzeige einbauen ////////////////////////////
#define latch 4
#define clk 7
#define data 8
/* Mapping der Adressen für die Zahlen 0 bis 9 */
const byte SEGMENT_MAP[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0X80, 0X90};
/* Mapping für die Segmente 0 bis 3 */
const byte SEGMENT_SELECT[] = {0xF1, 0xF2, 0xF4, 0xF8};
/* letzter Zeitpunkt der Ausführung.*/
unsigned long lastMillis = 0;
/* Interval der Ausführung.*/
const long interval = 550;
////////////////////////////////////////////////////////////////////////////////
Servo myServo;
int angle;

void WriteNumberToSegment(byte segment, byte value) {
  digitalWrite(latch, LOW);
  shiftOut(data, clk, MSBFIRST, SEGMENT_MAP[value]);
  shiftOut(data, clk, MSBFIRST, SEGMENT_SELECT[segment]);
  digitalWrite(latch, HIGH);
}

void setup()
{
  Timer1.initialize();
  MFS.initialize(&Timer1);    // initialize multi-function shield library
  Serial.begin (115200);
  //// anzeige Starten /////
  pinMode(latch, OUTPUT);
  pinMode(clk, OUTPUT);
  pinMode(data, OUTPUT);
  //////////////////////////
  dht.begin(); //DHT11 Sensor starten

  myServo.attach(5);
  myServo.write(0);
  //   MFS.beep(1, 5, 2); // bereit
  delay(2000);
}
void myLuftfeuchtigkeit(void) {
  float Luftfeuchtigkeit = dht.readHumidity(); //die Luftfeuchtigkeit auslesen und unter „Luftfeutchtigkeit“ speichern
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(Luftfeuchtigkeit);
  Serial.println(" %");
}

void myTemperatur(void) {
  if (millis() - lastMillis > 1000)
  {
    float Temperatur = dht.readTemperature();//die Temperatur auslesen und unter „Temperatur“ speichern
    Serial.print("Temperatur: ");
    Serial.print(Temperatur);
    Serial.println(" Grad Celsius");
    angle = map(Temperatur, 10, 30, 0, 180);
    if (Temperatur < 10) {
      delay(50);
    } else if (Temperatur > 30) {
      delay(50);
    } else {
      myServo.write(angle);


    }
    MFS.write(Temperatur, 2);
  }
}
void loop()
{
  myTemperatur();

  /*

      //////////////////Ausgabe der Anzeige ////////////
      WriteNumberToSegment(0 , zahl / 1000);
      WriteNumberToSegment(1 , (zahl / 100) % 10);
      WriteNumberToSegment(2 , (zahl / 10) % 10);
      WriteNumberToSegment(3 , zahl % 10);
      //////////////////////////////////////////////////

  */
  delay(1000);
}