-         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: Raspberry Pi3 und zwei OLED Displays?

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von HaWe
    Registriert seit
    09.10.2014
    Beiträge
    3.208
    Anzeige

    C++ ?

    dann probier mal die hier:

    Displays
    OLED 128x64 SSD1306, SH1106





    I2C Bus speed: STANDARD + FAST-I2C (100-400kHz, getestet)
    aktuelle Treiber-Version:
    http://hallard.me/adafruit-oled-display-driver-for-pi/
    https://github.com/hallard/ArduiPi_OLED
    https://github.com/jonesman/ArduiPi_OLED // neue I2C Treiber ohne sudo



    Anwendungsbeispiel:
    https://raspilab.blog/2015/03/31/mei...lay-ansteuern/

    Zur Verwendung mit Geany: zusätzlicher build-Parameter

    -lArduiPi_OLED // lowercase "-L"


    7 verschiedene OLED Typen werden unterstützt:
    0 Adafruit SPI 128x32 SSD1306
    1 Adafruit SPI 128x64 SSD1306
    2 Adafruit I2C 128x32 SSD1306
    3 Adafruit I2C 128x64 SSD1306
    4 Seeed I2C 128x64 SSD1308
    5 Seeed I2C 96x96 SSD1327
    6 NoName I2C 128x64 SH1106

    Den richtigen OLED Type muss man ausprobieren, bei mir funktioniert Type 6, d.h. also für den Konsole-Aufruf des Bespielprogramms in examples:

    sudo ./oled_demo --verbose --oled 6


    vereinfachter Start der demo mit festem I2C oled Type 6, ohne Command Line Parameter :
    Code:
    //----------------------------------------------------------------------
    int main(int argc, char **argv)
    {
      int i;
       
      // Oled supported display in ArduiPi_SSD1306.h
    
      // I2C change parameters to fit to your LCD
      if ( !display.init(OLED_I2C_RESET, 6) )
       exit(EXIT_FAILURE);
    
      display.begin();
       
      // init done
      
      //.... Code!
      
      display.close();
      
    } 
    
    //----------------------------------------------------------------------

    einfacher Testcode, testweise zusammen mit wiringPi :
    Code:
    //----------------------------------------------------------------------/*
     * 
     * 
     * OLED Display
     * plus wringPi  millis + delay
     *
     * http://hallard.me/adafruit-oled-display-driver-for-pi/
     * https://github.com/hallard/ArduiPi_OLED
     *  
     * ver 0001
     * 
     */
     
     
    #include <string.h>
    #include <unistd.h>
    #include <errno.h>
    #include <stdio.h>
    #include <stdint.h>
    #include <stdlib.h>
    #include <linux/I2C-dev.h>
    #include <sys/ioctl.h>
    #include <fcntl.h>
    #include <unistd.h>
    
    #include <stdbool.h>
    #include <string.h>
    #include <termio.h>
    
    #include <wiringPi.h>
    #include <wiringPiI2C.h>
    
    #include <ArduiPi_OLED_lib.h>
    #include <Adafruit_GFX.h>
    #include <ArduiPi_OLED.h>
    
    
    #define  byte  uint8_t
     
    
    // Instantiate the OLED display
    ArduiPi_OLED oledtft;
    
    
    void oled_cls() {
         oledtft.clearDisplay(); 
         oledtft.display(); 
    }
    
    
    void oled_printxy(int x, int y, char * str) {
         oledtft.setCursor(x,y);
         oledtft.print(str);
         oledtft.display(); 
    }
    
    
    
    
    // mimic conio.h kbhit
    bool kbhit(void)
    {
        struct termios original;
        tcgetattr(STDIN_FILENO, &original);
    
        struct termios term;
        memcpy(&term, &original, sizeof(term));
        term.c_lflag &= ~ICANON;
        tcsetattr(STDIN_FILENO, TCSANOW, &term);
    
        int characters_buffered = 0;
        ioctl(STDIN_FILENO, FIONREAD, &characters_buffered);
        tcsetattr(STDIN_FILENO, TCSANOW, &original);
        bool pressed = (characters_buffered != 0);
    
        return pressed;
    }
    
    
    //========================================================================= 
    
    
    
    int main() {
    
       int check;
       char sbuf[100];   
       uint32_t msec, millisav;
       
       // wiringPi   
       setenv("WIRINGPI_GPIOMEM", "1", 1);       // no sudo for gpios required
       check = wiringPiSetup();                  // init by wiringPi pin numbering
       if( check == -1 ) return 1;     
       
       // Oled supported display in ArduiPi_SSD1306.h
       // change parameters to fit to your LCD
       if ( !oledtft.init(OLED_I2C_RESET, 6) )
         exit(EXIT_FAILURE);
    
       oledtft.begin();
       
       // init done
      
       oled_cls();
    
       // test
     
       oledtft.setTextSize(1);
       oledtft.setTextColor(WHITE);
       oledtft.setTextSize(1); 
       oledtft.setCursor(0, 0);  oledtft.print(" 0 Hello, world!\n");
       oledtft.setCursor(0, 8);  oledtft.print(" 8 I2C OLED");  
       oledtft.setCursor(0,16);  oledtft.print("16 128x64 addr 0x3c"); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !!!!!
       oledtft.setCursor(0,24);  oledtft.print("24 8x21 char size=1");
       oledtft.setCursor(0,32);  oledtft.print("32 ");
       oledtft.setCursor(0,40);  oledtft.print("40 ");
       oledtft.setCursor(0,48);  oledtft.print("48 456789112345678921");
       oledtft.setCursor(0,56);  oledtft.print("56 ");
       oledtft.display();
       sleep(1);
       oled_cls();
    
    
       millisav=millis();
       while(1) {
         msec = millis() - millisav;
         
         sprintf(sbuf, " millisec = %ld \n", msec);        
         printf(sbuf);     
         oledtft.setTextColor(WHITE, BLACK);
         oled_printxy( 0,16, sbuf);
         
         if (kbhit())
         {
             int c = getchar();
             if(c==27) break;
         }   
         delay(500);   
       }
       
       oled_cls();
       oledtft.close();
       
       return (0);
    }
    
    
    //----------------------------------------------------------------------


    du kannst ja C++, wschl kriegst du das auch dann mit 2 versch. Instanzen hin...
    Geändert von HaWe (15.08.2018 um 11:12 Uhr) Grund: addr 0x3c
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  2. #12
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    394
    Das ist ja grossartig HaWe! Werde ich auf jeden Fall testen und Meldung machen! Vielen Dank dafür!

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von HaWe
    Registriert seit
    09.10.2014
    Beiträge
    3.208
    immer gern!
    das mit der std addr 0x3c ist vorgegeben, das wirst du ändern müssen!
    Ich kenne auch dein SSH1106 nicht, nur SH1106 und SSD1306.
    Dennoch viel Erfolg, und ich bin gespannt!
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 04.07.2018, 10:00
  2. Asus Project Precog: Convertible nutzt zwei Displays als Tastatur oder Anzeige
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 05.06.2018, 16:42
  3. OLED Adapter
    Von TomT. im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 2
    Letzter Beitrag: 28.07.2009, 21:39
  4. TFT OLED AMOLED 4 bis 5 ZOLL
    Von Siro im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 4
    Letzter Beitrag: 07.04.2009, 12:28
  5. Zwei getrennt regelbare PWM-Signale an zwei Pins von PortC
    Von Hender im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 10.02.2006, 10:44

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •