// Projeto: Desenhando na Tela OLED 0,96" I2C
// Autor: André Silveira
// Data: 14/06/2019
#include "Adafruit_GFX.h" // Biblioteca para processamento gráfica
#include "Adafruit_SSD1306.h" // Biblioteca do controlador SSD1306 (128x64 e 128x32)
Adafruit_SSD1306 display(128, 64); // Cria objeto display
#include "Fonts/FreeMonoBold12pt7b.h" // Adiciona fonte
#include "Fonts/FreeMono9pt7b.h" // Adiciona fonte
int Contador; // Cria uma variável dinâmica
void setup() {
delay(100);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Inicializa a tela com endereço I2C 0x3C
display.clearDisplay(); // Limpa a tela
display.setTextColor(WHITE); // Define cor do texto
display.setRotation(0); // Configura orientação 0, 1, 2 ou 3
/* Por padrão, linhas longas de texto são definidas para "quebrar" automaticamente na coluna mais à esquerda.
Para substituir esse comportamento, útil em efeitos de seleção de rolagem, use setTextWrap (false).
O comportamento normal de quebra automática é restaurado */
display.setTextWrap(false);
display.dim(0); // Define brilho (0 é máximo e 1 é um pouco escuro)
}
void loop() {
Contador = Contador + 1; // Incrementa variável em 1
if (Contador > 150) {
Contador = 0;
}
/* Cria uma matriz de 10 caracteres para converte Contador float em uma string para alinhar o texto à direita */
char string[10];
dtostrf(Contador, 3, 0, string); // (<variável>,<dígitos usados>,<dígitos decimais>,<nome da string>)
display.clearDisplay(); // Limpa a tela
display.setFont(&FreeMono9pt7b); // Define uma fonte
display.setTextSize(0); // Define o tamanho da fonte (Personalizada é 0)
/* ------ Imprime texto ------ */
display.setCursor(0, 10); // Define posição para escrever na tela (x,y)
display.println("Ola!!");
/* ------ Desenha um triângulo ------ */
display.drawTriangle(35,45,45,25,55,45, WHITE); // Draw triangle (X, Y dos 3 vértices do triângulo e após cor)
/* ------ Desenha um triângulo preenchido ------ */
display.fillTriangle(0,63,15,45,30,63, WHITE); // Draw Fill triangle (X, Y dos 3 vértices do triângulo e após cor)
/* ------ Desenha uma linha ------ */
display.drawLine(40,63,70,63, WHITE); // Draw line (x0,y0,x1,y1,color)
/* ------ Desenha um circulo ------ */
display.drawCircle(47,36,20,WHITE); // Draw circle (x,y,radius,color). X e Y centro do circulo
/* ------ Desenha um circulo preenchido ------ */
display.fillCircle(12, 27, 10, WHITE); // Draw filled circle (x,y,radius,color). X e Y centro do circulo
/* ------ Desenha um retângulo com bordas arredondadas e com preenchimento ------ */
display.fillRoundRect(58, 0, 18, 18, 5, WHITE); // Draw filled rounded rectangle (x,y,width,height,color)
/* ------ Desenha um retângulo ------ */
display.drawRect(79, 0, 49, 27, WHITE); // Draw rectangle (x,y,width,height,color)
/* ------ Imprime variavel com alinhamento a esquerda ------ */
display.setFont(&FreeMonoBold12pt7b); // Configura a Fonte
display.setCursor(83, 20); // Define posição para escrever na tela (x,y)
display.println(Contador); // Valor impresso
/* ------ Desenha retangulo com cantos arredondados ------ */
display.drawRoundRect(79, 37, 49, 27, 8, WHITE); // Draw rounded rectangle (x,y,width,height,radius,color)
/* ------ Imprime variavel com alinhamento a direita ------ */
display.setCursor(83, 57); // Define posição para escrever na tela (x,y)
display.println(string); // Valor impresso
display.display(); // Imprime tudo que foi setado acima
delay(1500); // Aguarda intervalo de 1,5 segundos
} |