#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED width, in pixels
#define SCREEN_HEIGHT 64 // OLED height, in pixels
// create an OLED display object connected to I2C
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(9600);
// initialize OLED display with I2C address 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
delay(1000); // wait two seconds for initializing
oled.clearDisplay(); // clear display
oled.setTextSize(1); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(10, 30); // set position to display (x,y)
oled.println("Sistema Iniciado..."); // set text
oled.drawLine(2,5,SCREEN_WIDTH-2,5, WHITE); // x0 y0 x1 y1
oled.drawLine(2,SCREEN_HEIGHT-5,SCREEN_WIDTH-2,SCREEN_HEIGHT-5, WHITE);
oled.display(); // display on OLED
delay(100);
// Scroll in various directions, pausing in-between:
oled.startscrollright(0x00, 0x0F);
delay(1000);
oled.stopscroll();
delay(1000);
oled.startscrollleft(0x00, 0x0F);
delay(1000);
oled.stopscroll();
delay(1000);
oled.startscrolldiagright(0x00, 0x07);
delay(1000);
oled.startscrolldiagleft(0x00, 0x07);
delay(2000);
oled.stopscroll();
}
int i;
void loop() {
delay(2000);
oled.clearDisplay(); // Clear display buffer
// drawLine...
for(i=0; i<oled.width(); i+=4) {
oled.drawLine(0, oled.height()-1, i, 0, SSD1306_WHITE);
oled.display();
delay(1);
}
for(i=oled.height()-1; i>=0; i-=4) {
oled.drawLine(0, oled.height()-1, oled.width()-1, i, SSD1306_WHITE);
oled.display();
delay(1);
}
delay(250);
oled.clearDisplay();
// Draw rectangles (outlines)
for(i=0; i<oled.height()/2; i+=2) {
if(i%4==0) oled.drawRect(i, i, oled.width()-2*i, oled.height()-2*i, SSD1306_WHITE);
else oled.drawRoundRect(i, i, oled.width()-2*i, oled.height()-2*i, oled.height()/4, SSD1306_WHITE);
oled.display(); // Update screen with each newly-drawn rectangle
delay(10);
}
oled.clearDisplay();
for(i=0; i<oled.height()/2; i+=3) {
// The INVERSE color is used so rectangles alternate white/black
oled.fillRect(i, i, oled.width()-i*2, oled.height()-i*2, SSD1306_INVERSE);
oled.display(); // Update screen with each newly-drawn rectangle
delay(1);
}
delay(250);
oled.clearDisplay();
for(i=0; i<max(oled.width(),oled.height())/2; i+=2) {
oled.drawCircle(oled.width()/2, oled.height()/2, i, SSD1306_WHITE);
oled.display();
delay(1);
}
delay(2000);
}