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
RGB-OLED 96x64 0,95" und Laufschrift
09.10.2017, 16:01
Beitrag #1
RGB-OLED 96x64 0,95" und Laufschrift
Hallo !

Ich habe bereits ein paar kleine Projekte mit dem Arduino realisiert.
Dabei handelt es sich allerdings um eher einfache Abläufe die LED und Relais zeitgesteuert schalten.
Somit würde ich meine Kenntnisse eher als laienhaft bezeichnen.
Ich möchte nun aber für meine Modellbahn ein kleines OLED benutzen, um darauf etwas "Werbung" laufen zu lassen.
Dazu wäre es mir sehr Recht wenn ich das als Laufschrift machen könnte.
Statischen Text habe ich bereits hinbekommen.
Benutzt habe ich dafür die Adafruit_SSD1331 und Adafruit_GFX.
Wenn ich es richtig verstanden habe, sollte sich damit auch Laufschrift realisieren lassen. Nur leider finde ich nirgendwo ein Beispiel
an dem ich mich orientieren könnte.
Eine weitere Möglichkeit wäre die Verwendung der SSD_13XX Librarie von sumotoy.
Diese soll zwar auf der Adafruit beruhen, aber angeblich noch einfacher für Laufschrift zu nutzen sein.
Großes Problem dabei, ich bekomme mit dieser nicht einmal das Display aktiviert. Der Fehler liegt sicherlich in meiner Verdrahtung.
Hat irgendjemand schon mal Laufschrift auf so einem Display hinbekommen?
Wenn ja, wie?
Ich habe mir natürlich diverse Sachen dazu im Internet angesehen aber weder beherrsche ich Japanisch,
noch sind die meisten Displays vergleichbar --- was bedeutet das andere Libraries verwendet wurden.
Ich würde mich sehr freuen wenn mir jemand mit ein paar Tipps zur Seite stehen könnte.

Gruß Bernd
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2017, 16:05
Beitrag #2
RE: RGB-OLED 96x64 0,95" und Laufschrift
Gleich vor ein paar Beiträgen haben wir genau so etwas gelöst.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2017, 16:12
Beitrag #3
RE: RGB-OLED 96x64 0,95" und Laufschrift
Hallo Tommy

Natürlich hatte ich dort auch schon nachgesehen.
Die Lösung konnte ich aber nicht erfolgreich umsetzen.
Die Function scroll konnte ich nicht verwenden.

Gruß Bernd
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2017, 16:31
Beitrag #4
RE: RGB-OLED 96x64 0,95" und Laufschrift
(09.10.2017 16:12)Behagen schrieb:  Hallo Tommy

Natürlich hatte ich dort auch schon nachgesehen.
Die Lösung konnte ich aber nicht erfolgreich umsetzen.
Die Function scroll konnte ich nicht verwenden.

Gruß Bernd
Warum nicht?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2017, 16:51
Beitrag #5
RE: RGB-OLED 96x64 0,95" und Laufschrift
Weil die Fehlermeldung
´scroll´ was not declared in this scope
kam.
Verwendet habe ich dabei aber die SSD_13XX Librarie, da es zu dieser eine Keyword liste gibt in der dieser Befehl
aufgeführt ist. Für die Adafruit habe ich so eine Liste allerdings nicht gefunden.

Gruß Bernd
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2017, 17:15
Beitrag #6
RE: RGB-OLED 96x64 0,95" und Laufschrift
(09.10.2017 16:51)Behagen schrieb:  Weil die Fehlermeldung
´scroll´ was not declared in this scope
kam.
Verwendet habe ich dabei aber die SSD_13XX Librarie, da es zu dieser eine Keyword liste gibt in der dieser Befehl
aufgeführt ist. Für die Adafruit habe ich so eine Liste allerdings nicht gefunden.

Gruß Bernd
Dann solltest Du Dir den Code aus dem verlinkten Beitrag (am Ende) noch mal richtig anschauen.
scroll() steht in keiner Lib, sondern ist eine Funktion im Sketch. Die musst Du natürlich mit übernehmen, ebenso die dazu gehörigen Variablen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2017, 09:16
Beitrag #7
RE: RGB-OLED 96x64 0,95" und Laufschrift
Hallo

Ich habe mich gestern Abend also nochmal dran gesetzt und versucht das ganze hinzubekommen.
Herausgekommen ist nun dieses "Machwerk"
Code:
// definieren der Anschlüsse am Arduino
#define sclk 13
#define mosi 11
#define cs   10
#define rst  9
#define dc   8


// Farben festlegen
#define    BLACK           0x0000
#define    BLUE            0x001F
#define    RED             0xF800
#define    GREEN           0x07E0
#define    CYAN            0x07FF
#define    MAGENTA         0xF81F
#define    YELLOW          0xFFE0  
#define    WHITE           0xFFFF

// Bibliotheken festlegen
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>

// Option 1: festlegen welche Anschlüsse genutzt werden, etwas langsamere Komunikation
Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, mosi, sclk, rst);  

// Option 2: etwas schnellere Komunikation, nutzt SID
// für UNO sind sclk = 13 und sid = 11
// Pin 10 muss als Output festgelegt werden
// wird für benutzung mit microSD genutzt
// (see the image drawing example)
//Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst);

char text[] = " Werte Kunden, wir presentieren ihnen"; // Scrolltext
const uint8_t laenge = 18;  //Länge des Ausschnittes   // worauf bezieht sich das?

// Zeitsteuerung
uint32_t aktMillis, lastMillis;
uint32_t lastMillisScroll;
const uint32_t SCROLLINTERVALL = 1 * 500; // Scrollabstand in Sekunden
const uint32_t INTERVALL = 3 * 60 * 100; // das wären 30 Sekunden

// Berechnen des Scrollstücks
char * scroll() {
static char stueck[laenge+1];
    uint8_t len = strlen(text);  
    char first=text[0];
    uint8_t idx = 0;
    while (text[idx++] = text[idx]);
    text[len-1]=first;
    Serial.print(">");Serial.print(text);Serial.println("<");
    strlcpy(stueck,text,laenge+1);
    return stueck;
}    

void setup() {

    display.begin();
    //Hintergrund schwarz füllen
    display.fillScreen(BLACK);
    //Schriftfarbe rot setzen
    // tftDisplay.stroke(0, 0, 255);  //diese Anweisung(stroke) ergibt eine Fehlermeldung, wird nicht unterstützt
                                      //deswegen habe ich sie durch folgende ersetzt
    display.setTextColor(RED);
    //Display ist 180° gedreht
    display.setRotation(2);
    //Schriftgröße festlegen
    display.setTextSize(2);
    Serial.print("Text: >");Serial.print(text);Serial.print("< Laenge: ");Serial.println(laenge);

    randomSeed(analogRead(A0));  // unbenutzter Analogeingang  
//    schreibeNeu();                     //muss ich diesen Ablauf auch übernehmen, oder wirkt er nur auf die Ausgabe der
                                                   Preise?

}

void loop() {
aktMillis = millis();
    if (aktMillis - lastMillis >= INTERVALL) {
      lastMillis = aktMillis;
    }
    if (aktMillis - lastMillisScroll >= SCROLLINTERVALL) {
      lastMillisScroll = aktMillis;
      Serial.println(scroll());

// Bildschirm löschen und neue Ausgabe

   //tftDisplay.fill(0,0,0);  //diese Anweisung(fill) ergibt eine Fehlermeldung, wird nicht unterstützt
                              //deswegen habe ich sie durch folgende ersetzt
display.fillScreen(BLACK);
// breite = tftDisplay.width(); //ganze Breite
// x dürfte 0 sein, die beiden anderen musst Du experimentieren
// x und y sind die Koordinaten des Eckpunkts links oben.
//display.rect(0,116, 128, 18);  // x, y, Breite, Höhe  //wie ersetze ich diesen Eintrag ?(rect wird nicht unterstützt)

     display.setTextColor(GREEN);
     display.setTextSize(1);
     int abstandLinksTextScroll = 10;
     int q = 5;                                          //woher kommt q ? wert wurde verkleinert da mein Display nur
                                                            94x64 Pixel groß ist
     display.print(scroll(), abstandLinksTextScroll, q); //scroll erzeugt Fehler
                                                         //no matching function for call to 'Adafruit_SSD1331::print
                                                        (char°, int&, int&)'
     display.setTextSize(2);
     display.print("Gute Fahrt!", 0, 0);
    }
}
Ich habe einige Fragen und Kommentare in dem Sketch eingetragen, deswegen ist die
Formatierung etwas "gestört". Ich hätte meine Einträge gerne farblich gekennzeichnet, aber das geht nicht.
Falls es gewünscht wird kann ich natürlich auch meine Fragen nochmal extra aufführen.
Scheitern tut die Ausführung des Programms zur Zeit an der Fehlermeldung:
//no matching function for call to 'Adafruit_SSD1331::print (char°, int&, int&)'

Es wäre sehr nett wenn Du(Tommy oder auch jeder andere) mir da mit ein paar Tipps weiterhelfen könntest.

Gruß Bernd
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2017, 12:22
Beitrag #8
RE: RGB-OLED 96x64 0,95" und Laufschrift
Sowas kommt davon, wenn man Code kopiert, ohne ihn zu verstehen. Wink
Deine Wissensquellen sollten die beiden Adafruit-Libs sein, die Du für das Display eingebunden hast.
Code:
display.print(scroll(), abstandLinksTextScroll, q);
Ein solches print gibt es nicht.
Code:
setCursor(abstandLinksTextScroll, q),
display.print(scroll());
Anstelle von rect() gibt es fillRect. Deine Libs arbeiten etwas anders, als die, die Ingo verwendet hat. Da musst Du in den Libs nachschauen, was passend klingt und etwas experimentieren.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Grafiken auf OLED-Display darstellen scritch 8 4.292 17.11.2016 13:33
Letzter Beitrag: scritch
  1.8" Serial: UART/I2C/SPI True Color OLED160x128 OLED Module Georg 4 3.282 31.08.2014 19:03
Letzter Beitrag: Georg

Gehe zu:


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