Grafikdisplay DOG XL 160-7 meets Arduino

Hallo Arduino Gemeinde,

ich habe im Internet alles abgegrast, aber rein gar nichts über dieses Display gefunden. Ich bin zwar Anfänger, aber ehrgeizig, was dieses Display betrifft und würde es unglaublich gern zum laufen bringen.

Ich möchte das o.g. Display mit einem Arduino Uno via I2C ansteuern.
Ich habe soweit alles angeschlossen, wie es auf Seite 5 des Datenblatts steht. An welcher Stelle ich allerdings scheitere, ist die Initialisierung des Displays (Initialisierungsbefehle auf Seite 6), ebenso weiß ich nicht, welche Bibliothek ich einzubinden habe.

Ich hoffe mir kann jemand helfen.

Grüße Duke

Warum postest du nicht einfach einen Link (Hyperlink) zu deinem Display.
Das macht es uns einfacher welches Display du genau meinst.

HotSystems:
Warum postest du nicht einfach einen Link (Hyperlink) zu deinem Display.
Das macht es uns einfacher welches Display du genau meinst.

Meinst du das ?

Grüße Duke

Wenn du in Google unter "Arduino DOG XL 160-7 Library" suchst, findest du z.B. dies:
https://github.com/mueschel/lcdlib und weiteres.

Das sind doch aber Bibliotheken für SPI und nicht I2C, oder nicht?

jedenfalls steht in den .h und .c dateien sehr oft SPI.

Wenn ich die Bibliotheken einbinde und mal lcd_init(); laufen lasse bekomme ich eine Menge Fehler

SPI ist wohl der üblichere Anschluss für das Display.

Ich sehe vier Möglichkeiten: Entweder schließt du das LCD per SPI an,
oder du schreibst die Bibliotheken von SPI auf I2C um,
oder du findest fertige I2C-Bibliotheken für das Display,
oder du programmierst die I2C-Ansteuerung komplett selber.

Mit den Beschreibungen von dir können wir jedenfalls nicht mehr helfen, da du deinen Code, Schaltplan und Fehlermeldungen geheim hältst. So gute Hellseher sind wir nicht.

Code ist nicht wirklich vorhanden, das ist das, was ich ja erfrage.

//#include <SPI.h>

#include <dogm-graphic.h>
#include <font.h>

void setup() {
// put your setup code here, to run once:
// SPI.begin();
lcd_init();
// SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));

}

void loop() {
// put your main code here, to run repeatedly:

}

Bilder des Aufbaus kann ich später hochladen.

Fehlermeldungen:

Arduino: 1.8.1 (Linux), TD: 1.35, Board: “Arduino/Genuino Uno”

In file included from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:44:0:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c: In function ‘lcd_data’:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:45:20: error: ‘PORTF_OUT’ undeclared (first use in this function)
#define PORT_CS PORTF_OUT
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:491:32: note: in expansion of macro ‘PORT_CS’
#define LCD_SELECT() PORT_CS &= ~_BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:117:3: note: in expansion of macro ‘LCD_SELECT’
LCD_SELECT();
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:45:20: note: each undeclared identifier is reported only once for each function it appears in
#define PORT_CS PORTF_OUT
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:491:32: note: in expansion of macro ‘PORT_CS’
#define LCD_SELECT() PORT_CS &= ~_BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:117:3: note: in expansion of macro ‘LCD_SELECT’
LCD_SELECT();
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:59:22: error: ‘SPIF_DATA’ undeclared (first use in this function)
#define spi_write(i) SPIF_DATA = i
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:119:3: note: in expansion of macro ‘spi_write’
spi_write(data);
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:56:38: error: ‘SPIF_STATUS’ undeclared (first use in this function)
#define spi_wait_for_idle() while(! (SPIF_STATUS & _BV(SPI_IF_bp)))
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:492:32: note: in expansion of macro ‘spi_wait_for_idle’
#define LCD_UNSELECT() spi_wait_for_idle(); PORT_CS |= _BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:120:3: note: in expansion of macro ‘LCD_UNSELECT’
LCD_UNSELECT();
^
In file included from /home/user01/arduino-1.8.1/hardware/tools/avr/avr/include/avr/io.h:99:0,
from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:4,
from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:44:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:56:56: error: ‘SPI_IF_bp’ undeclared (first use in this function)
#define spi_wait_for_idle() while(! (SPIF_STATUS & _BV(SPI_IF_bp)))
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:492:32: note: in expansion of macro ‘spi_wait_for_idle’
#define LCD_UNSELECT() spi_wait_for_idle(); PORT_CS |= _BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:120:3: note: in expansion of macro ‘LCD_UNSELECT’
LCD_UNSELECT();
^
In file included from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:44:0:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c: In function ‘lcd_command’:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:45:20: error: ‘PORTF_OUT’ undeclared (first use in this function)
#define PORT_CS PORTF_OUT
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:491:32: note: in expansion of macro ‘PORT_CS’
#define LCD_SELECT() PORT_CS &= ~_BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:129:3: note: in expansion of macro ‘LCD_SELECT’
LCD_SELECT();
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:59:22: error: ‘SPIF_DATA’ undeclared (first use in this function)
#define spi_write(i) SPIF_DATA = i
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:131:3: note: in expansion of macro ‘spi_write’
spi_write(cmd);
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:56:38: error: ‘SPIF_STATUS’ undeclared (first use in this function)
#define spi_wait_for_idle() while(! (SPIF_STATUS & _BV(SPI_IF_bp)))
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:492:32: note: in expansion of macro ‘spi_wait_for_idle’
#define LCD_UNSELECT() spi_wait_for_idle(); PORT_CS |= _BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:132:3: note: in expansion of macro ‘LCD_UNSELECT’
LCD_UNSELECT();
^
In file included from /home/user01/arduino-1.8.1/hardware/tools/avr/avr/include/avr/io.h:99:0,
from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:4,
from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:44:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:56:56: error: ‘SPI_IF_bp’ undeclared (first use in this function)
#define spi_wait_for_idle() while(! (SPIF_STATUS & _BV(SPI_IF_bp)))
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:492:32: note: in expansion of macro ‘spi_wait_for_idle’
#define LCD_UNSELECT() spi_wait_for_idle(); PORT_CS |= _BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:132:3: note: in expansion of macro ‘LCD_UNSELECT’
LCD_UNSELECT();
^
In file included from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:44:0:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c: In function ‘lcd_init’:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:28:18: error: ‘PORTF_DIR’ undeclared (first use in this function)
#define DDR_A0 PORTF_DIR
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:465:31: note: in expansion of macro ‘DDR_A0’
#define LCD_SET_OUTPUT_A0() DDR_A0 |= _BV(PIN_CD)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:500:36: note: in expansion of macro ‘LCD_SET_OUTPUT_A0’
#define LCD_SET_PIN_DIRECTIONS() LCD_SET_OUTPUT_A0();
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:263:3: note: in expansion of macro ‘LCD_SET_PIN_DIRECTIONS’
LCD_SET_PIN_DIRECTIONS(); //set outputs
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:32:18: error: ‘PORTF_OUT’ undeclared (first use in this function)
#define PORT_RST PORTF_OUT
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:469:31: note: in expansion of macro ‘PORT_RST’
#define LCD_RESET_ON() PORT_RST &= ~_BV(PIN_RST)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:471:31: note: in expansion of macro ‘LCD_RESET_ON’
#define LCD_RESET() LCD_RESET_ON(); _delay_ms(1); LCD_RESET_OFF(); _delay_ms(10)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:265:3: note: in expansion of macro ‘LCD_RESET’
LCD_RESET(); //Apply Reset to the Display Controller
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:282:32: error: token “=” is not valid in preprocessor expressions
#if ORIENTATION_UPSIDEDOWN = 0
^
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

Dieser Bericht wäre detaillierter, wenn die Option
“Ausführliche Ausgabe während der Kompilierung”
in Datei → Voreinstellungen aktiviert wäre.

Wenn ich die Header SPI einbinde und das lcd_init() weglasse, sieht das so aus

#include <SPI.h>

#include <dogm-graphic.h>
#include <font.h>




void setup() {
  // put your setup code here, to run once:
  SPI.begin();
 //lcd_init();
  SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));


}

void loop() {
  // put your main code here, to run repeatedly:

}

Arduino: 1.8.1 (Linux), TD: 1.35, Board: “Arduino/Genuino Uno”

In file included from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:44:0:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c: In function ‘lcd_data’:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:45:20: error: ‘PORTF_OUT’ undeclared (first use in this function)
#define PORT_CS PORTF_OUT
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:491:32: note: in expansion of macro ‘PORT_CS’
#define LCD_SELECT() PORT_CS &= ~_BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:117:3: note: in expansion of macro ‘LCD_SELECT’
LCD_SELECT();
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:45:20: note: each undeclared identifier is reported only once for each function it appears in
#define PORT_CS PORTF_OUT
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:491:32: note: in expansion of macro ‘PORT_CS’
#define LCD_SELECT() PORT_CS &= ~_BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:117:3: note: in expansion of macro ‘LCD_SELECT’
LCD_SELECT();
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:59:22: error: ‘SPIF_DATA’ undeclared (first use in this function)
#define spi_write(i) SPIF_DATA = i
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:119:3: note: in expansion of macro ‘spi_write’
spi_write(data);
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:56:38: error: ‘SPIF_STATUS’ undeclared (first use in this function)
#define spi_wait_for_idle() while(! (SPIF_STATUS & _BV(SPI_IF_bp)))
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:492:32: note: in expansion of macro ‘spi_wait_for_idle’
#define LCD_UNSELECT() spi_wait_for_idle(); PORT_CS |= _BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:120:3: note: in expansion of macro ‘LCD_UNSELECT’
LCD_UNSELECT();
^
In file included from /home/user01/arduino-1.8.1/hardware/tools/avr/avr/include/avr/io.h:99:0,
from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:4,
from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:44:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:56:56: error: ‘SPI_IF_bp’ undeclared (first use in this function)
#define spi_wait_for_idle() while(! (SPIF_STATUS & _BV(SPI_IF_bp)))
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:492:32: note: in expansion of macro ‘spi_wait_for_idle’
#define LCD_UNSELECT() spi_wait_for_idle(); PORT_CS |= _BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:120:3: note: in expansion of macro ‘LCD_UNSELECT’
LCD_UNSELECT();
^
In file included from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:44:0:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c: In function ‘lcd_command’:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:45:20: error: ‘PORTF_OUT’ undeclared (first use in this function)
#define PORT_CS PORTF_OUT
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:491:32: note: in expansion of macro ‘PORT_CS’
#define LCD_SELECT() PORT_CS &= ~_BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:129:3: note: in expansion of macro ‘LCD_SELECT’
LCD_SELECT();
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:59:22: error: ‘SPIF_DATA’ undeclared (first use in this function)
#define spi_write(i) SPIF_DATA = i
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:131:3: note: in expansion of macro ‘spi_write’
spi_write(cmd);
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:56:38: error: ‘SPIF_STATUS’ undeclared (first use in this function)
#define spi_wait_for_idle() while(! (SPIF_STATUS & _BV(SPI_IF_bp)))
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:492:32: note: in expansion of macro ‘spi_wait_for_idle’
#define LCD_UNSELECT() spi_wait_for_idle(); PORT_CS |= _BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:132:3: note: in expansion of macro ‘LCD_UNSELECT’
LCD_UNSELECT();
^
In file included from /home/user01/arduino-1.8.1/hardware/tools/avr/avr/include/avr/io.h:99:0,
from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:4,
from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:44:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:56:56: error: ‘SPI_IF_bp’ undeclared (first use in this function)
#define spi_wait_for_idle() while(! (SPIF_STATUS & _BV(SPI_IF_bp)))
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:492:32: note: in expansion of macro ‘spi_wait_for_idle’
#define LCD_UNSELECT() spi_wait_for_idle(); PORT_CS |= _BV(PIN_CS)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:132:3: note: in expansion of macro ‘LCD_UNSELECT’
LCD_UNSELECT();
^
In file included from /home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:44:0:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c: In function ‘lcd_init’:
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:28:18: error: ‘PORTF_DIR’ undeclared (first use in this function)
#define DDR_A0 PORTF_DIR
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:465:31: note: in expansion of macro ‘DDR_A0’
#define LCD_SET_OUTPUT_A0() DDR_A0 |= _BV(PIN_CD)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:500:36: note: in expansion of macro ‘LCD_SET_OUTPUT_A0’
#define LCD_SET_PIN_DIRECTIONS() LCD_SET_OUTPUT_A0();
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:263:3: note: in expansion of macro ‘LCD_SET_PIN_DIRECTIONS’
LCD_SET_PIN_DIRECTIONS(); //set outputs
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:32:18: error: ‘PORTF_OUT’ undeclared (first use in this function)
#define PORT_RST PORTF_OUT
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:469:31: note: in expansion of macro ‘PORT_RST’
#define LCD_RESET_ON() PORT_RST &= ~_BV(PIN_RST)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.h:471:31: note: in expansion of macro ‘LCD_RESET_ON’
#define LCD_RESET() LCD_RESET_ON(); _delay_ms(1); LCD_RESET_OFF(); _delay_ms(10)
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:265:3: note: in expansion of macro ‘LCD_RESET’
LCD_RESET(); //Apply Reset to the Display Controller
^
/home/user01/Arduino/libraries/lcdlib-master/dogm-graphic.c:282:32: error: token “=” is not valid in preprocessor expressions
#if ORIENTATION_UPSIDEDOWN = 0
^
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

Dieser Bericht wäre detaillierter, wenn die Option
“Ausführliche Ausgabe während der Kompilierung”
in Datei → Voreinstellungen aktiviert wäre.

Duke92:
Das sind doch aber Bibliotheken für SPI und nicht I2C, oder nicht?

jedenfalls steht in den .h und .c dateien sehr oft SPI.

Wenn ich die Bibliotheken einbinde und mal lcd_init(); laufen lasse bekomme ich eine Menge Fehler

Ok…sorry, soweit bin ich nicht eingestiegen.
Evtl. hilft dir dieser Artikel weiter: https://forum.arduino.cc/index.php?topic=72412.0
Aber auch hier wird von I2C abgeraten.

Duke92:
Ich möchte das o.g. Display mit einem Arduino Uno via I2C ansteuern.

Der UNO hat 5V, das Display 3,3V, Du benötigst I2C-Pegelwandler mit PullUp-Widerständen. Dann kannst Du mal den I2C-Scanner laufen lassen, welche Adressen erkannt werden.

also erstens wollte ich noch nachträglich hinzufügen dass die codes und fehlercodes via SPI versucht wurden, da ichs wohl mit I2C nicht hinbekommen habe.

Den Artikel habe ich schon komplett gelesen. Er hat mir auch in einigen schritten geholfen. Aber leider nur beim verkabeln, nicht bei der Programmierung, und genau da hänge ich grade.

ich habe den Scanner habe ich laufen lassen. 0x68

Also, eigentlich müsste U8g2 das DOGXL160 unterstützen:

Oliver