fbpixel
Etiquetas: , , ,

O display OLED é um visor gráfico compacto com resolução de 128×64 pixels que permite fazer desenhos e exibir texto para criar uma interface gráfica.

Material

  • Computador
  • Arduino UNO
  • Cabo USB A Macho/B Macho
  • OLED TF052

Princípio de funcionamento

O display OLED TF052 é baseado no circuito SSD1306 e interage por comunicação I2C.

screen-oled-tf052-i2c Usar um display OLED 128x64 com o Arduino

Esquema

O display OLED tem 4 pinos que permitem gerenciar a exibição. Ele é alimentado pelo microcontrolador e conecta-se ao barramento I2C.

  • GND ligado à terra do microcontrolador
  • VCC Pino de alimentação. Tipicamente ligado ao pino de 3V ou 5V do microcontrolador.
  • SCL Relógio da comunicação I2C
  • SDA Dados da conexão I2C.
arduino-oled128x64-screen_bb Usar um display OLED 128x64 com o Arduino

Código

Com o display OLED devidamente conectado, pode modificar o código abaixo para obter a funcionalidade que deseja. No exemplo a seguir, vamos simplesmente realizar a exibição de um contador.

Para gerenciar o ecrã OLED no programa, utilizamos a biblioteca U8x8lib.h, cujas funções a se conhecer são as seguintes:

  • U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE); para definir o display conforme o tipo
  • u8x8.begin(); para inicializar o display
  • u8x8.setPowerSave(0) para iluminar o display
  • u8x8.setFont(u8x8_font_chroma48medium8_r) para definir a fonte utilizada
  • u8x8.setFlipMode(0) para definir a orientação
  • u8x8.drawString() para escrever no display

Existem outras funções mais específicas para desenhar retângulos, linhas ou exibir imagens.

//Libraries
#include <U8x8lib.h>//https://github.com/olikraus/u8glib

//Parameters
char cstr [16];//To convert int to char

//Variables
int oledCount  = 0;

//Objects
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE);

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init OLED screen
  u8x8.begin();
  u8x8.setPowerSave(0);
  u8x8.setFont(u8x8_font_chroma48medium8_r);
  u8x8.setFlipMode(0);
  drawCentered(1, "Hello World!");
  u8x8.drawString(0, 2, "<-right");
  drawLeft(3, "left->");
  u8x8.drawString(0, 6, "counter =");
}

void loop() {
  OledCounter();
}

void OledCounter() { /* function OledCounter */
  //// Create a counter
  drawLeft(6, itoa(oledCount, cstr, 10));
  oledCount += 1;
  if (oledCount > 255) {
    oledCount = 0;
    drawLeft(6, "    ");
  }
  delay(200);
}

void drawCentered(int lin, char* str) { /* function drawCentered */
  //// Create a counter
  int col = int((16 - String(str).length()) / 2);
  u8x8.drawString(col, lin, str);
}

void drawLeft(int lin, char* str) { /* function drawLeft */
  //// Create a counter
  int col = 15 - String(str).length();
  u8x8.drawString(col, lin, str);
}




Resultado

Observe bem o posicionamento das cadeias de caracteres exibidas e brinque com os parâmetros de entrada das funções para comparar os seus efeitos. Isso permite uma boa apreensão da biblioteca e uma melhor compreensão das funcionalidades do módulo OLED.

arduino-oled-result Usar um display OLED 128x64 com o Arduino

Aplicações

  • Construir um relógio
  • Criar um menu interativo com um codificador rotativo

Sources

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie