// From Digikey 2024-05-13 by Jobit Joseph
// https://www.digikey.com/en/maker/projects/arduino-oled-display-interfacing/0a150e86a90a4743b361376ba0d39722
//
// Currently inoperative with multiple errors as published

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for SSD1306 display connected using I2C
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Declaration for SSD1306 display connected using software SPI:
//#define OLED_MOSI   9
//#define OLED_CLK   10
//#define OLED_DC    11
//#define OLED_CS    12
//#define OLED_RESET 13

//Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
void setup();

{

 Serial.begin(9600);

  // initialize the OLED object

 if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {

   Serial.println(F("SSD1306 allocation failed"));

   for(;;); // Don't proceed, loop forever

 }
// Uncomment this if you are using SPI

 //if(!display.begin(SSD1306_SWITCHCAPVCC)) {

 //  Serial.println(F("SSD1306 allocation failed"));

 //  for(;;); // Don't proceed, loop forever

 //}
// Clear the buffer.
display.clearDisplay();

 // Display Text

 display.setTextSize(1);

 display.setTextColor(WHITE);

 display.setCursor(0, 28);

 display.println("Hello world!");

 display.display();

 delay(2000);

 display.clearDisplay();
// Display Inverted Text

 display.setTextColor(BLACK, WHITE); // 'inverted' text

 display.setCursor(0, 28);

 display.println("Hello world!");

 display.display();

 delay(2000);

 display.clearDisplay();
// Changing Font Size

 display.setTextColor(WHITE);

 display.setCursor(0, 24);

 display.setTextSize(2);

 display.println("Hello!");

 display.display();

 delay(2000);

 display.clearDisplay();) {

}
// Display Numbers

 display.setTextSize(1);

 display.setCursor(0, 28);

 display.println(123456789);

 display.display();

 delay(2000);

 display.clearDisplay();
// Specifying Base For Numbers

 display.setCursor(0, 28);

 display.print("0x"); display.print(0xFF, HEX);

 display.print("(HEX) = ");

 display.print(0xFF, DEC);

 display.println("(DEC)");

 display.display();

 delay(2000);

 display.clearDisplay();
// Display ASCII Characters

 display.setCursor(0, 24);

 display.setTextSize(2);

 display.write(1);

 display.display();

 delay(2000);

 display.clearDisplay();
// Scroll full screen

 display.setCursor(0, 0);

 display.setTextSize(1);

 display.println("Full");

 display.println("screen");

 display.println("scrolling!");

 display.display();

 display.startscrollright(0x00, 0x07);

 delay(4500);

 display.stopscroll();

 delay(1000);

 display.startscrollleft(0x00, 0x07);

 delay(4500);

 display.stopscroll();

 delay(1000);

 display.startscrolldiagright(0x00, 0x07);

 delay(4500);

 display.startscrolldiagleft(0x00, 0x07);

 delay(4500);

 display.stopscroll();

 display.clearDisplay();
//draw rectangle

 display.setTextSize(1);

 display.setTextColor(WHITE);

 display.setCursor(0, 0);

 display.println("Rectangle");

 display.drawRect(0, 15, 60, 40, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw filled rectangle

 display.setCursor(0, 0);

 display.println("Filled Rectangle");

 display.fillRect(0, 15, 60, 40, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw rectangle with rounded corners

 display.setCursor(0, 0);

 display.println("Round Rectangle");

 display.drawRoundRect(0, 15, 60, 40, 8, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw circle

 display.setCursor(0, 0);

 display.println("Circle");

 display.drawCircle(20, 35, 20, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw filled circle

 display.setCursor(0, 0);

 display.println("Filled Circle");

 display.fillCircle(20, 35, 20, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw triangle

 display.setCursor(0, 0);

 display.println("Triangle");

 display.drawTriangle(30, 15, 0, 60, 60, 60, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw filled triangle

 display.setCursor(0, 0);

 display.println("Filled Triangle");

 display.fillTriangle(30, 15, 0, 60, 60, 60, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();

}
#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for SSD1306 display connected using I2C

#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)

#define SCREEN_ADDRESS 0x3C

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Declaration for SSD1306 display connected using software SPI:

//#define OLED_MOSI   9

//#define OLED_CLK   10

//#define OLED_DC    11

//#define OLED_CS    12

//#define OLED_RESET 13

//Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
void setup()

{

 Serial.begin(9600);

  // initialize the OLED object

 if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {

   Serial.println(F("SSD1306 allocation failed"));

   for(;;); // Don't proceed, loop forever

 }
// Uncomment this if you are using SPI

 //if(!display.begin(SSD1306_SWITCHCAPVCC)) {

 //  Serial.println(F("SSD1306 allocation failed"));

 //  for(;;); // Don't proceed, loop forever

 //}
// Clear the buffer.
display.clearDisplay();

 // Display Text

 display.setTextSize(1);

 display.setTextColor(WHITE);

 display.setCursor(0, 28);

 display.println("Hello world!");

 display.display();

 delay(2000);

 display.clearDisplay();
// Display Inverted Text

 display.setTextColor(BLACK, WHITE); // 'inverted' text

 display.setCursor(0, 28);

 display.println("Hello world!");

 display.display();

 delay(2000);

 display.clearDisplay();
// Changing Font Size

 display.setTextColor(WHITE);

 display.setCursor(0, 24);

 display.setTextSize(2);

 display.println("Hello!");

 display.display();

 delay(2000);

 display.clearDisplay();) {

}
// Display Numbers

 display.setTextSize(1);

 display.setCursor(0, 28);

 display.println(123456789);

 display.display();

 delay(2000);

 display.clearDisplay();
// Specifying Base For Numbers

 display.setCursor(0, 28);

 display.print("0x"); display.print(0xFF, HEX);

 display.print("(HEX) = ");

 display.print(0xFF, DEC);

 display.println("(DEC)");

 display.display();

 delay(2000);

 display.clearDisplay();
// Display ASCII Characters

 display.setCursor(0, 24);

 display.setTextSize(2);

 display.write(1);

 display.display();

 delay(2000);

 display.clearDisplay();
// Scroll full screen

 display.setCursor(0, 0);

 display.setTextSize(1);

 display.println("Full");

 display.println("screen");

 display.println("scrolling!");

 display.display();

 display.startscrollright(0x00, 0x07);

 delay(4500);

 display.stopscroll();

 delay(1000);

 display.startscrollleft(0x00, 0x07);

 delay(4500);

 display.stopscroll();

 delay(1000);

 display.startscrolldiagright(0x00, 0x07);

 delay(4500);

 display.startscrolldiagleft(0x00, 0x07);

 delay(4500);

 display.stopscroll();

 display.clearDisplay();
//draw rectangle

 display.setTextSize(1);

 display.setTextColor(WHITE);

 display.setCursor(0, 0);

 display.println("Rectangle");

 display.drawRect(0, 15, 60, 40, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw filled rectangle

 display.setCursor(0, 0);

 display.println("Filled Rectangle");

 display.fillRect(0, 15, 60, 40, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw rectangle with rounded corners

 display.setCursor(0, 0);

 display.println("Round Rectangle");

 display.drawRoundRect(0, 15, 60, 40, 8, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw circle

 display.setCursor(0, 0);

 display.println("Circle");

 display.drawCircle(20, 35, 20, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw filled circle

 display.setCursor(0, 0);

 display.println("Filled Circle");

 display.fillCircle(20, 35, 20, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw triangle

 display.setCursor(0, 0);

 display.println("Triangle");

 display.drawTriangle(30, 15, 0, 60, 60, 60, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();
//draw filled triangle

 display.setCursor(0, 0);

 display.println("Filled Triangle");

 display.fillTriangle(30, 15, 0, 60, 60, 60, WHITE);

 display.display();

 delay(2000);

 display.clearDisplay();

}