No post de hoje vamos mostrar como utilizar a Digispark ATtiny85 com um display OLED I2C, um item importante se você deseja criar projetos compactos utilizando essa placa de desenvolvimento, como por exemplo estações meteorológicas, contadores e outros dispositivos que necessitem de exibição de dados para o usuário.
Essa placa é perfeita para projetos que não necessitem de muitas portas do microcontrolador (a Digispark tem 6 pinos de I/O), e também para aqueles alimentados por bateria, já que a Digispark tem um baixíssimo consumo de energia.
Utilização da Digispark ATtiny85 com IDE Arduino
Antes de montar este projeto eu recomendo a leitura do post Como programar a Digispark ATtiny85 com IDE Arduino, onde mostro como configurar a IDE para reconhecer esta placa e também os detalhes sobre essa placa de desenvolvimento de baixo custo.
Com relação ao hardware do projeto deste post, o que vai nos interessar é a conexão I2C da Digispark, que você pode verificar na imagem abaixo (em verde, pinos D0 e D2):
Conectando o display nesses 2 pinos, temos ainda disponíveis 4 portas para conectarmos sensores, módulos, atuadores e outros dispositivos.
Circuito ATtiny85 com display Oled
Neste teste vamos usar um display OLED I2C azul e amarelo, já mostrado algumas vezes aqui no blog. Conecte o pino SDA do display ao pino D0 da Digispark, e o pino SCL do display ao pino D2, conforme o esquema abaixo:
A alimentação do display será feita pela própria Digispark, pelos pinos 5V e GND.
A ligação acima mostra a conexão em uma Digispark com conexão USB embutida, ou seja, você pode ligar este projeto na porta USB de um computador ou utilizá-lo com um carregador de celular. Outra opção é você utilizar a Digispark com conector micro USB. Nas duas placas a disposição dos pinos de entrada/saída e alimentação é a mesma, ok?
Programa Digispark com display OLED
O programa abaixo, bem pequeno por sinal, utiliza a biblioteca DigisparkOled.h, instalada por padrão quando você adiciona a Digispark na IDE do Arduino.
Serão exibidas strings com caracteres em 2 fontes diferentes (8×16 pixels e 6×8 pixels), que são posicionadas na tela com o comando oled.setCursor() e mostradas com os comandos oled.print() e oled.println().
Devido à limitação da memória do ATtiny85 (8KB), não espere muitos “efeitos especiais” com essa biblioteca e pense sempre em otimizar o programa para que ele seja econômico na utilização dos recursos do microcontrolador. Recomendo inclusive a leitura deste artigo da Adafruit que mostra como você pode reduzir o uso de memória em programas Arduino.
//Programa: Digispark ATtiny85 com display OLED I2C //Autor: Arduino e Cia #include <DigisparkOLED.h> #include <Wire.h> void setup() { //Inicializa o display oled.begin(); } void loop() { //Preenche o display oled.fill(0xFF); delay(3000); //Limpa o display oled.clear(); delay(1000); //Posiciona o cursor //oled.setCursor(X em pixels, Y em linhas de 8 pixels comecando com 0); oled.setCursor(10, 0); //Seleciona fonte 8x16 oled.setFont(FONT8X16); oled.print(F("Arduino e Cia")); //Seleciona fonte 6x8 oled.setFont(FONT6X8); oled.setCursor(8, 3); oled.print(F("Digispark ATtiny85")); oled.setCursor(25, 6); oled.print(F("Display OLED")); //Aguarda 10 segundos e reinicia o processo delay(10000); }
Simples, não? E não se engane com o tamanho da Digispark ATTiny85, pois dá pra fazer muita coisa legal com essa placa. Duvida? Dê uma olhada nessa lista de projetos usando ATTiny85 no Hackaday.io.