Arduino Nano R4 OLED Display mit U8g2-Bibliothek

Die Az Seite gelesen? Wohl nicht.

Ich habe vier verbaut alle haben den SSH Treiber

Habe es getestet mit 2ND_HW_I2C, funktioniert leider nicht. Display zeigt nichts an.

#include <Wire.h>
#include <U8g2lib.h>
#include <Arduino.h>

U8G2_SH1106_128X64_NONAME_1_2ND_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
//U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
u8g2_uint_t offset;
u8g2_uint_t width;
const char *text = "Hallo";

void setup (void){
u8g2.begin();
u8g2.setFont(u8g2_font_lubB18_tr);
width = u8g2.getUTF8Width(text);
u8g2.setFontMode(0);
}

void loop(void) {
for (int i = 0 ; i < 128 + width*3 ; i++ ){
u8g2.firstPage();
u8g2.setFont(u8g2_font_helvR24_tf);
u8g2.drawUTF8(128 - i, 48, text);
u8g2.nextPage();
}
u8g2.clearBuffer();
}

Jetzt ist mir eingefallen das es auch SSD1315 sein kann.

Ich habe eine Lösung für das Problem gefunden:
das problematische Thema ist eine Bibliothek zu finden um die richtige SCL, SDA Schnittstelle auf dem Nano R4 anzusprechen (Wire1).

OLED 1.3 Zoll mit Controller SSH1106

#include <Arduino.h>
#include <SPI.h>
#include <Wire.h>
extern TwoWire Wire1;
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#include <Fonts/FreeSans9pt7b.h>

#define i2c_Address 0x3c 
#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 64 
#define OLED_RESET -1  
Adafruit_SH1106G Display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire1, OLED_RESET);


void setup(void){ 
    Serial.begin(115200);
    delay(250);
    Display.begin(i2c_Address, true);

    }

void loop(void) {

      Display.clearDisplay();
      Display.setTextSize(1);
      Display.setFont(&FreeSans9pt7b);
      Display.setTextColor(SH110X_WHITE);
      Display.setCursor(15, 30);
      Display.println("TEST 123");

      Display.drawRect(0,0,128,64,SH110X_WHITE);
      Display.display();  
    
}

Das ist vielleicht keine gute Lösung, aber das Display funktioniert damit.

Das firstPage()/nextPage() handling sieht komisch aus.

Kannst du mal aus den Beispielen vom U8G2 das Sketch FPS laden?

Und dann um Zeile 285 einen von diesen Constructor testen?

U8G2_SSD1306_128X64_NONAME_1_2ND_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
U8G2_SH1106_128X64_NONAME_1_2ND_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

Also dann mit dem Nano R4 und dem Display an SDA/SCL


Ooooder
ersetz mal
U8G2_SH1106_128X64_NONAME_1_2ND_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
in deinem Code (#43) durch
U8G2_SH1106_128X64_NONAME_F_2ND_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

@Rintin: ich habe das Beispiel Sketch FPS geladen und beide Zeilen getestet. Das Display zeigt nichts an (Nano R4 an PIN A4, A5 und SCL,SDA getestet).

Anschließend habe ich meinen Code wie von dir Vorgeschlagen geändert, auch dabei zeigt das Display nichts an.

Schreib mall im Setup

Wire.begin(scl pin, sda pin);

Natürlich die Pinbezeichnug reinschreiben :wink:
Mache bei ESP32 wen mir die vorgeschlagenen Pins nicht passen.
Wurde zu dem andere Bibliotheken testen, oder muss es U8G2 sein?

Du bist im falschen Thread!

E:\Programme\arduino\portable\sketchbook\sketch_sep02e\sketch_sep02e.ino: In function 'void setup()':
sketch_sep02e:7:18: error: no matching function for call to 'TwoWire::begin(int, int)'
   Wire.begin(5, 4);
                  ^
I

Dichter komm ich nicht an deinen Aufbau dran.

Der Code aus #43 muss so aussehen:

Code
#include <Wire.h>
#include <U8g2lib.h>
#include <Arduino.h>

//U8G2_SH1106_128X64_NONAME_1_2ND_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
U8G2_SH1106_128X64_NONAME_F_2ND_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
u8g2_uint_t offset;
u8g2_uint_t width;
const char *text = "Hallo";

void setup(void) {
  u8g2.begin();
  u8g2.setFont(u8g2_font_lubB18_tr);
  width = u8g2.getUTF8Width(text);
  u8g2.setFontMode(0);
}

void loop(void) {
  for (int i = 0; i < 128 + width * 3; i++) {
    u8g2.firstPage();
    do {
      u8g2.setFont(u8g2_font_helvR24_tf);
      u8g2.drawUTF8(128 - i, 48, text);
    } while (u8g2.nextPage());
  }
  u8g2.clearBuffer();
}