Forum: Mikrocontroller und Digitale Elektronik globale Variablen in Funktionen besetzen


von kolja (Gast)


Lesenswert?

Nabend

Mein kleines Programm soll zwei DS18b20 Temperatursensoren auslesen und 
die Werte zusammen mit den Sensoradressen in Variablen speichern.
Dafür habe ich global 4 Variablen definiert:

// globale Variablen
String Temp_1;
String Temp_1_ID;
String Temp_2;
String Temp_2_ID;

Diese sollen in der folgenden Funktion mit Werten gefüllt werden:

int readTemp()
{
  // Temperatursensoren auslesen
  sensors.requestTemperatures();
  float t1 = sensors.getTempC(Sensor_1);
  float t2 = sensors.getTempC(Sensor_2);

  // float in String umwandeln // geht das einfacher?
  char Temp_1[6];
  String str;
  str = String(t1);
  str.toCharArray(Temp_1, 6);

  char Temp_2[6];
  String strt;
  strt = String(t2);
  strt.toCharArray(Temp_2, 6);

  // Device Adress
  Temp_1_ID = sensors.getAddress(Sensor_1, 0);
  Temp_2_ID = sensors.getAddress(Sensor_2, 1);
}


Im loop möchte ich jetzt gerne die Funktion aufrufen und mit den Werten 
in den Variablen weiterarbeiten können.
Jetzt erstmal nur über den seriellen Monitor ausgeben:

  readTemp();

  Serial.print("1 ");
  Serial.println(Temp_1_ID);

  Serial.print("2 ");
  Serial.println(Temp_1);

  Serial.print("3 ");
  Serial.println(Temp_2_ID);

  Serial.print("4 ");
  Serial.println(Temp_2);

Die Ziffer 1-4 dienen nur der Orientierung.

Die Ausgabe sieht wie folgt aus:

1 1
2
3 1
4


Wenn ich die Variablen innerhalb der Funktion "printen" lasse, 
funktioniert es aber.

Ist mein Vorgehen falsch?

von Rainer B. (katastrophenheinz)


Lesenswert?

Du hast die globale Variable "Temp_1" und legst in "readTemp" eine 
lokale Variable "Temp_1" an. Welche der beiden "Temp_1" wird nun wohl in 
"readTemp" beschrieben? Analog: "Temp_2"

von kolja (Gast)


Lesenswert?

Oh, das ist mir jetzt fast peinlich.
Aber immerhin konnte ich den Fehler so schnell beheben.
Ich bin es wohl noch nicht gewohnt mit verschiedenen Datentypen 
umzugehen.
PHP lässt grüßen.

Danke Rainer für die schnelle Antwort.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.