├── .gitmodules └── README.md /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Sequencer Synth"] 2 | path = Sequencer Synth 3 | url = https://github.com/TuriSc/Pico-Sequencer-Synth 4 | [submodule "I2S Audio Mixer"] 5 | path = I2S Audio Mixer 6 | url = https://github.com/TuriSc/RP2040-I2S-Audio-Mixer 7 | [submodule "pico_synth_ex"] 8 | path = pico_synth_ex 9 | url = https://github.com/TuriSc/RP2040-pico_synth_ex 10 | [submodule "PWM DMA Audio"] 11 | path = PWM DMA Audio 12 | url = https://github.com/TuriSc/RP2040-PWM-DMA-Audio 13 | [submodule "PWM Tone"] 14 | path = PWM Tone 15 | url = https://github.com/TuriSc/RP2040-PWM-Tone 16 | [submodule "DFPlayer"] 17 | path = DFPlayer 18 | url = https://github.com/TuriSc/RP2040-DFPlayer 19 | [submodule "Keypad Matrix"] 20 | path = Keypad Matrix 21 | url = https://github.com/TuriSc/RP2040-Keypad-Matrix 22 | [submodule "Rotary Encoder"] 23 | path = Rotary Encoder 24 | url = https://github.com/TuriSc/RP2040-Rotary-Encoder 25 | [submodule "Button"] 26 | path = Button 27 | url = https://github.com/TuriSc/RP2040-Button 28 | [submodule "Moving Average"] 29 | path = Moving Average 30 | url = https://github.com/TuriSc/RP2040-Moving-Average 31 | [submodule "Battery Check"] 32 | path = Battery Check 33 | url = https://github.com/TuriSc/RP2040-Battery-Check 34 | [submodule "WS2812B Animation"] 35 | path = WS2812B Animation 36 | url = https://github.com/TuriSc/RP2040-WS2812B-Animation 37 | [submodule "Linear Hall Effect Sensor"] 38 | path = Linear Hall Effect Sensor 39 | url = https://github.com/TuriSc/Pico-Linear-Hall-Effect-Sensor 40 | [submodule "MUX74HC4067"] 41 | path = MUX74HC4067 42 | url = https://github.com/TuriSc/Pico-MUX74HC4067 43 | [submodule "ssd1306"] 44 | path = ssd1306 45 | url = https://github.com/TuriSc/pico-ssd1306 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Raspberry Pi Pico Libraries 2 | 3 | A collection of C libraries I've written for, or ported to, Raspberry Pi Pico (RP2040) and Raspberry Pi Pico 2 (RP2350) with their SDK. 4 | 5 | ### Audio and music 6 | 7 | [Sequencer Synth](Sequencer%20Synth) 8 | A polyphonic, multitimbral DDS (Direct Digital Synthesis) library with a sequencer supporting up to 8 channels. 9 | 10 | [I2S Audio Mixer](I2S%20Audio%20Mixer) 11 | Audio mixer library allowing playback of audio samples through an I2S DAC. Multiple samples can play simultaneously, and their volume can be adjusted individually. 12 | 13 | [pico_synth_ex](pico_synth_ex) 14 | Polyphonic synth engine with envelope, filter and LFO. 15 | Ported from [pico_synth_ex](https://github.com/risgk/pico_synth_ex) by Ryo Ishigaki. 16 | 17 | [PWM DMA Audio](PWM%20DMA%20Audio) 18 | Library that allows audio samples to be played through PWM. 19 | Forked from [pico-audio-demo](https://github.com/moefh/pico-audio-demo) by Ricardo Massaro. 20 | 21 | [PWM Tone](PWM%20Tone) 22 | Tone generation library. Plays melodies and chirping sounds via PWM through a buzzer or speaker. 23 | 24 | [DFPlayer](DFPlayer) 25 | Play Mp3 and Wav files and control a DFPlayer mini (or a clone like MP3-TF-16P). 26 | 27 | ### I/O 28 | 29 | [Keypad Matrix](Keypad%20Matrix) 30 | Keypad matrix polling. Multiple keypads can be used simultaneously. It detects short and long key presses. 31 | 32 | [Rotary Encoder](Rotary%20Encoder) 33 | Efficiently read rotary encoder signals. 34 | 35 | [Button](Button) 36 | Button debounce library. It generates interrupts after listening to GPIO_IRQ events. It allows to define multiple buttons simultaneously. Forked from [jkroso/pico-button.c](https://github.com/jkroso/pico-button.c). 37 | 38 | [Linear Hall Effect](Linear%20Hall%20Effect%20Sensor) 39 | Read values from Linear Hall Effect Sensors like OH49E, with calibration and smoothing. Multiple sensors can be managed simultaneously. 40 | 41 | [MUX74HC4067](MUX74HC4067) 42 | Read and write multiple signals with 74HC4067 multiplexer/demultiplexer. C port of [nlamprian/MUX74HC4067](https://github.com/nlamprian/MUX74HC4067/). 43 | 44 | [WS2812B Animation](WS2812B%20Animation) 45 | Display animated effects on WS2812B LED strips and matrices, with custom charset and i18n font, and procedural effects. 46 | 47 | [SSD1306](ssd1306) 48 | Not my OLED display library, but I implemented display rotation. Fork of [daschr/pico-ssd1306](https://github.com/daschr/pico-ssd1306). 49 | 50 | ### Utilities 51 | 52 | [Moving Average](Moving%20Average) 53 | Implementation of the moving average filter. Forked from [mhtb32/EfficientMovingAverage](https://github.com/mhtb32/EfficientMovingAverage). 54 | 55 | [Battery Check](Battery%20Check) 56 | Measures the voltage level on the VSYS pin. Useful for low-battery detection. 57 | 58 | --------------------------------------------------------------------------------