hmm... kann ich nicht erkennen, siehst du mehr als ich?
Hier ist der Testcode:
Code:/* * *********** This code is for the ESP8266 *********** * ****** ESP_ssd1306_128x64_I2C demo display ********* * * using ESP_SSD1306 Adafruit library * for a ssd1306 OLED Display with the ESP8266 board * *********** This code is for the ESP8266 *********** * */ // I2C #include <Wire.h> // Incl I2C comm, but needed for not getting compile error #define ESPSDA D2 // defaults #define ESPSCL D1 // // TFT #include <ESP_SSD1306.h> // Modification of Adafruit_SSD1306 for ESP8266 compatibility #include <Adafruit_GFX.h> // Needs a little change in original Adafruit library (See README.txt file) #include <Fonts/FreeSans12pt7b.h> // #include <Fonts/FreeSansBold12pt7b.h> // #include <Fonts/FreeSans9pt7b.h> // #include <Fonts/FreeMono12pt7b.h> // #include <Fonts/FreeMono9pt7b.h> // Pin definitions #define OLED_RESET 10 // GPIO10=D12 Pin RESET signal (virtual) ESP_SSD1306 display(OLED_RESET); // FOR I2C /* #include <ButtonClass.h> tButton btnup; tButton btnle; tButton btnri; */ //---------------------------------------------------------------------------- // OLED dashboard //---------------------------------------------------------------------------- byte MAXMODE=12; void dashboard(byte mode) { if(mode>MAXMODE ) { mode=0; } display.clearDisplay(); display.setFont(); display.display(); display.setFont(); } //---------------------------------------------------------------------------- // menu list //---------------------------------------------------------------------------- char LINELEN = 8; char LINENUM = 4; typedef struct { char line[8][20] = {"line0_67 9012345678" ,"line1_6" ,"line2_67" , "line3_6789012345678" ,"line4_6789012345678" ,"line5_6789012345678" , "line6_6789012345678" ,"line7_6789012345678" }; char act=0, top=0, btm=top+LINENUM; char subl[12]=" "; } list; list mList00; void strcpysubl(char * dest, char * source, char pos) { byte l; memset(dest,' ',sizeof(dest)); dest[12]=0; strncpy( dest+1, source+pos, LINELEN ); if(strlen(source)>(8+pos) ) dest[9] = '~' ; else for( l=strlen(dest); l<=9; l++) dest[l]=' '; dest[10] = '>'; dest[11] = 0; } void displayMenulist(list mList) { int8_t start; byte l; if(mList.act>LINENUM) start=mList.act; else start=0; for(byte i=0+start; i<5+start; i++) { strcpysubl( mList.subl, mList.line[i], 0); if(i==mList.act) { //display.setTextColor(BLACK, WHITE); mList.subl[0]='>'; } //else display.setTextColor(WHITE); l=10 + i*13; display.setCursor( 0, l); display.print(mList.subl); Serial.println(mList.subl); display.display(); } } void setup(void) { // Start Serial Serial.begin(115200); delay(2000); // wait for Serial() // Start Wire (SDA, SCL) Wire.begin(ESPSDA,ESPSCL); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // SSD1306 Init display.begin(SSD1306_SWITCHCAPVCC); // Switch OLED display.setRotation(2); display.clearDisplay(); // Clear the buffer. // text display tests display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Hello, world!"); display.display(); delay(1000); display.clearDisplay(); display.display(); for(byte i=0; i<8; i++) { Serial.println(mList00.line[i]); } Serial.print("act="); Serial.println((byte)mList00.act); display.setFont(&FreeMono9pt7b); // h=13.10pt displayMenulist(mList00); delay(2000); } void loop() { }







Zitieren

Lesezeichen