# Large OLED I2C display SSD1309

**URL:** https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496
**Category:** Product Questions
**Created:** [26 October 2025 06:06 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496 "2025-10-26T06:06:38Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![Ian222769](https://avatars.discourse-cdn.com/v4/letter/i/a8b319/32.png) [@Ian222769](https://forum.core-electronics.com.au/u/Ian222769)
#### Post date: [26 October 2025 06:06 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/1 "2025-10-26T06:06:38Z")

</div>

I purchaesd one of the above OLED displays from you.

I am useing it on ESP32 board

I can get some things to display with the SSD1306 library

What library would you sugest for the SSD1309 with some example code would be great.

I realy want to have a scrolling display

I look forward to your reply

---

<div class="post-metadata">

### Author: ![Jane](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/jane/32/12622_2.png) [@Jane](https://forum.core-electronics.com.au/u/Jane)
#### Post date: [26 October 2025 22:37 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/2 "2025-10-26T22:37:54Z")

</div>

Hi there, @Ian222769, and welcome to the forum. Glad to have you here.

We actually recommend using this SSD1306 code for the SSD1309 as there is enough overlap that there should be too much of an issue.

However, if you are after specific SSD1309 code and you are using Micropython, [this github repository](https://github.com/rdagger/micropython-ssd1309) includes plenty of code and examples.

---

<div class="post-metadata">

### Author: ![Ian222769](https://avatars.discourse-cdn.com/v4/letter/i/a8b319/32.png) [@Ian222769](https://forum.core-electronics.com.au/u/Ian222769)
#### Post date: [27 October 2025 00:31 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/3 "2025-10-27T00:31:43Z")

</div>

Hi Jane  
thank you for your reply  
the followup from CORE is always great.  
I am using Arduino IDE for programming the ESP32  
I can use the 1306 for most functions but can not get the Scrolling to work  
Regards  
Ian Rusch

---

<div class="post-metadata">

### Author: ![Jane](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/jane/32/12622_2.png) [@Jane](https://forum.core-electronics.com.au/u/Jane)
#### Post date: [27 October 2025 01:48 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/4 "2025-10-27T01:48:41Z")

</div>

Thanks for that, Ian,

Could you upload the code that you’re currently using for scrolling.

Once I have that I should be able to give some better advice.

---

<div class="post-metadata">

### Author: ![Ian222769](https://avatars.discourse-cdn.com/v4/letter/i/a8b319/32.png) [@Ian222769](https://forum.core-electronics.com.au/u/Ian222769)
#### Post date: [27 October 2025 06:50 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/5 "2025-10-27T06:50:33Z")

</div>

Hi Jane  
attached code I was running SSD1306 on ESP32 with a small 0.96" OLED.  
this scrolls ok but not on your larger OLED

Hope this helps  
Ian Rush

(Attachment SSD1306 code.docx is missing)

---

<div class="post-metadata">

### Author: ![Ian222769](https://avatars.discourse-cdn.com/v4/letter/i/a8b319/32.png) [@Ian222769](https://forum.core-electronics.com.au/u/Ian222769)
#### Post date: [27 October 2025 06:53 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/6 "2025-10-27T06:53:48Z")

</div>

Hi Jane  
tried sending the code in an DOCX document but your system rejected it  
what format would you like me to send the code to you.

Ian

---

<div class="post-metadata">

### Author: ![Jane](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/jane/32/12622_2.png) [@Jane](https://forum.core-electronics.com.au/u/Jane)
#### Post date: [28 October 2025 01:36 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/7 "2025-10-28T01:36:17Z")

</div>

Hi Ian,

That’s fine, the usual method is to put your code at the bottom of your reply within a pair of triple backquotes (``` ```). Everything between them will be formatted as code for readability.

---

<div class="post-metadata">

### Author: ![Ian222769](https://avatars.discourse-cdn.com/v4/letter/i/a8b319/32.png) [@Ian222769](https://forum.core-electronics.com.au/u/Ian222769)
#### Post date: [28 October 2025 04:32 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/8 "2025-10-28T04:32:03Z")

</div>

Hi Jane  
see if this works  
Ian

```auto
//Testing bounce switch with ULN2003 stpper driver

// Scrolling OLED working 26/10/2025

// Include the Arduino Stepper.h library:

#include <AccelStepper.h> //Include the AccelStepper library

#include <Bounce2.h>

#include <SPI.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(128, 64, &Wire, -1);

const int inputPin = 27; // the number of the push button pin

const int ledPin = 2; // the number of the LED pin

int ledValue = LOW;

// boolean isLighting = false; // define a variable to save the state of LED

// Define the motor pins:

#define MP1 25 // IN1 on the ULN2003

#define MP2 33 // IN2 on the ULN2003

#define MP3 32 // IN3 on the ULN2003

#define MP4 35 // IN4 on the ULN2003

#define MotorInterfaceType 8 // Define the interface type as 8 = 4 wires * step factor (2 for half step)

AccelStepper stepper = AccelStepper(MotorInterfaceType, MP1, MP3, MP2, MP4); //Define the pin sequence (IN1-IN3-IN2-IN4)

const int SPR = 2048;

Bounce bouncer = Bounce(); //Steps per revolution

void setup() {

Serial.begin(115200);

pinMode(inputPin, INPUT); // set push button pin into input mode

pinMode(ledPin, OUTPUT); // set LED pin into output mode

bouncer.attach(inputPin); // bouncer.interval(50); // interval in ms

stepper.setMaxSpeed(1000); //Set the maximum motor speed in steps per second

stepper.setAcceleration(200); //Set the maximum acceleration in steps per second^2

Wire.begin(22, 21); // SDA, SCL 

display.begin(SSD1306_SWITCHCAPVCC, 0x3c); // may need to change this

display.setTextSize(1);

display.setTextColor(WHITE);

// Scroll full screen

display.clearDisplay();

display.setCursor(0, 1);

display.setTextSize(1);

display.println("PUSH to START");

display.println("PUSH AGAIN to STOP");

// display.println("scrolling!");

display.display();

display.startscrollright(0x00, 0x07);

}

void loop() {

if (bouncer.update() && bouncer.read() == LOW) {

ledValue = ! ledValue;

digitalWrite(ledPin, ledValue);

Serial.print(" ledValue ");

Serial.println(ledValue);

}

if (ledValue == HIGH){

// stepper.moveTo(5 * SPR); //Set the target motor position 5 looks better than 3 (i.e. turn motor for 3 full revolutions)

// stepper.runToPosition(); // Run the motor to the target position

// delay(1000);

// stepper.moveTo(-5 * SPR); //Same as above: Set the target motor position (i.e. turn motor for 3 full revolutions)

// stepper.runToPosition(); // Run the motor to the target position

// delay(1000); 

Motor();

}

if (ledValue == LOW){

}

}

void Motor(){

stepper.moveTo(5 * SPR); //Set the target motor position 5 looks better than 3 (i.e. turn motor for 3 full revolutions)

stepper.runToPosition(); // Run the motor to the target position

delay(1000);

stepper.moveTo(-5 * SPR); //Same as above: Set the target motor position (i.e. turn motor for 3 full revolutions)

stepper.runToPosition(); // Run the motor to the target position

delay(1000);

}

```

---

<div class="post-metadata">

### Author: ![Jane](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/jane/32/12622_2.png) [@Jane](https://forum.core-electronics.com.au/u/Jane)
#### Post date: [30 October 2025 02:36 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/9 "2025-10-30T02:36:06Z")

</div>

Hey Ian,

Sorry about the delayed response, it’s been a busy two days.

May I ask why you are using x0.07 for your scrolling end point? Are you not trying to scroll the entire display?

```auto
display.startscrollright(0x00, 0x07);

```

If you are trying to scroll the entire display, try using 0x0F as the second parameter.

---

<div class="post-metadata">

### Author: ![Ian222769](https://avatars.discourse-cdn.com/v4/letter/i/a8b319/32.png) [@Ian222769](https://forum.core-electronics.com.au/u/Ian222769)
#### Post date: [30 October 2025 05:19 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/10 "2025-10-30T05:19:35Z")

</div>

Hi Jane  
I had not noticed that  
I am away in SA at the moment will try that when I am back in Melbourne  
Thanks again for your help

Ian

---

<div class="post-metadata">

### Author: ![Ian222769](https://avatars.discourse-cdn.com/v4/letter/i/a8b319/32.png) [@Ian222769](https://forum.core-electronics.com.au/u/Ian222769)
#### Post date: [2 November 2025 08:29 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/11 "2025-11-02T08:29:59Z")

</div>

Hi Jane  
back in Melbourne  
tried that still no luck.  
Thanks for your help will just stay with a static display

Ian

---

<div class="post-metadata">

### Author: ![Jane](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/jane/32/12622_2.png) [@Jane](https://forum.core-electronics.com.au/u/Jane)
#### Post date: [3 November 2025 02:42 UTC](https://forum.core-electronics.com.au/t/large-oled-i2c-display-ssd1309/23496/12 "2025-11-03T02:42:48Z")

</div>

I’m sorry to hear that, Ian.

I hope you at least had a good South Australia trip. 🙂
