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:

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);
}