{"id":15061520,"url":"https://github.com/zyltr/asynchronous-neopixel","last_synced_at":"2026-01-02T10:40:29.403Z","repository":{"id":257050821,"uuid":"856120174","full_name":"zyltr/asynchronous-neopixel","owner":"zyltr","description":"A MicroPython project demonstrating how to control NeoPixel LEDs asynchronously","archived":false,"fork":false,"pushed_at":"2024-09-14T02:40:13.000Z","size":11016,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T02:14:49.830Z","etag":null,"topics":["adafruit-neopixel","asyncio","micropython","neopixel","pico","raspberry-pi-pico","rgb","rgbw"],"latest_commit_sha":null,"homepage":"","language":"Python","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/zyltr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2024-09-12T02:55:28.000Z","updated_at":"2024-09-14T02:40:16.000Z","dependencies_parsed_at":"2024-09-14T15:57:12.452Z","dependency_job_id":null,"html_url":"https://github.com/zyltr/asynchronous-neopixel","commit_stats":null,"previous_names":["zyltr/asynchronous-neopixel"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zyltr%2Fasynchronous-neopixel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zyltr%2Fasynchronous-neopixel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zyltr%2Fasynchronous-neopixel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zyltr%2Fasynchronous-neopixel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zyltr","download_url":"https://codeload.github.com/zyltr/asynchronous-neopixel/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243723073,"owners_count":20337303,"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":["adafruit-neopixel","asyncio","micropython","neopixel","pico","raspberry-pi-pico","rgb","rgbw"],"created_at":"2024-09-24T23:20:52.521Z","updated_at":"2026-01-02T10:40:29.368Z","avatar_url":"https://github.com/zyltr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pi Pico Asynchronous NeoPixels\n\n![Breadboard Schematic](./assets/pico-asynchronous-neo-pixels.svg \"Breadboard Schematic\")\n\n## Overview\n\nThis demonstration shows how to use a Raspberry Pi Pico to control various\naspects of a bar, ring, or strip of NeoPixels using common controls such as buttons.\nSpecifically, how to adjust the brightness, timing, and effect of the connected NeoPixels.\n\n### Resources\n\nThe following resources were instrumental to this project\n\n[Adafruit NeoPixel Überguide](https://learn.adafruit.com/adafruit-neopixel-uberguide/python-circuitpython)  \n[Micropython Asyncio](https://github.com/peterhinch/micropython-async/blob/master/v3/docs/TUTORIAL.md)\n\n## Prerequisites\n\nBefore you begin, ensure you have these, or similar parts, nearby:\n\n- [Raspberry Pi Pico](https://www.digikey.com/en/products/detail/raspberry-pi/SC0915/13624793)\n- [Adafruit NeoPixels Stick](https://www.digikey.com/en/products/detail/adafruit-industries-llc/1426/5395892)\n- [Adafruit Colorful Buttons](https://www.digikey.com/en/products/detail/adafruit-industries-llc/1010/7244937)\n\n***Pi Pico W can also be used***  \n***Any Adafruit NeoPixel component should be usable. I used a stick for simplicity***\n\n## Setup\n\n### Preparing Pico\n\nInstall version **Micropython 1.23.0**, or later, onto the device. This example uses methods of the ***deque*** class\nthat may not exist in earlier versions.\n\n[Installing Micropython](https://www.raspberrypi.com/documentation/microcontrollers/micropython.html)\n\n### Connecting Components\n\n![Breadboard Schematic](./assets/pico-asynchronous-neo-pixels.svg \"Breadboard Schematic\")\n\nConnect everything as above in the *Fritzing* diagram, if using linked components. You may need to solder header pins\nto the NeoPixels to connect to a breadboard. If this is not possible, then alligator cables\nshould suffice.\n\n### Modifying Source Code\n\nIf you choose to use NeoPixel's that are `RGBW`, instead of `RGB`, then one small change in the source\ncode is required for optimal operation\n\nInside `hardware.py`, change the value of the `__RGB` variable in the `Output` class to `False`\n\n```python\nclass Output:\n    ___RGB = False  # Only False if using RGBW NeoPixels\n```\n\n### Uploading Source Code\n\nUpload all the required files to Pi Pico's root directory.\n\n`lib/`  \n`hardware.py`  \n`lighting.py`  \n`main.py`\n\nThis can be easily accomplished using the application `Thonny`, or other tools such as\n`mpremote` or `rshell`.\n\n*The `lib/` directory is especially important since it contains modules used by the demonstration.*\n\n### REPL\n\nIf everything went well, interacting with the device should produce similar output into the terminal:\n\n![REPL Demo](./assets/repl-demo.png \"REPL Demo\")\n\nA live demonstration can be seen below:\n\n[![Live Demo](./assets/thumbnail.jpg \"Thumbnail\")](./assets/demo.mp4)\n\n## Troubleshooting\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzyltr%2Fasynchronous-neopixel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzyltr%2Fasynchronous-neopixel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzyltr%2Fasynchronous-neopixel/lists"}