Autor Tema: APORTE - Attiny85 con display OLED 128x32  (Leído 525 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado humberto 02

  • PIC16
  • ***
  • Mensajes: 190
APORTE - Attiny85 con display OLED 128x32
« en: 03 de Octubre de 2023, 10:11:39 »
Buenos Días

Quería compartir el resultado de usar el Display OLED 128x32 o 0,91” usándolo con el ATtiny85; en el caso que te sea útil.

Librerías es todo un tema:
He intentado usar la Tiny4kOLED.h per a decir verdad no logré hacerlo andar. “presiento” que hay que variar parámetros al interno de la librería (.h o .cpp) pero no encontré documentación que toque el tema.

Pero continué la búsqueda hasta dar con la librería U8g2.h y finalmente logré hacerlo andar. Y por eso quería compartirlo.

En algún sitios hacen referencia que la U8g2.h ocupa mucho espacio de la memoria del ATtiny85 con respecto de la Tiny4kOLED.h pero al no lograr setearla no puedo dar opinión comparativa entre ambas.

La librería la obtuve del repositorio del Arduino IDE y les dejo un link de donde obtener los parámetros de distintas fuentes. Que en mi caso me resultó muy útil.

https://github.com/olikraus/u8g2/wiki/fntlist8x8

El Sketch con el que hice andar este display es:

Código: [Seleccionar]
// Fuentes: https://github.com/olikraus/u8g2/wiki/fntlist8x8

#include <U8x8lib.h>
#include <TinyWireM.h>
#include <USI_TWI_Master.h>

U8X8_SSD1306_128X32_UNIVISION_SW_I2C u8x8(2, 0, U8X8_PIN_NONE);

void setup(){
     pinMode(PB0, OUTPUT); digitalWrite(PB0,0);
     pinMode(PB1, OUTPUT); digitalWrite(PB1,0);
     pinMode(PB2, OUTPUT); digitalWrite(PB2,0);

     TinyWireM.begin();
     u8x8.begin();
     u8x8.setPowerSave(0);
}

void loop(){
     u8x8.setInverseFont(0);
     digitalWrite(PB1,HIGH); // Led testigo

     u8x8.clear();
     u8x8.setFont(u8x8_font_artossans8_u);
     u8x8.drawString(0,0,"LATITUD");
     u8x8.drawString(0,2,"LONGITUD");
     delay(500);
     u8x8.setFont(u8x8_font_courB18_2x3_n);
     u8x8.drawString(0,0,"-99.34567");
     u8x8.drawString(0,2,"-89.12345");

     delay(1500);
     digitalWrite(PB1,LOW);
     delay(500);
}

Aqui el video demo:

Como siempre les deseo lo mejor!

Desconectado humberto 02

  • PIC16
  • ***
  • Mensajes: 190
Re:APORTE - Attiny85 con display OLED 128x32
« Respuesta #1 en: 03 de Octubre de 2023, 18:38:08 »
Les quiero dejar un agregado. Aca estaría un Sketch para usar el Display LCD1602

Código: [Seleccionar]
#include <LiquidCrystal_attiny.h>
LiquidCrystal_I2C lcd(0x27,16,2); // 0x3f

String cadena="";

void setup(){
     pinMode(PB1,OUTPUT); digitalWrite(PB1,LOW); // Led On/Off
     
     lcd.init();
     lcd.backlight();
     
     lcd.clear(); lcd.home();
     char renglon[15]="ATtiny85 c/GPS";
     for (int i=0; i<14; i++){
          lcd.setCursor(i,0); lcd.print(renglon[i]);
     }
}

void loop(){
     digitalWrite(PB1,HIGH);
     
     cadena="LAT: -99.99999";
     cadena.trim();
     cadena.toLowerCase(); // Convierto la Letra a minuscula

     for (int i=0; i<16; i++){lcd.setCursor(i,1); lcd.print(" ");} // Limpio linea previamente

     int Largo=cadena.length();
         for (int i=0; i<Largo; i++){
              String letra=cadena.substring(i,i+1);
              lcd.setCursor(i,1); lcd.print(letra);
         }
     cadena="";
     delay(500);
     digitalWrite(PB1,LOW);
     delay(1500);
}

Este esta mejor desarrollado en mi APORTE Anterior ATtiny85 con Bluetooth HC05