Wie ° Zeichen auf Display darstellen?

Hallo,

ich versuche das ° Symbol von °C auf meinem EA DOGM 163 darzustellen. Bekomme aber nur wilde Zeichen oder Leerzeichen.

lcd.print("°") und lcd.print(0xDF) funktionieren nicht, letzteres ist das Hardwarezeichen vom DOGM internen Zeichensatz. Okay dachte ich, ist ja ein Befehl, also guckste in Deine Library rein.
Das wäre die hier
#include <DogLcdSPI.h> // für Hardware SPI angepaßte DogLcd.h

Darin existiert die Funktion

void DogLcdSPI::writeCommand(int cmd,int executionTime)
{
  digitalWrite(lcdRS,LOW);  		 // Low an RS ist Command Modus
  digitalWrite(lcdCSB,LOW);          // eingefügt wegen Hardware SPI
  SPI.transfer(cmd);          		 // eingefügt wegen Hardware SPI
  delayMicroseconds(executionTime);
  digitalWrite(lcdCSB,HIGH);         // eingefügt wegen Hardware SPI
}

also dachte ich mir weiter, weil die in der DogLcdSPI.cpp private ist, übernimmste die in den Sketch

      digitalWrite(26,LOW);  	    // Low an RS ist Command Modus
      digitalWrite(27,LOW);         // eingefügt wegen Hardware SPI
      SPI.transfer(0xDF);           // soll ° Zeichen sein
      delayMicroseconds(30);      // Zwangspause
      digitalWrite(27,HIGH);        // eingefügt wegen Hardware SPI

das funktioniert jedoch auch nicht, bekomme ein Leerzeichen dargestellt.

Wäre jemand so nett und sagt mir wie man das ° Zeichen aufrufen bzw. darstellen kann?

Noch eine allgemeine Frage zur Library. Sämtliche Befehle für das Display fangen mit "lcd." an. Die Funktionsnamen in der Library beginnen jedoch mit "DogLcdSPI ..." bzw. in der originalen "DogLcd ...".
Ich habe keine Zuweisungsänderung gefunden. Oder hab ich die übersehen?

Noch eine allgemeine Frage zur Library. Sämtliche Befehle für das Display fangen mit "lcd." an. Die Funktionsnamen in der Library beginnen jedoch mit "DogLcdSPI ..." bzw. in der originalen "DogLcd ...".
Ich habe keine Zuweisungsänderung gefunden. Oder hab ich die übersehen?

Du hast da eine Klasse. Deshalb das Klassen-Name::Methoden-Name in der .cpp Datei. Die Klasse selbst ist im Header definiert.

Du erstellst dann ein Objekt der Klasse namens lcd und arbeitest damit.

Siehe hier:
http://de.wikibooks.org/wiki/C++-Programmierung:_Klassen

Doc_Arduino:
lcd.print("°") und lcd.print(0xDF) funktionieren nicht, letzteres ist das Hardwarezeichen vom DOGM internen Zeichensatz.

Ach?

Hast Du schon mal lcd.write(0xDF) probiert?

Hallo,

lcd.write funktioniert. :slight_smile: Danke. So einfach kann das sein.

Das hätte ich nur nie im Leben probiert. Ich hatte ja in der Library gelesen. Deshalb dachte, dass seit IDE Version 1.0 lcd.write durch lcd.print ersetzt wurde und damit für mich das selbe ist.

print() ist für ASCII und write() für Binärdaten

Hallo,

okay, Danke für die Erklärung. Muß ich mir irgendwie merken. :wink: