Segue um guia prático e focado sobre usar módulos com driver SSD1306 (e variações compatíveis) no display NFP1315-45A. Inclui compatibilidade, ligação elétrica, endereços I²C, pontos de atenção e exemplos de código (Arduino/ESP32 e MicroPython).
Resumo rápido — compatibilidade
- Muitos módulos NFP1315 (ex.: variantes 45A/61A) usam controladores compatíveis com SSD1306; alguns usam SSD1315 — são muito próximos, mas não idênticos. Verifique o controlador do seu módulo (silkscreen / documentação do vendedor). Se o chip for SSD1306, os drivers/ bibliotecas SSD1306 funcionarão; se for SSD1315 pode ser necessária outra variante da biblioteca (ou usar uma implementação compatível). (GitHub)
Datasheets e referência técnica
- Datasheet do SSD1306 (Solomon / Adafruit copies): contém comandos de inicialização, modos de comunicação (I²C, SPI), endereços I²C recomendados e consumo. Use como referência primária para sequências de inicialização e comandos de controle. (Adafruit)
- Especificações do módulo (tensão de alimentação, corrente, dimensões) variam entre fabricantes; módulos “breakout” costumam incluir regulador 5→3.3V. Verifique a folha de produto do seu módulo. (Mouser Electronics)
Ligações elétricas (padrão I²C)
- VCC → 3.3V (ou 5V se o módulo tiver regulador on-board; confirmar no módulo). (Mouser Electronics)
- GND → GND
- SDA → linha SDA do microcontrolador (ESP32 exemplo: GPIO21)
- SCL → linha SCL do microcontrolador (ESP32 exemplo: GPIO22)
- RST e/ou DC: alguns módulos expõem pinos RST / DC (para SPI/parallel). Para I²C muitas bibliotecas podem funcionar sem RST externo, mas conectar RST se disponível é recomendado para um reset limpo.
- Obs.: muitos módulos SSD1306/I²C usam pull-ups internas no breakout; se usar numa placa sem pull-ups ativas, adicione resistores de pull-up (~4.7k) em SDA/SCL. (Mouser Electronics)
Endereço I²C típico
- Endereço I²C mais comum:
0x3C(outro possível:0x3D). Confirme com um scanner I²C se necessário. Informação e exemplos no datasheet. (Adafruit)
Padrões de inicialização / atenção prática
- Inicialize VCC/GND antes de ligar o barramento I²C.
- Verifique se o módulo tem régua de alimentação (algumas placas esperam 5V e regulam internamente; outras não — alimentar com 5V direto pode danificar displays que não têm regulador). (Mouser Electronics)
- Se o display parecer “inativo” após ligar, tente reset via pino RST (se conectado) e confirme endereço I²C com scanner.
- Para displays de 1.3” ou variantes maiores, o controlador pode ser SSD1315/SSD1331/etc.; nesses casos a resolução e seqüência de inicialização podem diferir ligeiramente — use a biblioteca adequada ou uma variante compatível. (Arduino Forum)
Exemplo — Arduino (ESP32 / UNO compatível com Wire)
// Exemplo com biblioteca Adafruit_SSD1306
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // se usar pino RST coloque o número (ex: 16), senão -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Wire.begin(); // para ESP32: Wire.begin(SDA,SCL) se quiser GPIO custom
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // endereço 0x3C
// falha de inicialização
for(;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("SSD1306 OK");
display.display();
}
void loop() { }(Adafruit_SSD1306 usa a sequência de inicialização baseada no SSD1306; se seu módulo for SSD1315, testar U8g2 ou uma implementação específica pode ser necessário.)
Exemplo — MicroPython (ESP32/ESP8266)
from machine import Pin, I2C
import ssd1306
i2c = I2C(0, scl=Pin(22), sda=Pin(21)) # ESP32 default
# para 128x64
oled = ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3C)
oled.fill(0)
oled.text('SSD1306 OK', 0, 0)
oled.show()Exemplo — ESPHome / PlatformIO / Linux drivers
- ESPHome tem suporte a SSD1306 via I²C/SPI e documenta configurações e opções (ex.: display type, update interval). Útil se usar Home Assistant. (esphome.io)
Bibliotecas e recursos úteis
Adafruit_SSD1306(Arduino).U8g2(mais abrangente, suporta variantes e opções de fonte/rotação).ssd1306nativo para MicroPython.- Repositório específico NFP1315 (implementações minimalistas/ crates/ libs) — bom para ver como a comunidade tratou variantes NFP1315. (GitHub)
Checklist rápido para integração com NFP1315-45A
- Identificar controlador no módulo (SSD1306 vs SSD1315). (GitHub)
- Confirmar tensão de alimentação (3.3V vs 5V com regulador). (Mouser Electronics)
- Fazer scan I²C (
i2cdetectou scanner no MicroPython/Arduino) para confirmar endereço (0x3C/0x3D). (Adafruit) - Testar com biblioteca SSD1306; se não funcionar, tentar U8g2 ou procurar biblioteca específica do controlador. (esphome.io)