Posts

Showing posts with the label Raspberry Pi Pico 2

Raspberry Pi Pico 2/MicroPython to handle two SSD1306 OLEDs, in main thread and background thread.

Image
Raspberry Pi Pico 2 & MicroPython: Driving Two SSD1306 OLEDs Simultaneously (Multithreading) Connection: To install micropython_ssd1306 on the Raspberry Pi Pico 2, and simple exercise (mpy_pico2_ssd1306.py), read previous post . Exercise Code: # mpy_pico2_dual_ssd1306.py # MicroPython exercise running on Raspberry Pi Pico 2 with RP2350 # to handle two 128x64 SSD1306 OLEDs, one by one. # # https://coxxect.blogspot.com/2026/10/raspberry-pi-pico-2micropython-to.html # import time from machine import Pin, I2C from ssd1306 import SSD1306_I2C from framebuf import FrameBuffer i2c0 = I2C(0) print(i2c0) print(i2c0.scan()) oled0 = SSD1306_I2C(128, 64, i2c0) print(oled0.width, "x", oled0.height) i2c1 = I2C(1) print(i2c1) print(i2c1.scan()) oled1 = SSD1306_I2C(128, 64, i2c1) print(oled1.width, "x", oled1.height) def fill_oled(oled_id, oled, ticks_ms, ticks_diff, sleep_ms): start_time = time.ticks_ms() for y in range(oled.height): for...

micropython_ssd1306  on the Raspberry Pi Pico 2 to control SSD1306 OLED

Image
Installing  micropython_ssd1306  on the Raspberry Pi Pico 2 with Thonny This video explains how to install the  micropython_ssd1306  library (the SSD1306 OLED driver for MicroPython) on the Raspberry Pi Pico 2 using the Thonny Package Manager. Connect your Raspberry Pi Pico 2 (with MicroPython firmware) to your computer. Open Thonny and configure the interpreter for the Raspberry Pi Pico 2 (MicroPython). In the top menu, go to Tools > Manage packages... Search for  micropython-ssd1306  and click Install. Connection: Exercise code: # mpy_pico2_ssd1306.py # MicroPython exercise running on Raspberry Pi Pico 2 with RP2350 # to control 128x64 SSD1306 OLED. # # https://coxxect.blogspot.com/2026/10/installing-micropythonssd1306-on.html # import time from machine import Pin, I2C from ssd1306 import SSD1306_I2C from framebuf import FrameBuffer i2c = I2C(0) print(i2c) print(i2c.scan()) oled = SSD1306_I2C(128, 64, i2c) prin...

MicroPython _thread exercise

Image
The purpose of this exercise is to test the behavior of MicroPython _thread, specifically for Raspberry Pi Pico series, whether _thread.start_new_thread() can provide real multi-core parallel speedup for pure Python CPU-bound work.  Connection: mpy_thread_smp_bench.py # mpy_thread_smp_bench.py # # Purpose: # Simple MicroPython benchmark to test whether _thread.start_new_thread() # can provide real multi-core parallel speedup for pure Python CPU-bound work. # # Method: # 1. Run a CPU-bound loop in the main thread and measure the duration. # This is the single-thread baseline. # # 2. Run the same CPU-bound loop in two threads: # - one in the main thread # - one in a newly created _thread # # 3. Measure: # - duration of thread 0 # - duration of thread 1 # - total wall-clock time from starting both threads until both finish # # Interpretation: # Let single-thread duration be T. # # If the two CPU jobs run fully in...

Raspberry Pi Pico 2 W/CircuitPython 10.0.3: Load animated GIFs from MicroSD, display them on a 240*240 GC9A01 LCD using gifio.OnDiskGif.

Image
Previous posts show Basic setup of 1.28 inch 240x240 Round Display with GC9A01 SPI on Raspberry Pi Pico 2 W/CircuitPython 10.0.3  and display bmp images from SD using displayio.OnDiskBitmap()/adafruit_imageload.load()  This post shows how to display animated GIFs from MicroSD. The connection between Raspberry Pi Pico 2 W, GC9A01 LCD and the MicroSD Module refers to the last post, display bmp images from SD using displayio.OnDiskBitmap()/adafruit_imageload.load()   Ref: https://docs.circuitpython.org/en/latest/shared-bindings/gifio/index.html#gifio.OnDiskGif Exercise Code: cpy_rpPicoW_gc9a01_sd_OnDiskGif.py. Cooperate with displayio, this mode is relatively slow. """ Raspberry Pi Pico 2 W/CircuitPython 10.0.3 with 1.28" 240x240 Round GC9A01 SPI IPS LCD Display animated GIF in SD, using gifio.OnDiskGif. Cooperate with displayio, this mode is relatively slow. https://coxxect.blogspot.com/2026/02/raspberry-pi-pico-2-wcircuitpython-1003.html ref: https:...

Pico 2 W/CircuitPython 10.0.3 Display bmp images in SD, using displayio.OnDiskBitmap()/adafruit_imageload.load().

Image
Raspberry Pi Pico 2 W with CircuitPython 10.0.3, to display BMP images from an MicroSD card on a 240*240 GC9A01 Round LCD , using displayio.OnDiskBitmap() and adafruit_imageload.load(). Reference: -  displayio.OnDiskBitmap() -  adafruit_imageload.load() All bmp were resized and converted from jpg to 240*240 RGB888 bmp using FFmpeg . Connection: Raspberry Pi Pico 2 W ===================== GP28| GND | GP27| GP26| Run | GP22| ------- LCD_BLK ------------+ GND | | GP21| ------- LCD_DC ---------+ | GP20| ------- LCD_RES-------+ | | +------- SD_MISO|GP12 GP19| MOSI - SPI_SDA ----+ | | | | +----- SD_CS |GP13 GP18| SCK - SPI_SCL --+ | | | | | | |GND GND | | | | |...

Raspberry Pi Pico 2 W display on two 1.9" 170*320 ST7789 SPI LCD, using Arduino_GFX_Library, using separated SPI.

Image
Raspberry Pi Pico 2 W display on two 1.9" 170*320 ST7789 SPI LCD, using Arduino_GFX_Library, using separated SPI. In previous exercise, I used a Raspberry Pi Pico 2 W to drive two LCDs: a 2.4-inch and a 2.0-inch 240×320 ST7789 SPI IPS . Both displays shared a common SPI bus without any problems. However, when I replaced them with two 1.9-inch 170×320 ST7789 SPI LCDs , the setup did not work. Using the same code and connections, only the second LCD would turn on. To solve this, I separated the SPI connections for the two displays: the first one (on the left) is connected via Arduino_RPiPicoSPI, and the second one (on the right) is connected via Arduino_SWSPI. Updated connection: Raspberry Pi Pico 2 W      GP28| LCD2_RST -----------------+      GND | |      GP27| LCD2_DC ----------------+ |      GP26| LCD2_CS --------------+ | |      Run | ...