- Hardware necessário:
- Conhecendo os monitores OLED:
- Hardware e conexões:
- Programando o display OLED SSD1306 para Arduino:
A maioria de nós estaria familiarizada com o display LCD de matriz de pontos de 16 × 2 que é usado na maioria dos projetos para exibir algumas informações ao usuário. Mas esses monitores LCD têm muitas limitações no que podem fazer. Neste tutorial, aprenderemos sobre displays OLED e como usá-los no Arduino. Existem muitos tipos de visores OLED disponíveis no mercado e muitas maneiras de fazê-los funcionar. Neste tutorial discutiremos sobre suas classificações e também qual será a mais adequada para o seu projeto.
Hardware necessário:
- Módulo de exibição OLED de 7 pinos 128 × 64 (SSD1306)
- Arduino UNO / Nano
- Tábua de pão
- Fios de conexão
- Computador / Laptop
Conhecendo os monitores OLED:
O termo OLED significa “ diodo emissor de luz orgânico”, ele usa a mesma tecnologia que é usada na maioria de nossas televisões, mas tem menos pixels em comparação a eles. É muito divertido ter esses módulos de exibição legais em interface com o Arduino, pois isso fará com que nossos projetos pareçam legais. Abordamos um artigo completo sobre monitores OLED e seus tipos aqui.
Estamos usando uma tela OLED SSD1306 monocromática de 7 pinos de 0,96 ”. A razão para escolher este display é que ele pode funcionar em três protocolos de comunicação diferentes, como o modo SPI de 3 fios, o modo de quatro fios SPI e o modo IIC. Este tutorial cobrirá como usar o módulo no modo SPI de 4 fios, pois é o modo de comunicação mais rápido e padrão.
Os pinos e suas funções são explicados na tabela abaixo.
Número do PIN |
Nome do Pin |
Outros nomes |
Uso |
1 |
Gnd |
Terra |
Pino de aterramento do módulo |
2 |
Vdd |
Vcc, 5V |
Pino de alimentação (3-5 V tolerável) |
3 |
SCK |
D0, SCL, CLK |
Atua como o pino do relógio. Usado para I2C e SPI |
4 |
SDA |
D1, MOSI |
Pino de dados do módulo. Usado para IIC e SPI |
5 |
RES |
RST, RESET |
Reinicia o módulo (útil durante o SPI) |
6 |
DC |
A0 |
Pino de comando de dados. Usado para protocolo SPI |
7 |
CS |
Chip Select |
Útil quando mais de um módulo é usado sob o protocolo SPI |
Neste tutorial iremos simplesmente operar o módulo no modo SPI 4-Wire, deixaremos o resto para algum outro tutorial.
A comunidade do Arduino já nos forneceu várias bibliotecas que podem ser usadas diretamente para tornar isso muito mais simples. Eu tentei algumas bibliotecas e descobri que a Biblioteca Adafruit_SSD1306 era muito fácil de usar e tinha um punhado de opções gráficas, portanto, usaremos as mesmas neste tutorial. Mas, se o seu projeto tiver uma restrição de memória / velocidade, tente usar a Biblioteca U8g, pois ela funciona mais rápido e ocupa menos memória do programa.
Hardware e conexões:
O diagrama de circuito para SSD1306 com interface OLED com Arduino é muito simples e é mostrado abaixo
Simplesmente estabelecemos uma comunicação SPI entre o módulo OLED e o Arduino. Como o OLED funciona com 3V-5V e consome muito pouca energia, ele não precisa de uma fonte de alimentação externa. Você pode simplesmente usar fios para fazer a conexão ou usar uma placa de ensaio como eu usei para que seja fácil de experimentar. A conexão também está listada no conto abaixo
S.Não |
Nome do pino no módulo OLED |
Nome do PIN no Arduino |
1 |
Gnd, Ground |
Terra |
2 |
Vdd, Vcc, 5V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11 |
7 |
CS, Chip Select |
12 |
Nota: Você não conseguirá visualizar nenhuma luz de fundo / brilho no módulo OLED apenas ligando-o. Você deve programá-lo corretamente para notar qualquer alteração no display OLED.
Programando o display OLED SSD1306 para Arduino:
Assim que as conexões estiverem prontas, você pode começar a programar o Arduino. Como dito anteriormente, usaremos a biblioteca Adafruit e a biblioteca GFX para trabalhar com este módulo OLED. Siga as etapas para testar a execução do display OLED.
Etapa 1: Baixe a biblioteca Adafruit e a biblioteca GFX do Github usando o link abaixo
- Biblioteca Adafruit
- Biblioteca de Gráficos GFX
Etapa 2: você deve baixar dois arquivos Zip. Agora adicione-os ao seu Arduino seguindo
Sketch-> Incluir Biblioteca -> Adicionar Biblioteca Zip como mostrado abaixo. Em seguida, selecione a biblioteca que acabamos de baixar. Você pode selecionar apenas uma biblioteca por vez, portanto, você deve repetir esta etapa novamente.
Etapa 3: Inicie o Programa de exemplo selecionando Arquivo-> Exemplos-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino conforme mostrado na imagem abaixo.
Etapa 4: Dentro do programa de exemplo no topo da linha 64, adicione a linha “#define SSD1306_LCDHEIGHT 64” conforme mostrado na imagem abaixo.
Etapa 5: Agora carregue o programa e você deverá ver o display OLED sendo inicializado com o código de exemplo Adafruit padrão, conforme mostrado na imagem abaixo. O vídeo completo de trabalho é fornecido no final.
Este programa de exemplo mostra todos os gráficos possíveis que podem ser exibidos na tela OLED. Este código deve ser suficiente para você criar bitmaps, desenhar linhas / círculos / retângulos, brincar com pixels, exibir caracteres e strings com fontes e tamanhos diferentes etc…
Se quiser entender melhor a Biblioteca e suas funções, leia mais. Cada junks do código é dividida e explicada com a ajuda de linhas de comentário. O código completo é fornecido no final deste artigo
Exibindo e limpando a tela:
Escrever na tela OLED é como escrever em um quadro negro, temos que escrever os valores e depois limpá-los antes que possam ser substituídos. Os seguintes comandos são usados para escrever e limpar a tela
display.display (); // Escreva para exibir display.clearDisplay (); // limpar a tela
Exibindo uma variável de caractere:
Para exibir o conteúdo dentro de uma variável, o código a seguir pode ser usado.
char i = 5; // a variável a ser exibida display.setTextSize (1); // Selecione o tamanho do texto display.setTextColor (WHITE); // para exibição monocromática apenas Whit é possível display.setCursor (0,0); // 0,0 é o canto superior esquerdo da tela OLED display.write (i); // Escreva a variável a ser exibida
Desenhando uma linha, círculo, retângulo, triângulo:
Se você quiser adicionar alguns símbolos à sua tela, você pode usar o seguinte código para desenhar qualquer um dos seguintes
display.drawLine (display.width () - 1, 0, i, display.height () - 1, BRANCO); // vazio drawLine (x0, y0, x1, y1, color); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, BRANCO); // void drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, WHITE); // void drawTriangle (x0, y0, x1, y1, x2, y2, color); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // vazio drawCircle (x0, y0, r, color);
Desenhando uma corda na tela:
O seguinte pedaço de código pode ser usado para exibir qualquer mensagem na tela em um determinado local e tamanho
display.setTextSize (2); // define o tamanho do texto display.setTextColor (WHITE); // configuração de cor display.setCursor (10,0); // A string começará em 10,0 (x, y) display.clearDisplay (); // Apaga qualquer exibição anterior na tela display.println ("Circuit Digest"); // Imprima a string aqui “Circuit Digest” display.display (); // envia o texto para a tela
Exibindo uma imagem bitmap:
Uma coisa pouco confiável que pode ser feita com o módulo OLED é que ele pode ser usado para exibir bitmaps. O código a seguir é usado para exibir uma imagem bitmap
estática const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111, B00110011, B10011111, B00011111, B11111100, B00001101, B01110000, B00011011, B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, WHITE); // void drawBitmap (x, y, * bitmap, w, h, color);
Como você pode ver, para exibir uma imagem, os dados do bitmap devem ser armazenados na memória do programa na forma de diretiva PROMGMEM. Simplificando, temos que instruir o display OLED sobre o que fazer com cada pixel, passando-lhe uma sequência ou valores de uma matriz, conforme mostrado acima. Esta matriz conterá os dados de bitmap da imagem.
Pode parecer complicado, mas com a ajuda de uma ferramenta da web é muito fácil converter uma imagem em valores de bitmap e carregá-los no array acima.
Basta carregar a imagem e ajustar as configurações para obter sua visualização preferida da imagem. Em seguida, clique em “Gerar código”, copie o código e cole-o em seu Array. Faça o upload do programa e pronto. Tentei exibir um logotipo do Batman e foi assim que saiu.
Ainda há muitas coisas que você pode fazer com essas bibliotecas. Para saber as possibilidades completas, visite a página de primitivos gráficos Adafruit GFX.
Espero que você o tenha executado e esteja pronto para implementar um display OLED em alguns de seus projetos. Se você teve algum problema, compartilhe-os na seção de comentários e eu tentarei o meu melhor para corrigi-los.