// ##############################################################
// OLED SSD1306 Interface #
// ##############################################################
//
// OLED interface with Arduino Nano (Hardware & Simulation)
//
// Check out the link for Code explanation and Hardware details
// Link:
// http://tech.arunkumarn.in/blogs/arduino-nano/interfacing-128x64-monochrome-oled-ssd1306-with-arduino-nano
//
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// --------------------------------------
// OLED Display Configuration
// --------------------------------------
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// OLED Reset pin (-1 if not used)
#define OLED_RESET -1
// OLED I2C Address (usually 0x3C)
#define SCREEN_ADDRESS 0x3C
// Create OLED display object
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// --------------------------------------
// Setup Function
// --------------------------------------
void setup() {
Serial.begin(9600);
// Initialize I2C + OLED Display
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println("OLED allocation failed!");
while (true); // Stop execution
}
Serial.println("OLED Initialized Successfully!");
// Clear display buffer
display.clearDisplay();
// Display startup message
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(32, 0);
display.println("Arduino Nano");
display.setCursor(35, 15);
display.println("Welcome to");
display.setCursor(30, 30);
display.println("Aavishkaran");
display.setCursor(0, 50);
display.println("Loading...");
display.display();
delay(2000);
// Run shapes demo once
shapesDemo();
}
// --------------------------------------
// Main Loop Function
// --------------------------------------
void loop() {
counterDemo();
}
// --------------------------------------
// Function: Counter Demo
// --------------------------------------
void counterDemo() {
static int count = 0;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.println("Counter");
display.setCursor(0, 20);
display.print("Count: ");
display.println(count);
display.setCursor(25, 45);
display.println("Aavishkarah");
display.display();
count++;
delay(1000);
}
// --------------------------------------
// Function: Shapes Demo
// --------------------------------------
void shapesDemo() {
display.clearDisplay();
// Draw border rectangle
display.drawRect(0, 0, 128, 64, SSD1306_WHITE);
// Draw filled rectangle
display.fillRect(10, 10, 40, 20, SSD1306_WHITE);
// Draw horizontal line
display.drawLine(0, 35, 127, 35, SSD1306_WHITE);
// Draw vertical line
display.drawLine(64, 0, 64, 63, SSD1306_WHITE);
display.setTextSize(1);
display.setCursor(70, 10);
display.println("Shapes");
display.setCursor(75, 25);
display.println("Demo");
display.display();
delay(3000);
}