Como conectar o display OLED I2C ao ARDUINO

Introdução: Introdução ao display OLED I2C 128*64 / 128*32.
Como conectar o display OLED I2C ao ARDUINO

Olá! Sendo um entusiasta amador da electrónica, tenho a certeza que tudo o que fazemos - brinquedos electrónicos - produtos caseiros, ou grandes projectos - é tudo por curiosidade e preguiça. A curiosidade se esforça para compreender e compreender o vasto e desconhecido, para descobrir como ali funciona, o que faz, como se move. E a preguiça inventa alguma coisa para inventar, para não se levantar, para não se aproximar, para não levantar, para não se sujar ou qualquer outra coisa importante.

Como ver informações é melhor do que descobrir o que está para acontecer em nosso dispositivo, ou já aconteceu, ou está acontecendo, com certeza desejaremos receber essas informações mais úteis de nossos microcontroladores, sensores ou outros dispositivos. E de qualquer forma, quero receber mensagens, como perguntas, avisos, lembretes, emoticons, estrelas, corações e assim por diante.

Para aqueles que também desejam o mesmo, aqui está um breve guia para conectar e testar telas OLED pequenas e baratas.
A seguir falaremos sobre um dos modelos de display OLED amplamente disponíveis para rádios amadores, controlado pelo chip SSD1306, com tela de 0,96 polegadas e resolução de 128 * 64 ou 128 * 32 pixels. Esses monitores são ideais para pequenos projetos de rádio amador e projetos caseiros.
Como conectar o display OLED I2C ao ARDUINO

Etapa 1: Conceitos Básicos


Iremos conectá-lo ao Arduino UNO / NANO, e também iremos programá-lo através do Arduino.
  • OLED é um Diodo Emissor de Luz Orgânico, ou seja, um dispositivo semicondutor feito de compostos orgânicos que começa a emitir luz quando uma corrente elétrica passa por ele.
  • ARDUINO é uma plataforma para treinamento e construção de sistemas de automação e robótica.
  • ArduinoIDE - ambiente de desenvolvimento. Este é um programa de programação Arduino gratuito.
  • I2C – Circuitos Interintegrados, linha de comunicação entre chips.
  • Sketch, também conhecido como código, também conhecido como programa - terminologia do Arduino.

Siga as instruções para entender como conectar e configurar corretamente o display OLED ao Arduino e como exibir uma mensagem personalizada em seu display.
Fazemos tudo passo a passo.

Etapa 2: Acessórios


Precisamos apenas de quatro coisas:
  • 1. O display OLED em si tem 0,96” (você pode comprá-lo no Aliexpress ou Ebay, é longo, mas barato!).
  • 2. Arduino UNO/Nano (mesmo local do display).
  • 3. Conectando fios (ibid.).
  • 4. Computador ou laptop com ArduinoIDE instalado.

Como conectar o display OLED I2C ao ARDUINO

Em geral, comprar peças para vários projetos no Aliexpress e no Ebay é uma coisa muito legal, enquanto você está trabalhando em um projeto, peças para outro já estão a caminho. O principal é não esquecer de fazer o pedido.

Etapa 3: Conectando o monitor


A tela é controlada por um chip SSD1306, que suporta cinco protocolos de comunicação, um dos quais é I2C. Os dados que usam este protocolo são transmitidos por apenas dois fios, e quanto menos fios no caso, melhor, por isso é muito adequado para nós.Mas! Existem módulos com protocolo SPI e até com comutação de protocolo, portanto tome cuidado ao adquirir este módulo.
Como conectar o display OLED I2C ao ARDUINO

Pinos usados:
Display OLED - SCL/SCK (relógio) e SDA (dados), potência “Plus” (VCC) e potência “Minus” (GND).
Como conectar o display OLED I2C ao ARDUINO

Pinos usados:
Arduino UNO - SCL/SCK em A5 e SSD em A4, potência “Plus” (+5V) e potência “Minus” (GND).
Conectando o monitor ao Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Como conectar o display OLED I2C ao ARDUINO

Etapa 4: scanner I2C


Cada dispositivo no barramento I2C possui um endereço hexadecimal, não pode ser alterado, é cabeado, todo fabricante responsável deve indicá-lo em algum lugar da caixa ou nas instruções. Existem módulos com interruptores e jumpers que podem ser usados ​​para alterar o endereço, mas... se os dispositivos forem ridiculamente baratos, então o fabricante pode não se preocupar em lidar com tal detalhe, então você terá que determiná-lo sozinho.

No total, até 127 endereços podem ser usados ​​no barramento – 119 para dispositivos e 8 endereços de serviço. A comunicação é realizada nesses endereços. Existe um principal, também conhecido como Mestre, e existe um escravo, também conhecido como Escravo - os Mestres perguntam, os escravos respondem, tudo é simples.
Como nosso display OLED usa o protocolo de comunicação I2C e o endereço pode não ser especificado, tentaremos descobrir esse endereço nós mesmos.

Você pode fazer isso enviando um pequeno esboço para sua placa Arduino com o OLED conectado. MAS!
Não se apresse em enviar o esboço para o Arduino imediatamente! Vamos primeiro baixar os “drivers”, ou seja, vamos conectar as bibliotecas, e para fazer isso iremos imediatamente para a “Etapa No. 5”, e depois voltaremos e continuaremos.

Etapa 4: Continuação:


Baixe CODE Finder_I2C_Hex_Address.ino, carregue para Arduino.
Abra “Port Monitor”, defina a velocidade para 9600 e se tudo estiver conectado corretamente o programa mostrará o endereço do dispositivo, no meu caso OLED com endereço 0x3F.
Como conectar o display OLED I2C ao ARDUINO

Etapa 5: Baixe e conecte bibliotecas


Para que tudo funcione corretamente e você não precise reinventar a roda, é necessário conectar algumas bibliotecas ao ambiente ArduinoIDE, a saber: ADAFRUIT GFX e ADAFRUIT SSD1306, são necessárias para que o Arduino possa se comunicar de forma independente com o display OLED.
Você pode incluir essas bibliotecas seguindo estas etapas.
  • 1. No ArduinoIDE, acesse o menu Sketch.
  • 2. Selecione “Incluir Bibliotecas”.
  • 3.Selecione “Gerenciar Bibliotecas”.
  • 4. Encontre ADAFRUIT GFX e instale-os.
  • 5. Encontre ADAFRUIT SSD1306 e instale-os.

Com as versões mais recentes das bibliotecas, meu display funcionou torto, isso pode ser devido à curvatura das minhas mãos, mas depois que instalei as primeiras versões dessas bibliotecas, tudo começou a parecer liso e bonito. Por alguma razão, as falas de Pushkin vêm à mente:
...e experiência, filha de erros difíceis,
e gênio, amigo dos paradoxos.

Outra maneira de instalar bibliotecas é encontrar, baixar e instalar você mesmo essas bibliotecas.
Para exemplo do Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Estas são as mesmas bibliotecas Adafruit, mas bibliotecas semelhantes podem ser facilmente pesquisadas em motores de busca, a pedido do OLED I2C. Muitos entusiastas escrevem bibliotecas “para si próprios” e depois as publicam na web. Qual biblioteca usar depende de você.
Para que o display exiba letras russas, também são necessárias bibliotecas especiais, mas este é um tópico separado para um artigo separado.
Após a instalação das bibliotecas, você pode retornar ao passo 4 e finalmente descobrir o endereço hexadecimal do seu display.

Etapa 6: teste de exibição


Para verificar se tudo funciona conforme o esperado, execute o exemplo de teste do ArduinoIDE.
Por esta:
Vá para ARQUIVO > EXEMPLOS > SSD 1306 > Selecione 128x64 i2c
Se você receber "Erro", tente selecionar SSD 1306 > 128x32 i2c.
Se o "Erro" ocorrer novamente, tente alterar o endereço I2C na linha 61 do código de demonstração e substitua-o pelo endereço do seu display que você determinou na etapa 4.
Se o erro ocorrer novamente, você pode tentar editar o arquivo Adafruit_SSD1306.h, ele está localizado na pasta de bibliotecas do Arduino.
Como conectar o display OLED I2C ao ARDUINO

Abra o arquivo Adafruit_SSD1306.h em um editor de texto e encontre as linhas:
//#define SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

Remova o comentário da linha:
#define SSD1306_128_64. 

Deveria ficar assim:
#define SSD1306_128_64

//#define SSD1306_128_32

// #define SSD1306_96_16

Se o erro ocorrer novamente, será necessário verificar as conexões corretas.
Assim que o download for concluído, você verá uma animação de teste na tela, o que significa que configurou seu display OLED com sucesso.

Depois de desfrutar completamente desta animação, você pode passar para a próxima etapa.

Passo 7: Escreva sua própria mensagem


Para escrever sua própria mensagem, primeiro crie um novo esboço no ambiente de programação ArduinoIDE.
No cabeçalho incluímos 4 bibliotecas:
#incluir <SPI.h>

#include <Wire.h>

#incluir <Adafruit_GFX.h>

#incluir <Adafruit_SSD1306.h>

Então escrevemos o protocolo de redefinição:
#define OLED_RESET 4

Tela Adafruit_SSD1306 (OLED_RESET);

No VOID SETUP indicamos o endereço hexadecimal do nosso display 0x3C, que aprendemos no “Passo No. 4”.
Em seguida, inicializamos o display e o limpamos:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

A seguir, em VOID LOOP escrevemos o código principal, ou seja, a nossa mensagem que queremos exibir no display.
Para fazer isso, descrevemos o tamanho do texto, a cor do texto, a posição do cursor e, por fim, exibimos a mensagem usando o comando println:
display.setTextSize(2);

display.setTextColor(BRANCO);

display.setCursor(0,0);

display.println("Muito bem!");

display.display();

No final não esqueça de escrever display.displaypara que a imagem seja exibida na tela, caso contrário você ficará vazio.
Se você fez tudo corretamente, uma mensagem aparecerá nos displays.
Como conectar o display OLED I2C ao ARDUINO

Aqui está o CÓDIGO Starting_with_Arduino_OLED.ino do nosso programa:
código.zip [946 b] (downloads: 4908)
voltar
Comente
  • gravata borboletasorrisorindocorarrisonhorelaxado relaxadosorriso pretensioso
    olhos do coraçãobeijando_coraçãobeijando de olhos fechadoscoradoaliviadosatisfeitosorriso
    piscarpreso_para fora_língua_piscando_olholíngua para fora olhos fechadossorrindose beijandolíngua presa_para foradormindo
    preocupadocarrancudoangustiadoboca abertafazendo caretaconfusocalado
    inexpressivosem graçasuor_sorrisosuordecepcionado_aliviadocansadopassiva
    decepcionadoconfusocom medosuor frioperseverarchorarsoluço
    alegriaatônitogritarcara_cansadanervosoraivatriunfo
    com sonohummmmascararoculos de solrosto_tontocriança levadasorrindo_imp
    rosto_neutrosem_bocainocente
4 menos um =
Comentários (10)
  1. Tatushka
    #1 Tatushka Convidados 14 de novembro de 2018 21h18
    9
    Obrigado amigo! Este é meu primeiro esboço carregado e introdução ao Arduino. Além de piscar Pisca))
  2. Alisher
    #2 Alisher Convidados 28 de julho de 2019 19h35
    8
    Onde posso baixar este código Finder_I2C_Hex_Address.ino?
    1. Al
      #3 Al Convidados 14 de agosto de 2019 12h51
      11
      abaixo da imagem há um link "Aqui está o CÓDIGO Starting_with_Arduino_OLED.ino do nosso programa:"
  3. Alex
    #4 Alex Convidados 13 de novembro de 2019 20h01
    9
    Não VOID SETUP ou VOID LOOP, mas void setup(); e loop vazio(); A linguagem C é uma linguagem que diferencia maiúsculas de minúsculas.
  4. Convidado Alex
    #5 Convidado Alex Convidados 14 de janeiro de 2020 03:00
    6
    >Etapa 4: ... no meu caso OLED com endereço 0x3F.
    e então
    >Em VOID SETUP... o endereço do nosso display 0x3C, que aprendemos na “Etapa #4”.
    Como é isso?
  5. Convidado Alex
    #6 Convidado Alex Convidados 14 de janeiro de 2020 03:10
    9
    Obrigado! Fiz tudo de acordo com as instruções do Atmega328 Pro Mini e verifiquei o 0,96" adquirido. Ambos estavam funcionando. Arduino IDE 1.8.10
  6. Leitor
    #7 Leitor Convidados 3 de março de 2020 21h50
    4
    Obrigado, instrutivo, tudo funciona!
  7. Ildar Xafizov
    #8 Ildar Xafizov Convidados 19 de abril de 2020 19h15
    5
    Eu tenho uma pergunta. Existem 2 displays OLED idênticos ao seu na foto (segunda foto). Não consigo descobrir quais jumpers usar para alterar o endereço?
  8. Convidado Máximo
    #9 Convidado Máximo Convidados 31 de outubro de 2020 18h53
    11
    Obrigado pelo artigo.Mas tenho um problema: os pixels das letras brilham entre si e a fonte é maior do que deveria. Aparentemente o Arduino não reconhece a resolução da tela. Se alguém tiver o mesmo problema, veja como resolver:
    #define SCREEN_WIDTH 128 // Largura do display OLED, em pixels
    #define SCREEN_HEIGHT 64 // Altura do display OLED, em pixels
    Exibição Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Dmitry
    #10 Dmitry Convidados 9 de maio de 2021 19h35
    7
    Obrigado! Nem tudo deu certo de imediato. Na verdade, o endereço no display era 128*64, não 0x3D, mas 0x3C. E reorganizei as Bibliotecas “a partir do meio” das versões. Não é o mais recente, porque... havia uma mensagem sobre o valor crítico da memória (tenho um Arduino Uno).