INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Funktion mit Parameterübergabe - u8g
20.06.2016, 21:23 (Dieser Beitrag wurde zuletzt bearbeitet: 20.06.2016 21:24 von torsten_156.)
Beitrag #1
Funktion mit Parameterübergabe - u8g
Hallo Leute,

ich nutze ein OLED-Display mit der U8glib.h. Ich möchte einen Text ausgeben, der aber variabel sein kann. Dazu müsste ich der Funktion einen Parameter mitgeben. Leider bekomme ich das mit Arduino nicht hin. Hier mein Code:

Code:
void loop(void) {
  u8g.firstPage();  
  do {
    schreiben();
  } while( u8g.nextPage() );

}

void schreiben() {
  u8g_prepare();
  u8g.drawStr(0, 30, "Hallo");  // put string of display at position X, Y
  u8g.setPrintPos(44, 30);  // set position
}

Die Funktion schreiben() soll jetzt einen String mitgeben, der in der zweiten Zeile der Funktion ausgegeben werden soll (dort wo das "Hallo" steht).

Wie stelle ich das an???

Danke
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.06.2016, 22:59
Beitrag #2
RE: Funktion mit Parameterübergabe - u8g
(20.06.2016 21:23)torsten_156 schrieb:  Die Funktion schreiben() soll jetzt einen String mitgeben, der in der zweiten Zeile der Funktion ausgegeben werden soll (dort wo das "Hallo" steht).
Wie stelle ich das an???
Ist doch nicht so kompliziert.

Z.B. so
Code:
//Deklaration
char Value[12];

//Dein Text
void schreiben() {
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr( 0, 30, "Hallo");
  u8g.drawStr( 0, 50, Value);
}

Bei mir funktioniert das so, wie oben beschrieben.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.06.2016, 11:11 (Dieser Beitrag wurde zuletzt bearbeitet: 21.06.2016 11:11 von torsten_156.)
Beitrag #3
RE: Funktion mit Parameterübergabe - u8g
Hallo hotsystems,

sollte doch dann so aussehen, oder?

Code:
//Dklaration der Funktion
void schreiben(char Value[12]) {
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr( 0, 30, "Hallo");
  u8g.drawStr( 0, 50, Value[]);
}

//Aufruf der Funktion:
schreiben("Welt");

Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.06.2016, 12:47
Beitrag #4
RE: Funktion mit Parameterübergabe - u8g
(21.06.2016 11:11)torsten_156 schrieb:  sollte doch dann so aussehen, oder?
Code:
//Dklaration der Funktion
void schreiben(char Value[12]) {
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr( 0, 30, "Hallo");
  u8g.drawStr( 0, 50, Value[]);
}

//Aufruf der Funktion:
schreiben("Welt");

Fast. Wink

Die Zeile nur ohne "[]" und den Text in ein Char-Array wandeln.
Du solltest eigentlich eine Fehlermeldung erhalten haben.

Code:
String str = String("Welt");
str.toCharArray(Value, 5);
u8g.drawStr( 0, 50, Value);

Es gibt vermutlich auch einfachere Wege, allerdings so funktioniert es bei mir. Rolleyes

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2016, 18:11
Beitrag #5
RE: Funktion mit Parameterübergabe - u8g
Hallo hotsystems,

ich habe es jetzt wie folgt gemacht:

Code:
String str;

void loop(void) {
  u8g.firstPage();  
  do {
    schreiben("Welt");
  } while( u8g.nextPage() );

}

void schreiben(char Value[12]) {
  u8g_prepare();
  u8g.drawStr(0, 30, "Hallo");  // put string of display at position X, Y
  u8g.setPrintPos(44, 30);  // set position
  u8g.drawStr( 44, 50, Value);
}

So geht´s. Muss halt nun aufpassen, dass der String nicht größer als 11 Zeichen ist Wink

Vielen Dank
Gruß Torsten
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2016, 18:39 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2016 18:41 von hotsystems.)
Beitrag #6
RE: Funktion mit Parameterübergabe - u8g
(22.06.2016 18:11)torsten_156 schrieb:  So geht´s. Muss halt nun aufpassen, dass der String nicht größer als 11 Zeichen ist Wink

Dann kannst du die Zahl 12 (value[12]) größer machen, das war ja nur ein Beispiel.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2016, 18:42
Beitrag #7
RE: Funktion mit Parameterübergabe - u8g
(22.06.2016 18:11)torsten_156 schrieb:  Hallo hotsystems,

ich habe es jetzt wie folgt gemacht:

Code:
String str;

void loop(void) {
  u8g.firstPage();  
  do {
    schreiben("Welt");
  } while( u8g.nextPage() );

}

void schreiben(char Value[12]) {
  u8g_prepare();
  u8g.drawStr(0, 30, "Hallo");  // put string of display at position X, Y
  u8g.setPrintPos(44, 30);  // set position
  u8g.drawStr( 44, 50, Value);
}

So geht´s. Muss halt nun aufpassen, dass der String nicht größer als 11 Zeichen ist Wink

Vielen Dank
Gruß Torsten
Torsten

warum nicht so:
"void schreiben(char* Value) {"
ausserdem dürfte das speicherschonender sein.
im ersten Fall dürften immer 12 Bytes auf des Stack geschoben werden,
im zweiten Fall wird nur der sizeof von char* auf dem Stack geschoben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2016, 18:45
Beitrag #8
RE: Funktion mit Parameterübergabe - u8g
Ok, klar geht das auch.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Funktion in Loop einmalig ausführen Haustechno 4 646 09.03.2016 22:43
Letzter Beitrag: Haustechno
  HC-05 Modul auf Funktion prüfen. arduinofan 2 365 03.02.2016 19:18
Letzter Beitrag: arduinofan
  Eine Funktion vorher definieren ? arduinofan 23 2.019 30.12.2015 08:42
Letzter Beitrag: amithlon
  Funktion/Methode mit mehr als einem Ausgangswert Marduino_UNO 18 1.258 20.10.2015 10:30
Letzter Beitrag: Marduino_UNO
  PulseIn-Funktion unklar alpenpower 6 1.284 24.07.2015 10:05
Letzter Beitrag: Scherheinz
  auslagern von Funktion aus der void loop? MaHaI976 19 2.885 22.06.2015 20:38
Letzter Beitrag: MaHaI976
  Funktion aus Wertepunkten erstellen- wie ? HaWe 6 1.513 05.06.2015 07:53
Letzter Beitrag: HaWe
  C-Code für eine substring-Funktion: richtig ? HaWe 1 670 27.05.2015 14:01
Letzter Beitrag: HaWe
  gesucht: C-Funktion zum Einfügen eines Teilstrings in einen größeren HaWe 1 863 25.05.2015 10:30
Letzter Beitrag: HaWe
  Hilfe - Problem beim erstellen einer Eigenen Funktion raspido 0 913 24.05.2015 10:31
Letzter Beitrag: raspido

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste