• Dispositivos

OLED1

Datasheet
OLED1

O OLED1 é uma placa de extensão fabricada pela Atmel/Microchip que possui 3 botões, 3 LEDs e um display OLED.

Placa Adaptadora

Desenvolvemos uma placa adaptadora que permite facilmente utilizarmos o OLED1 com a Raspberry Pi Pico. A placa elimina a necessidade de conexão, minimizando erros de montagem.

Os pinos da Pico foram selecionados de tal maneira que a placa OLED seja conectada ao SPI1 da mesma, através do header EXT, conforme imagem abaixo:

Os pinos para o OLED (SPI), Botões e LEDS foram mapeados da seguinte maneira:

Warning

Nenhum pino listado a seguir deve ser utilizado para outra funcionalidade.

Conexão Pico W Conexão OLED1
GND GND
VCC VCC
GPIO-9 (SPI1) DISPLAY_CS
GPIO-10 (SPI1) SPI_SCK
GPIO-11 (SPI1) SPI_TX (MOSI)
GPIO-14 DISPLAY_RESET
GPIO-15 DISPLAY_DC
GPIO-20 LED 1
GPIO-21 LED 2
GPIO-22 LED 3
GPIO-26 BUTTON 2
GPIO-27 BUTTON 3
GPIO-28 BUTTON 1

Display

O display da placa OLED é:

  • UG-2832HSWEG04 monocromático OLED Display
  • 128 x 32 pixels
  • Controlado por interface SPI de 4 fios, de até 100 MHz

O importante é que para acessarmos o display, precisamos usar o protocolo de comunicação SPI! Esse protocolo é muito utilizado para esse tipo de comunicação entre microcontrolador e periféricos, então a maioria dos uC possuem um periférico específico para isso (que é o caso da nossa Raspberry Pi Pico).

Driver

O driver é responsável por fazer a interface de baixo nível com o display externo, no nosso caso isso é feito pela comunicação SPI. O driver possui funções básicas como inicializar o display e escrever um pixel no display. O nosso microcontrolador possui dois periféricos de interface SPI:

Lib Gráfica - glx

O display apenas exibe pixels, ele não processa ou gera textos. Para isso, será necessário usarmos uma biblioteca gráfica (glx) que será capaz de criar componentes básicos no display e facilitar a nossa vida!

A estrutura normalmente é realizada da seguinte maneira:

A aplicação faz uso da biblioteca glx, que gera as imagens e salva em um framebuffer local ao microcontrolador (vetor que possui todos os pixels do display). Quando a aplicação requisita uma mudança (por exemplo, escrever um texto), o glx modifica o framebuffer e, via o driver ssd1306, atualiza o display para exibir o novo resultado.