Forum: Mikrocontroller und Digitale Elektronik oledssd1306 mit OLED-DISPLAY-MASTER zum Laufen bringen


von säurehaltigerStein (Gast)


Lesenswert?

Hi,

ich habe mir gedacht, ich könnte doch einfach mal anstatt Arduino zu 
verwenden den Atmega328p direkt programmieren.

Habe mehrere Bibliotheken gefunden.
Z.B.:

https://github.com/Sylaina/oled-display

Ich habe diese geöffnet in VSC.

Wenn man dann make eintippt kommt aber ein Fehler:
1
main.c:4:21: Schwerwiegender Fehler: ssd1306.h: Datei oder Verzeichnis nicht gefunden
2
Kompilierung beendet.

Kommt also aus der main.c:
#include "ssd1306.h"


Ich verstehe nicht wo diese ssd1306.h liegen soll.

Sollte die nicht in dem repository schon drin sein?

 Danke

von pegel (Gast)


Lesenswert?

#include "lcd.h"

steht im Beispiel drunter

von säurehaltigerStein (Gast)


Lesenswert?

pegel schrieb:
> #include "lcd.h"
>
> steht im Beispiel drunter

ja sehe ich jetzt auch, dass dort gar nicht ssd1306.h vorkommt..

Aber wenn ich das ausführe funktioniert das Programm gar nicht richtig 
xD
Habe bisher nur
#define DISPLAY_WIDTH        128
#define DISPLAY_HEIGHT        32

angepasst.

Es sieht aber so aus als wären die Zeichen die ich gestern noch drin 
hatte immer noch auf dem Display angezeigt.
Darüber wird dann etwas mit fehlerhaften Zeichen geschrieben..

Ich habe angenommen, dass der Display geleert wird.
Wie kann der sich noch die alten Zeichen merken, sogar wenn der Strom 
weg war?

Danke

von pegel (Gast)


Lesenswert?

Ist doch super, dass das Display die letzte Ansicht behält.

Ich führe ein Cursor Goto 0,0 und ein schreiben mit 0x00 vor jedem 
Bildwechsel aus.

von säurehaltigerStein (Gast)


Lesenswert?

Ne die letzte "Ansicht" ist von gestern!
Ist das überhaupt realistisch?


pegel schrieb:
> Ich führe ein Cursor Goto 0,0 und ein schreiben mit 0x00 vor jedem
> Bildwechsel aus.
1
//****main.c****//
2
#include "lcd.h"
3
4
int main(void) {
5
  lcd_init(LCD_DISP_ON); // init lcd and turn on
6
  lcd_gotoxy(0, 0);
7
  lcd_puts("Test???????"); // put string from RAM to display (TEXTMODE) or
8
                           
9
  lcd_gotoxy(0, 4);        // set cursor to first column at line 3
10
  lcd_puts("Test???????"); // put string from RAM to display (TEXTMODE) or
11
12
13
14
  for (;;) {
15
    // main loop
16
  }
17
  return 0;
18
}

von pegel (Gast)


Lesenswert?

Ich nutze meine eigene Lib und weiß jetzt nur, dass ein Init den 
Display-Inhalt nicht ändert.

von säurehaltigerStein (Gast)


Lesenswert?

pegel schrieb:
> Ich nutze meine eigene Lib und weiß jetzt nur, dass ein Init den
> Display-Inhalt nicht ändert.

Hmm .. ok mal sehen...

von M. K. (sylaina)


Lesenswert?

Um den Display-Inhalt zu löschen gibt es eine Funktion namens 
lcd_clrscr() ;)

Ein 128x32 OLED habe ich leider nicht, ich habe mir aber sagen lassen, 
dass meine Lib damit auch funktionieren soll, insbesondere das Beispiel, 
dass ich auf der github-Seite habe.

von M. K. (sylaina)


Lesenswert?

säurehaltigerStein schrieb:
> Darüber wird dann etwas mit fehlerhaften Zeichen geschrieben..

Hast du auch den Controller-Typ angepasst? Die Library ist für 
SSD1306-Displays und für SH1106 Displays. Beim falschen Controller 
bekommt man auch falsche Zeichen/Pixel gezeichnet. Das Beispiel auf 
github ist auf SH1106-Displays eingestellt, das musst du auf SSD1306 
ändern wenn du ein SSD1306-Display verwendest. Lass dir mal die Aufgaben 
(TODOs) anzeigen in deiner IDE, dann siehst du wo du überall 
Einstellungen vornehmen musst.

von säurehaltigerStein (Gast)


Lesenswert?

M. K. schrieb:
> lcd_clrscr() ;)

habe ich getestet, aber da wurde nichts gelöscht

M. K. schrieb:
> Lass dir mal die Aufgaben
> (TODOs) anzeigen in deiner IDE, dann siehst du wo du überall
> Einstellungen vornehmen musst.

Das hat geklappt :)

Woher wusstest du das?

Also, wird das öfters mit "todo" markiert?

von M. K. (sylaina)


Lesenswert?

säurehaltigerStein schrieb:
> Woher wusstest du das?

Naja, ich kenne meine Library halt und ich habe hier gelesen, dass du 
das SSD1306-Display benutzt. In Verbindung mit dem Fehlerbild war klar, 
dass du höchstwahrscheinlich den falschen Controller eingestellt hast.

säurehaltigerStein schrieb:
> Also, wird das öfters mit "todo" markiert?

TODOs sind tatsächlich nicht unüblich und sollen dem Entwickler helfen, 
Stellen im Code zu finden, an denen noch gearbeitet werden muss.
Ich nutze das u.a. um anzuzeigen wo gff. auch noch Einstellungen 
vorzunehmen sind.

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.