# PiicoDev OLED Module SSD1306 - Raspberry Pi Pico Guide

**URL:** <https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377>\
**Category:** Guides\
**Created:** [16 October 2022 23:22 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377 "2022-10-16T23:22:22Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![Michael](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/michael/32/3545_2.png) [@Michael](https://forum.core-electronics.com.au/u/Michael)\
**Post date:** [16 October 2022 23:22 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/1 "2022-10-16T23:22:22Z")

</div>

Michael just shared a new tutorial: [**“PiicoDev OLED Module SSD1306 - Raspberry Pi Pico Guide”**](http://core-electronics.com.au/tutorials/piicodev-oled-ssd1306-raspberry-pi-pico-guide.html)  
  
 ![](https://core-electronics.com.au/media/faq/kbase/feature-piicodev-oled-ssd1306-raspberry-pi-pico.png)  
  
 Let’s get started with the PiicoDev®&nbsp;OLED Module SSD1306. In this guide, we’ll connect the PiicoDev OLED to our Raspberry Pi Pico and get it working with some example code to display text, shapes, and animations.  
  
To follow alo…  
  
[**Read more**](http://core-electronics.com.au/tutorials/piicodev-oled-ssd1306-raspberry-pi-pico-guide.html)

---

<div class="post-metadata">

**Author:** ![SteveC](https://avatars.discourse-cdn.com/v4/letter/s/ecb155/32.png) [@SteveC](https://forum.core-electronics.com.au/u/SteveC)\
**Post date:** [16 October 2022 04:32 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/3 "2022-10-16T04:32:59Z")

</div>

Thank you for the samples and explanations! They are much appreciated.  
I am keen to know some more about how to implement this gorgeous little screen into my projects - for example, how do I send it info from my sensors to it? I"m putting together the weather station kit, and the kit instructions seem to be missing that vital but of info.

---

<div class="post-metadata">

**Author:** ![Liam120347](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/liam120347/32/5003_2.png) [@Liam120347](https://forum.core-electronics.com.au/u/Liam120347)\
**Post date:** [16 October 2022 05:14 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/4 "2022-10-16T05:14:22Z")

</div>

Hi Steve,

Its covered down in the graph distance section: [PiicoDev OLED Module SSD1306 - Raspberry Pi Pico Guide - Tutorial Australia](https://core-electronics.com.au/guides/raspberry-pi-pico/piicodev-oled-ssd1306-raspberry-pi-pico-guide/#remix-graph-distance)

The weather station kit just includes a few of the parts that you could use for different projects - the Pico W is a super versatile MCU, you could also output to MQTT, a webserver and other neat services with some programming/other bits of hardware!

---

<div class="post-metadata">

**Author:** ![Trent5487676](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/trent5487676/32/4583_2.png) [@Trent5487676](https://forum.core-electronics.com.au/u/Trent5487676)\
**Post date:** [31 October 2022 03:38 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/5 "2022-10-31T03:38:47Z")

</div>

Hi Steve,

How’d you get on with your weather station kit? As Liam has already mentioned graphing is covered in the guide but if you could give us a bit more info about your setup we might be able to provide some more specific advice. What kit were you using?

---

<div class="post-metadata">

**Author:** ![Mark285907](https://avatars.discourse-cdn.com/v4/letter/m/34f0e0/32.png) [@Mark285907](https://forum.core-electronics.com.au/u/Mark285907)\
**Post date:** [27 December 2024 05:06 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/6 "2024-12-27T05:06:05Z")

</div>

Hi Michael.

New to Pico so I’m just working through the Piico.dev starter pack V1.2.

When I upload the 3 files for the OLED module to my Pico WH I get a memory error. I have deleted the existing files on the Pico and rebooted.

_Could not write next block after having written 1024 bytes to /main.py_  
_Make sure your device’s filesystem has enough free space. (When overwriting a file, the old content may occupy space until the end of the operation.)_

---

<div class="post-metadata">

**Author:** ![Mark285907](https://avatars.discourse-cdn.com/v4/letter/m/34f0e0/32.png) [@Mark285907](https://forum.core-electronics.com.au/u/Mark285907)\
**Post date:** [27 December 2024 05:34 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/7 "2024-12-27T05:34:18Z")

</div>

Sorted! Needed to boot the Pico with the BOOTSEL button. I assume this clears the memory.

---

<div class="post-metadata">

**Author:** ![Liam](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/liam/32/3562_2.png) [@Liam](https://forum.core-electronics.com.au/u/Liam)\
**Post date:** [27 December 2024 05:42 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/8 "2024-12-27T05:42:21Z")

</div>

Hi Mark,

Glad to hear you got it sorted!

Holding the BOOTSEL button usually takes you into the USB-drive mode, where you can drop UF2 images onto the Pico, pressing control + F2 (initiating a reset) might also clear this error.

Liam

---

<div class="post-metadata">

**Author:** ![Mark285907](https://avatars.discourse-cdn.com/v4/letter/m/34f0e0/32.png) [@Mark285907](https://forum.core-electronics.com.au/u/Mark285907)\
**Post date:** [9 January 2025 06:02 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/9 "2025-01-09T06:02:40Z")

</div>

When I load and display the demo .pbm image things work as advertised.  
The demo image background is white. With the load\_pbm colour parameter set at 1 why don’t I see the display as mainly white?

---

<div class="post-metadata">

**Author:** ![Liam](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/liam/32/3562_2.png) [@Liam](https://forum.core-electronics.com.au/u/Liam)\
**Post date:** [9 January 2025 22:41 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/10 "2025-01-09T22:41:46Z")

</div>

Hi Mark,

Would it be possible to send through some photos of what you are after?

I wasn’t involved in developing the drivers for the OLED, but might be able to share some insight - with the PBM file 1 is encoded as black, and 0 white, on the OLED, the colour ‘1’ is encoded as white instead, the driver steps through each of the bytes and checks that they match, flipping the colour.  
At a hardware level, it makes sense to that ‘1’ is on, this also keeps more of the OLED black to reduce power and wear,

Let us know if you have any more questions!  
Liam

---

<div class="post-metadata">

**Author:** ![Mark285907](https://avatars.discourse-cdn.com/v4/letter/m/34f0e0/32.png) [@Mark285907](https://forum.core-electronics.com.au/u/Mark285907)\
**Post date:** [10 January 2025 00:45 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/11 "2025-01-10T00:45:03Z")

</div>

Thanks Liam.

I see now that the .pbm file as viewed on the OLED is the inverse of the pbm file as viewed on my PC. No idea why though!

from PiicoDev\_SSD1306 import \*  
display = create\_PiicoDev\_SSD1306()  
display.load\_pbm(‘piicodev-logo.pbm’, 1)  
display.show()

 ![Piicodev pbm OLED view](https://canada1.discourse-cdn.com/flex028/uploads/core_electronics/original/2X/4/4197ba438fda19544a7d0458cd3b4c1f296ba0a7.jpeg)  
 ![Piicodev pbm view](https://canada1.discourse-cdn.com/flex028/uploads/core_electronics/original/2X/9/9b592ec1f5832fcc31ea035561b0faf200737256.jpeg)

---

<div class="post-metadata">

**Author:** ![Dan](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/dan/32/10815_2.png) [@Dan](https://forum.core-electronics.com.au/u/Dan)\
**Post date:** [10 January 2025 02:24 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/12 "2025-01-10T02:24:45Z")

</div>

Hi @Mark285907,

The reason that you’re seeing the colours reversed is that the oLED is treating the black of the bitmap as what is to be lit up on the screen. If you’re wanting to flip the bitmap, you would need to add in an additional line of code that tells the display to fill with white before the load\_pbm line and you would change the colour parameter of the load\_pbm to be 0 instead of 1.

```auto
# Display a portable bitmap image (.pbm)
from PiicoDev_SSD1306 import *
display = create_PiicoDev_SSD1306()

display.fill(1)
display.load_pbm('piicodev-logo.pbm', 0)
display.show()

```

 ![image](https://canada1.discourse-cdn.com/flex028/uploads/core_electronics/original/2X/b/bee670291957d12f3af67fe1be01d5f3d29009cc.jpeg)

---

<div class="post-metadata">

**Author:** ![Mark285907](https://avatars.discourse-cdn.com/v4/letter/m/34f0e0/32.png) [@Mark285907](https://forum.core-electronics.com.au/u/Mark285907)\
**Post date:** [10 January 2025 02:42 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/13 "2025-01-10T02:42:36Z")

</div>

Thanks Dan. That works for me and with the .pbm file I created for testing.

Cheers.

---

<div class="post-metadata">

**Author:** ![Dan](https://yyz2.discourse-cdn.com/flex028/user_avatar/forum.core-electronics.com.au/dan/32/10815_2.png) [@Dan](https://forum.core-electronics.com.au/u/Dan)\
**Post date:** [10 January 2025 03:29 UTC](https://forum.core-electronics.com.au/t/piicodev-oled-module-ssd1306-raspberry-pi-pico-guide/15377/14 "2025-01-10T03:29:51Z")

</div>

Hi @Mark285907

No worries at all, best of luck with your project!
