{"id":18695221,"url":"https://github.com/milosz275/pico-led-controller","last_synced_at":"2026-01-30T09:18:58.380Z","repository":{"id":244059003,"uuid":"812278058","full_name":"milosz275/pico-led-controller","owner":"milosz275","description":"Pico C project implementing WS2812B LED controller with multiple predefined effects and management using HTTP server.","archived":false,"fork":false,"pushed_at":"2024-11-23T17:32:33.000Z","size":3263,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T02:15:33.440Z","etag":null,"topics":["chroma","hue","pico-sdk","pico-w","rainbow","raspberry-pi-pico"],"latest_commit_sha":null,"homepage":"https://milosz275.github.io/pico-led-controller","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/milosz275.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"mldxo","buy_me_a_coffee":"mldxo"}},"created_at":"2024-06-08T12:45:19.000Z","updated_at":"2024-11-23T17:32:37.000Z","dependencies_parsed_at":"2024-06-12T18:57:16.935Z","dependency_job_id":"638c24f5-b087-46f4-98a0-9c38a2bc3631","html_url":"https://github.com/milosz275/pico-led-controller","commit_stats":null,"previous_names":["mldxo/pico-led-controller","milosz275/pico-led-controller"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milosz275%2Fpico-led-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milosz275%2Fpico-led-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milosz275%2Fpico-led-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milosz275%2Fpico-led-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/milosz275","download_url":"https://codeload.github.com/milosz275/pico-led-controller/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248532111,"owners_count":21119865,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chroma","hue","pico-sdk","pico-w","rainbow","raspberry-pi-pico"],"created_at":"2024-11-07T11:14:18.644Z","updated_at":"2026-01-30T09:18:58.350Z","avatar_url":"https://github.com/milosz275.png","language":"C","funding_links":["https://github.com/sponsors/mldxo","https://buymeacoffee.com/mldxo"],"categories":[],"sub_categories":[],"readme":"# Pico LED Controller\n\n[![Build](https://github.com/milosz275/pico-led-controller/actions/workflows/cmake.yml/badge.svg)](https://github.com/milosz275/pico-led-controller/actions/workflows/cmake.yml)\n[![CodeQL](https://github.com/milosz275/pico-led-controller/actions/workflows/codeql.yml/badge.svg)](https://github.com/milosz275/pico-led-controller/actions/workflows/codeql.yml)\n[![Doxygen Pages](https://github.com/milosz275/pico-led-controller/actions/workflows/doxygen-pages.yml/badge.svg)](https://github.com/milosz275/pico-led-controller/actions/workflows/doxygen-pages.yml)\n\n![Logo](assets/logo.jpg)\n\nRaspberry Pi Pico W LED Controller is a simple example of how to manage a WS2812B LED strip using state buttons and a web interface. The project is based on the Raspberry Pi Pico SDK. The web interface is served by the Raspberry Pi Pico W itself.\n\n- [GitHub repository](https://github.com/milosz275/pico-led-controller)\n- [Doxygen documentation](https://milosz275.github.io/pico-led-controller/)\n\n## Table of contents\n\n- [Features](#features)\n- [Hardware](#hardware)\n- [Software](#software)\n  - [Build](#build)\n- [Web interface](#web-interface)\n  - [Compile](#compile)\n  - [Install](#install)\n- [Usage](#usage)\n- [License](#license)\n- [References](#references)\n\n## Features\n\n- [x] WS2812B LED strip controller\n- [x] IRQ based light state buttons handling\n- [x] Wi-Fi connection\n- [x] Web interface light state control\n- [x] NTP time synchronization\n\n### Modes\n\n- [x] Rainbow Wheel\n- [x] Rainbow Cycle\n- [x] Static Color\n- [x] Breathing\n- [x] Flashing\n- [ ] Wave\n- [ ] Fade\n\n### Colors\n\n- [x] Red\n- [x] Green\n- [x] Blue\n- [x] Cyan\n- [x] Yellow\n- [x] Pink\n- [x] Magenta\n- [x] Purple\n- [x] Orange\n- [x] Turquoise\n- [x] White\n\n## Hardware\n\n- Raspberry Pi Pico W\n- WS2812B LED strip\n- 5V power supply/supplies\n\nFor 120 LEDs to power, you will need a 5V power supply with at least 6A current. The power supply should be connected to the LED strip and the Raspberry Pi Pico W. For this project, two 5V 3A power supplies were used. General schema is shown below:\n\n![Schema](assets/schema.png)\n\n## Software\n\nThe code is written in C and follows `src, include` structure. The project is based on the Raspberry Pi Pico SDK and FreeRTOS.\n\n### Build\n\nThis project connect `pico-sdk` and `pico-extras` as submodules into the `lib` directory.\n\nFor the project to build, you will need the following packages:\n\n```bash\nsudo apt-get update\nsudo apt-get install -y cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential\n```\n\nThere is gitignored Wi-Fi credentials file to create in following directory `led_controller/include/wifi_credentials.h`:\n\n```c\n#ifndef _WIFI_CREDENTIALS_H\n#define _WIFI_CREDENTIALS_H\n\n#define WIFI_SSID \"wifi_ssid\"\n#define WIFI_PASSWORD \"wifi_password\"\n\n#endif\n```\n\nInitialize the submodules:\n\n```bash\ncd lib/pico-sdk\ngit submodule update --init\n```\n\nTo build the project, run:\n\n```bash\nmkdir build\ncd build\ncmake ..\nmake\n```\n\nBuilt `LedController.uf2` file can be found in the `build/led_controller` directory.\n\nBefore flashing the Raspberry Pi Pico W, connect the LED strip to the GPIO pin set in `led_controller/include/led_controller.h` and power it according to instructions in previous paragraphs. The LED strip should light up with the default mode `Rainbow Wheel`.\n\n## Web interface\n\nThe web interface is a simple page that allows you to control the LED strip. It is served by the Raspberry Pi Pico W itself. Data fetch intervals are set to 5 seconds to avoid overloading the Pico W. Start timestamp is created by the server although counting elapsed is fully client-sided.\n\n![Web interface](assets/web_interface.png)\n\n### Compile\n\n\u003e [!NOTE]\n\u003e Building the frontend separately with Python is an older practice. This could be avoided using CMAKE.\n\u003e\n\nTo build the web interface, simply run:\n\n```bash\npython3 makefsdata.py\n```\n\n### Install\n\nIf you will be using the web interface locally, you don't need https to install the app. In Chrome, resolve `chrome://flags/#unsafely-treat-insecure-origin-as-secure` and your's Pico W IP address. Restart the browser and [manifest.json](https://github.com/milosz275/pico-led-controller/blob/main/led_controller/public/manifest.json) will allow for the install. Then, Chrome flag can be set back to default.\n\n## Usage\n\nAfter building the project, you can flash the Raspberry Pi Pico W with the generated `led_controller.uf2` file obtained from `build/led_controller/src` directory. The LED strip should light up with the default mode `Rainbow Wheel`. You can change the color by choosing one of the buttons on the web interface. When connecting to the Wi-Fi for the first time, check the serial output for the IP address.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](https://github.com/milosz275/pico-led-controller/blob/main/LICENSE) file for details.\n\n## References\n\n- [pico-sdk](https://github.com/raspberrypi/pico-sdk)\n- [pico-examples](https://github.com/raspberrypi/pico-examples)\n- [makefsdata.py](https://github.com/krzmaz/pico-w-webserver-example/pull/1/files/4b3e78351dd236f213da9bebbb20df690d470476#diff-e675c4a367e382db6f9ba61833a58c62029d8c71c3156a9f238b612b69de279d)\n- [powering ws2812b](https://www.temposlighting.com/guides/power-any-ws2812b-setup)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmilosz275%2Fpico-led-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmilosz275%2Fpico-led-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmilosz275%2Fpico-led-controller/lists"}