1. Diese Seite verwendet Cookies. Wenn Sie sich weiterhin auf dieser Seite aufhalten, akzeptieren Sie unseren Einsatz von Cookies. Weitere Informationen
  2. Kandidat werden bei Die Modellbauer
    Information ausblenden

Gefahren Arduinogesabbel :)

Dieses Thema im Forum "Arduino, RaspberryPi und Co." wurde erstellt von BlackbirdXL1, 28. Dezember 2018.

  1. BAXL

    BAXL Moderator Mitarbeiter

    Hey tausend Dank!:thumbsup:

    Wenn ich so die Größe der Buchstaben auf Deinem Foto ansehe, dann schwahnt mir, dass mein Display für die Anzahl der Anzeigedaten wohl auch zu klein sein wird:(. Die größeren Display haben leider idR. keinen I2C Anschluß und ich muß ganz viel verkabeln.
     
  2. DFENCE

    DFENCE Mitglied

    Mein Display ist das 0.96" Display also das kleine, du hast das große. Doch die Großen Displays haben I2C es gibt auch eins mit SPI Schnittstelle, Das wäre nen 1.8" TFT Display, das gibts genauso mit i2c
    Das ist nen Vollwertiges TFT Farbdisplay
    WhatsApp Image 2019-11-08 at 11.44.12.jpeg WhatsApp Image 2019-11-08 at 11.44.22.jpeg
     
  3. BAXL

    BAXL Moderator Mitarbeiter

    wenn meins (1,3") das Große sein soll, dann ist das 0,98" Display sicher winzig :D.
    Ist Dein 1,8" Display von AZ-Delivery?
     
  4. DFENCE

    DFENCE Mitglied

    zJa wirklich groß ist es nicht :D Aber man kann coole sachen mit machen. Ich hatte mal nen kleinen 20Watt Verstärker gebastelt aus nen handvoll teile und das Display genutzt als Analoge Austeuer Anzeige, muss das Video suchen, das sah echt Cool aus. Dafür sind diese Displays auch wirklich klasse.

    Das 1.8"er müsste ich schon bei AZ Gekauft haben, bin aber nicht mehr 100% Sicher, ich hab mit dem Teile Sammeln und den Arduinos angefangen bevor es AZ gab und hab quasi alles von Amazon gekauft was innerhalb 24 Stunden Lieferbar war und irgendwann kamen die teile alle von AZ :D
     
  5. froetz

    froetz Mitglied

    Adafruit_SSD1306.h genau die - und DFENCE hat auf seinem Bild die Zeilenanzahl in der lib nicht angepasst gehabt, so macht das Display nur jede 2. Zeile.
     
    DFENCE und BlackbirdXL1 gefällt das.
  6. DFENCE

    DFENCE Mitglied

    Ja darauf haste mich das letzte mal schon Hingewiesen, hab ich auch nicht Vergessen ich hab nur noch nicht weiter dran gebastelt. :cool:
     
  7. BAXL

    BAXL Moderator Mitarbeiter

    :rolleyes:Es wäre auch zu schön und zu einfach gewesen.
    Ich habe das Beispielprogramm von Defence geladen, noch die fehlenden Libs nachinstalliert und was kam raus?

    Das:
    [​IMG]

    Kurz bei AZ-Delivery nachgesenen, da stand dann der schlaue Hinweis: "Wenn ihr das seht (s.o.) dann müsst ihr die U8g2 Bibliothek von Oliver Kraus nehmen.
    Dann noch eine Kleinigkeit im Code wieder auskommentieren und es geht. Tja, irgendwie geht es auch, aaaaber der Compiler meckert, dass der Beispielcode, der von AZ-Delivery empfohlen wurde, 88% des Speichers belegt und es zu Instabilitäten beim Programmablauf kommen kann. Habs ignoriert und das Programm hochgeladen. Hey, es flimmern tolle bewegte Grafiken über das Display und es werden sogar zwei Zeichensätze angezeigt, das war es aber auch schon. Jetzt muß ich mich schrittweise durch das scheiß Beispielprogramm wühlen und sehen, was alles überflüssiger Ballast ist, den ich gar nicht brauche.:confused: Keine Ahnung was da alles raus kann. So habe ich mir das wieder vorgestellt.:(

    Ach ja, es klappt zwar, aber eine kleine Fehlermeldung kommt auch noch:

    Ungültige Bibliothek D:\D\Arduino\arduino-nightly\libraries\u8g2-master in keine Header-Dateien (.h) in D:\D\Arduino\arduino-nightly\libraries\u8g2-master gefunden gefunden
    Ungültige Bibliothek D:\D\Arduino\arduino-nightly\libraries\u8g2-master in keine Header-Dateien (.h) in D:\D\Arduino\arduino-nightly\libraries\u8g2-master gefunden gefunden
     
  8. BlackbirdXL1

    BlackbirdXL1 Mitglied

    Mal ne Frage: Warum OLED, wenns nicht selbstleuchtend und evtl. auch selbstleuchtend farbig sein muss?
     
  9. BAXL

    BAXL Moderator Mitarbeiter

    Hat keinen besonderen Grund, wurde mir nur immer angeboten wenn ich eine I2C Schnittstelle haben wollte. Die größeren LCD Displays brauchen immer ganz viele Digitalkanäle.

    Bin aber einen kleinen Schritt weiter gekommen. Tim Allen hat in dem Film "Galaxy Quest" immer gesagt "Never give up, never surrender!"

    Was mich aber weiterhin irritiert ist die Speicherplatzmeldung. Obgleich das Programm nur noch aus wenigen Zeilen besteht bekomme ich vom Compiler immer gemeldet:

    Der Sketch verwendet 9962 Bytes (32%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
    Globale Variablen verwenden 1605 Bytes (78%) des dynamischen Speichers, 443 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
    Wenig Arbeitsspeicher verfügbar, es können Stabilitätsprobleme auftreten.

    Der muß sich über die Library irgendwie Kacke ins Hirn ziehen.
     
    Crazy virus 4.0 und BlackbirdXL1 gefällt das.
  10. BlackbirdXL1

    BlackbirdXL1 Mitglied

    [​IMG]
     
    Hubipilot gefällt das.
  11. DFENCE

    DFENCE Mitglied

    Is aber Tatsächlich so wenn es nicht der Programmcode ist, dann ist die Library total beschissen Programmiert und überladen.

    Ich hab schon mal von dem Problem gelesen, aber das bezog sich auf die Billigen Fake Displays die in der unteren Spalte ne Andere Farbe hatten. Das Verwundert mich jetzt etwas ehrlich gesagt.
     
    BlackbirdXL1 gefällt das.
  12. BAXL

    BAXL Moderator Mitarbeiter

    Keine Panik :D, ich habs gelöst.

    Code:
    #include <Arduino.h>
    #include <U8x8lib.h>
    
    
    // Please UNCOMMENT one of the contructor lines below
    // U8x8 Contructor List
    // The complete list is available here: https://github.com/olikraus/u8g2/wiki/u8x8setupcpp
    // Please update the pin numbers according to your setup. Use U8X8_PIN_NONE if the reset pin is not connected
    
    U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
    
    void setup(void)
    {
    
    
      u8x8.begin();
      u8x8.setPowerSave(0);
    
    
    }
    
    void loop(void)
    {
      u8x8.setFont(u8x8_font_chroma48medium8_r);
      u8x8.drawString(0,0,"Hello World!");
      u8x8.drawString(0,1,"Hallo Welt!");
      u8x8.drawString(0,2,"ABCDEFGHIJKLMNOP");
      u8x8.drawString(0,3,"Zeile 4");
      u8x8.drawString(0,4,"Zeile 5");
      u8x8.drawString(0,5,"Zeile 6");
      u8x8.drawString(0,6,"Zeile 7");
      u8x8.drawString(0,7,"Zeile 8");
      delay(2000);
      u8x8.clear();
    
    for (byte ii=0; ii<7; ii++){
       u8x8.drawString(0,ii,"Ich wandere");
       delay(1000);
    }
    
    u8x8.clear();
    
    }
    Der Sketch verwendet 6242 Bytes (20%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
    Globale Variablen verwenden 522 Bytes (25%) des dynamischen Speichers, 1526 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
     
    Crazy virus 4.0, DFENCE und BlackbirdXL1 gefällt das.
  13. DFENCE

    DFENCE Mitglied

    Geht doch :D Das Wichtigste hast ja schon bemerkt, egal wie man muss sich selbst irgendwie durchwurschteln, aber irgendwie ist das auch gut so, Animiert zum Lernen.
     
  14. BAXL

    BAXL Moderator Mitarbeiter

    Schon steht das nächste Problem ins Haus. Solange ich einen String in " " setze wird das auch angezeigt. Das hilft aber nichts, wenn ich erst einen errechneten oder gemessenen Wert habe, der auch angezeigt werden soll. Bisher sind alle Versuche eine Zahl in einen String zu verwandeln und diesen dann in den Funktionsaufruf einzubauen, fehlgeschlagen.:(

    Und wieder sitze ich hier und fummel mir einen zurecht. Welchen Grund sollte es auch geben, dass es sofort reibungslos läuft. :rolleyes:
     
  15. froetz

    froetz Mitglied

    Stückel die Anzeige doch auf.

    Du kannst dich direkt den Wert ausgeben in der Anzeige.
     
  16. BAXL

    BAXL Moderator Mitarbeiter

    Das funktioniert leider nicht, zumindest habe ich keine Funktion in der Lib gefunden, die die Ausgabe eines Zahlenwertes unterstützt. Hab da ein paar ausprobiert.
     
  17. froetz

    froetz Mitglied

    Ah so, die Standard Lib kann das nämlich. Siehst du in meinem Beispiel.
     
  18. yoshi

    yoshi Betreiber Mitarbeiter

    Kann das Display mit ASCII-Codes gefüttert werden? Dann brauchst du deine Zahlen "nur" in ASCII umrechnen.
     
  19. BAXL

    BAXL Moderator Mitarbeiter

    Hab ich auch schon dran gedacht... Ich muss nochmal die Demos durchgucken ob da irgendwo was Gutes versteckt ist.
     
  20. BAXL

    BAXL Moderator Mitarbeiter

    Kurzer Zwischenstand. Das Display funktionierte mit euren Beispielen nicht, weil es keinen SSD1306 Chip hat sondern von einem SH1106 angesteuert wird.
    Zweites Problem ist das mit der Ausgabe von Zahlen, weil meine U8x8 Lib für die Ausgabe von Zahlen keine Funktion besitzt. Man muß also irgendwie einen Umweg über einen String machen. D.h., eine Zahl in einen String umwandeln und dann übergeben. Leider geht das mit der String Funktion nicht, weil als Übergabeparameter keine Stringvariable akzeptiert wird und Strings auch die unangenehme Eigenschaft haben, den Speicher des Arduinos zu fragmentieren, was im längeren betrieb zum Absturz führen kann.

    Also muß ich ein char array bauen, für das ich einmal aber doch noch den Datentyp String brauche. Das char array wird dann auch von der u8x8.drawString(0,0,"Hello World!"); Funktion akzeptiert.

    Der Umweg sieht etwas so aus:

    Variablendeklaration vor void setup()

    char ZahlCharArray[16];
    String ZahlString;

    Funktionsaufruf in void loop()

    ZahlString = (ii+1)*100;
    ZahlString.toCharArray(ZahlCharArray,16);
    u8x8.drawString(0,ii,ZahlCharArray);


    Ich wollte auch nur kurz zeigen welchen Klimmzug ich machen musste.
     

Diese Seite empfehlen