An open API service indexing awesome lists of open source software.

https://github.com/magicmonkey/pico-ssd1306


https://github.com/magicmonkey/pico-ssd1306

Last synced: about 1 year ago
JSON representation

Awesome Lists containing this project

README

          

# SSD1306 OLED Library for RP2040

## 1. Importing the library
* Clone this project into your pico project
* Add this to your CMakeLists.txt
```cmake
add_subdirectory(pico-ssd1306)
target_link_libraries(your_project_name
pico_ssd1306
# you will also need hardware i2c library for communication with the display
hardware_i2c)
```
* Import library in your code
```c++
#include "pico-ssd1306/ssd1306.h"
// You also need i2c library to communicate with the display
#include "hardware/i2c.h"
```
## 2. Basic usage
```c++
i2c_init(I2C_PORT, 1000000); //Use i2c port with baud rate of 1Mhz
//Set pins for I2C operation
gpio_set_function(I2C_PIN_SDA, GPIO_FUNC_I2C);
gpio_set_function(I2C_PIN_SCL, GPIO_FUNC_I2C);
gpio_pull_up(I2C_PIN_SDA);
gpio_pull_up(I2C_PIN_SCL);

//Create a new display object
pico_ssd1306::SSD1306 display = pico_ssd1306::SSD1306(I2C_PORT, 0x3D, pico_ssd1306::Size::W128xH64);

//create a vertical line on x: 64 y:0-63
for (int y = 0; y < 64; y++){
display.setPixel(64, y);
}
display.sendBuffer(); //Send buffer to device and show on screen
```
### Expected output:
![example1](images/ex1.png)

You may have noticed that this entire library is under pico_ssd1306 namespace to avoid conflicts, but if you don't have any
conflicts and don't want to write ```pico_ssd1306::``` all the time just add
```c++
using namespace pico_ssd1306;
```
to your file

## 3. Principles of operation
See [usage explanation](usage.md) for detailed information on how to use core of the lib, but in short:
* First Initialize i2c and pins for i2c communication
* Create a display object. This automatically send setup commands to the device and prepares it for operation
* Modify the buffer containing pixel data
* Send buffer to display
* Clear the buffer and repeat

## 4. Pixel Addressing
![pixel_addressing](images/ex5.png)

same is true for 128x32 displays, then y range is 0-31

## 5. Additional Modules
This library comes with additional modules for shape rendering and text rendering to make your life easier
### Importing Shape Renderer
```c++
#include "pico-ssd1306/shapeRenderer/ShapeRenderer.h"
```
See: [Shape Renderer readme](shapeRenderer/readme.md) for usage and details
### Importing Text Renderer
```c++
#include "pico-ssd1306/textRenderer/TextRenderer.h"
```
See: [Text Renderer readme](textRenderer/readme.md) for usage and details

## 6. Examples
See [examples](examples). Many of them have their own readmes. Many things are also explained in code comments.

## 7. Documentation
Documentation of all functions is [here](https://ssd1306.harbys.me)