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.
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.
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.
Aplicações
- Construir um relógio
- Criar um menu interativo com um codificador rotativo
Sources
- https://github.com/olikraus/u8glib
- Documentação técnica do SSD1306
- Usar a biblioteca Adafruit para gerir um display OLED
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie