Librería Adafruit OLED 128x32 (rotar el texto)

Estoy trabajando con una pantalla de 128x32 y no encuentro el modo de usar el texto vertical en el Display.

Dicho de otro modo. Necesito poner la pantalla vertical (en lugar de horizontal) y ver; a tamaño completo, 1 (un) solo carácter sea de 0… 9 o A… Z.

Oled.rotation(-90); // Giro el caracter
Oled.setTextSize(9);
Oled.setCursor(0,0);
Oled.println(F(“A”)); // Tomo los 128 pixel para ver la letra “A”

Buscando ser más claro: Si yo quisiera escribir MF necesitaría poner (usar) dos display.

Si tengo que cambiar de librería (no tengo problema) pero use la de Adafruit_SSD1306.h y la U8g2.h y no lo pude hacer.

Agradezco de antemano al que me pueda dar una mano. Cordial saludo

Hola: en primer lugar usa solo la librería de Adafruit. Para girarlo 180º:

display.setRotation(3);  //180 grados -posición inicial-
Oled.setTextSize(9);

Me parece demasiado, con un estilo de 4 ya llenas todo el ancho de la pantalla.

Oled.setCursor(0,0);

No, tendrás que calcular la nueva posición según el ancho y alto del testo. Por ejemplo para esta impresión:
pantalla
El codigo usado ha sido:

display.clearDisplay();
        display.setRotation(3);  //180 grados -posición inicial-
        display.setTextSize(1);
        display.setCursor(4,10);
        display.println("eCO2");
         display.setCursor(4,120);
        display.println("PPM.");
        if (co2 > 999){y=24;}
           else {y=36;}
        display.setRotation(0);  //0 grados -posición inicial-     
        display.setCursor(y,2);
        display.setTextSize(4);
        display.println(co2);
        display.display();

Ufff! mi viejo! hace tres dias que estaba "renegando" con .setRotation()... tal vez por renegar y toquetear dejé de usar la cabeza.

si tu código me permite ver "A o 4" vertical como escrbiste "eCO2 y PPM". abrí la ventana de tu casa para escuchar... GRACIAS PA!

Cordial saludo desde E. Ríos

¿Se escucho?... jajaj

Realmente gracias pa!, la verdad a esta altura del partido. No tengo idea que estaba haciendo antes mal. Pero tus lineas anduvieron perfectamente.

Cordial saludo!

Aqui el codigo de la prueba y el video para ver:

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET     4    // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C // See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32

Adafruit_SSD1306 display(128, 32, &Wire, OLED_RESET);

void setup() {
     // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
     if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
        Serial.println(F("SSD1306 allocation failed"));
        for(;;); // Don't proceed, loop forever
     }

     display.clearDisplay(); // Clear the buffer

     // Invert and restore display, pausing in-between
//    display.invertDisplay(true);  delay(1000); // Comandos
//    display.invertDisplay(false); delay(1000); // Comandos
}

void loop() {
     testdrawstyles();    // Draw 'stylized' characters
//  testscrolltext();
}

void testdrawstyles(void) {
     float nroX= 3.141592;
     display.clearDisplay();
     display.setRotation(0);  //180 grados -posición inicial-
     
     display.setTextSize(4);             // Normal 1:1 pixel scale
     display.setTextColor(SSD1306_WHITE);        // Draw white text
     display.setCursor(1,1);             // Start at top-left corner
     display.println("HOLA");
     display.display(); delay(2000);
  
     display.clearDisplay();
     display.setCursor(1,1);             // Start at top-left corner
     display.println(nroX);
     display.display(); delay(2000);

     display.setRotation(3);  //180 grados -posición inicial-
     display.setTextSize(6);
     display.setCursor(0,20); // (y, x)
     //uint8_t Letra=65;
     for (uint8_t i=65; i<91; i++){
          display.clearDisplay();
          display.setCursor(0,20); // (y, x)
          display.println(char(i));
          display.display();
          delay(500);
     }        
}

void testscrolltext(void) {
     display.clearDisplay();

     display.setTextSize(2); // Draw 2X-scale text
     display.setTextColor(SSD1306_WHITE);
     display.setCursor(10, 0);
     display.println(F("3.141592")); // display.println(F("scroll"));
     display.display(); delay(100); // Show initial text

     // Scroll in various directions, pausing in-between:
     display.startscrollright(0x00, 0x0F); delay(2000);
     display.stopscroll(); delay(1000);
     display.startscrollleft(0x00, 0x0F); delay(2000);
     display.stopscroll(); delay(1000);
     display.startscrolldiagright(0x00, 0x07); delay(2000);
     display.startscrolldiagleft(0x00, 0x07); delay(2000);
     display.stopscroll(); delay(1000);
}