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...![]()







Zitieren

Lesezeichen