Forum: Mikrocontroller und Digitale Elektronik globale Variablen in Funktionen besetzen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von kolja (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.