adafruit-playground.com
@adafruit-playground.com
Pyboom - A game for the Fruit Jam
Pyboom - A game for the Fruit Jam
Py-Boom Py-Boom is a fast-paced, 8-bit-style arcade game written in CircuitPython for the Adafruit Fruit Jam and other compatible display boards. This game is a modern take on a classic "catcher" formula, featuring both a single-player mode against an AI and a competitive two-player versus mode. Game Modes At the title screen, you can select your game mode: 1-Player Mode: You control the Bucket (P1) at the bottom of the screen. An AI-controlled Bomber moves at the top, dropping bombs at an increasing rate. Your goal is to catch as many bombs as possible to survive the level. 2-Player Mode: Player 1 controls the Bucket, and Player 2 controls the Bomber. P1's goal is to survive, while P2's goal is to drop bombs strategically to make P1 miss. How to Play P1 (Bucket) - The Catcher Goal: Catch every bomb that is dropped. If you miss a bomb, you lose one of your buckets (lives). If you lose all three, the game is over. Winning: If you (P1) successfully catch all bombs in a level (e.g., 10 bombs in Level 1), you win the round and advance to the next, more difficult level. P2 (Bomber) - The Attacker Goal: Make P1 miss! You have a limited number of bombs per level. Use your movement and timing to drop bombs where P1 isn't. Winning: If you (P2) successfully make P1 lose all three of their buckets, you win the game! Controls Action Player 1 (Bucket) Player 2 (Bomber) Move Left A key Left Arrow key Move Right D key Right Arrow key Drop Bomb N/A Down Arrow key Start / Ready Space bar Enter key Other Controls Select Mode: On the title screen, press the 1 or 2 key. Restart Game: On the "Game Over" screen, press the R key to return to the title screen. Required Files To run this game, you will need the following files on your CircuitPython device: code.py: The main game code. The Fruit Jam OS library package.  pyboom.bmp: The title screen logo. bomb_icon.bmp: The bomb sprite icon (used in development). Download at: Pyboom Git Hub     Background This project was started on Microsoft Make Code for my Pygamer and was called Prison Break. With the introduction of the Fruit Jam I wanted to port this over to Circuit Python. The graphics in Make Code (MC) are saved in a TypeScript file so I had to copy the codes for the sprites over to my Circuit Python. I used the AI tools that are part of Visual Studio Code (VS) the develop functions to map the sprites maps into bitmaps and tile grids. I continued to use the AI tools to help convert the Python code from MC. I mostly used Gemini as I have 3 months of premium from purchasing my phone. Though there were times where Gemini would get stuck on fixing issues it was making so I would switch to the free tokens in VS and use Claude or Chat-GPT. I ran out of free tokens in VS and moved on to Gemini for versions 2 and 3 of the game. I am in the process of uploading my prompts that I still have access to (I lost my VS conversations :( ) and hope to have them done in the next week. I also hope to get controllers setup and maybe make paddle controllers in the future. I found this a fun project to learn Circuit Python and coding with AI. I'm still learning the concepts of using classes and learned a lot while looking at the errors the AI was coming up with.
adafruit-playground.com
November 14, 2025 at 10:50 PM
Fizzgig
Fizzgig
I built Fizzgig and would like to share a few notes on my build (made in October 2025). I hope that this is helpful to anyone attempting to build it as well. I had a lot of fun building it! Speaker I tried using an external speaker connected with the headphone jack cable. It turned out that this speaker is not deactivated when no sound is played, and it produces very loud white noise (this happens with any speaker connected via this connection). Thankfully, the Adafruit support team reproduced this, and it seems that this behaviour cannot be resolved. So I went along with the oval mini speaker that is connected to the board via PicoBlade. To improve its sound a little, I attached the speaker to a Tic Tac box as a resonator, which worked quite well. Servo / Jaw I used lots of hot glue to attach all the hair, so the jaw became rather heavy. I attached some cardboard to the jaw to stabilise it, but this was not enough to support the weight. As a result, the jaw would not close properly. To resolve this, I stabilised the jaw with ice cream sticks. I also extended the servo horn with a piece of carbon tube. I could securely fix this to the servo horn using heat shrink tube with hot glue. My extended servo horn ends in a grommet made out of another piece of carbon tube with a larger diameter that I glued to the jaw. This makes the placement of the servo a lot easier and the connection more stable. I thought about also adding a spring taken out of a retractable pen to the servo horn extension to help the servo along. In my build, this was not possible to integrate, but there may be setups where adding a spring is possible and makes sense. Since I could not use a spring, I added a counterweight in the part where the servo horn ends. I glued in a screw and added two nuts for added weight. This helps the servo along. Code I used the UF2 file provided in the instruction. I would have liked to change the code to reduce the jaw opening angle (this would have enabled me to use a spring). Adafruit support pointed me to the code, and I was able to identify the place where the servo angles are defined. In my current Arduino IDE, the code would compile successfully, and the IDE even told me that the code had been successfully transferred to the board. However, CIRCUITPY was still visible as a drive after this supposedly successful transfer, and I had to re-upload the original UF2 file to go back to that version. I re-tried with several different methods, but I was not able to make the compiled code transfer to the board successfully. This may be due to my inability, since I am not very experienced using microcontrollers at all. If you are planning to alter the code, do check if it works for you before making your build. Wig It makes a lot of sense to buy a wig with really long hair. The instructions advise to cut off the hair along the longest section. I did this, but it would have made more sense to plan ahead to first check where the nose will go. Most hair under the nose will not be needed, as that's where the mouth goes. Depending what your particular wig looks like, it may be better to keep the long hair in the back and trim under the nose.  Also, the hair will be all over the place when you're done. I styled my Fizzgig's hair with transparent lacquer from a spray can. This was necessary especially around the eyes and the nose. Frame I built a wooden frame for my Fizzgig. I had originally used a cardboard box, but for more stability I replaced it with a wooden frame that basically had the same dimensions. My frame is about 31 x 18 x 10 cm. The required dimensions very much depend on the size of the wig and the length of the hair.
adafruit-playground.com
October 24, 2025 at 3:41 PM
Reviving My Netduino 2 (without the .Net MF)
Reviving My Netduino 2 (without the .Net MF)
The Netduino series of boards have been around for several decades and saw a limited level of success for the first decade or so. However, as a development ecosystem they haven't stood the test of time. The original development toolchain has gone into abandonment and been archived. But as a hardware platform, they are a still great boards, especially the Netduino 2 and later, with fully supported mainstream processors. You might not be able to use .Net or C#, but with toolsets from Arduino and STMicroelectronics you can still create amazing things with these easy-to-use Arduino compatible boards. Don't throw them away! The notes below describe how I rediscovered their usefulness, albeit with a different set of tools. Some History I've had two Netduino 2's sitting in my electronics box for years, more years than I'm willing to admit. During that time, I'd done very little with them. When I originally bought them, Visual Studio was my daily development environment, and I knew my way around it quite well. I'd tinkered for a bit with an Arduino, but I was eager to use .Net and Visual Studio on this new device. I did build a few things with them, but frankly they didn't grab my interest and at the time, the much more powerful Raspberry Pi was drawing my attention away. So, these boards were relegated to the back of my toolbox. They seemed to be pretty content there, and I kept them cool and dry, so we were all happy for the time being.
adafruit-playground.com
August 1, 2025 at 4:43 PM
AIO-Connected Workshop Thermal Camera
AIO-Connected Workshop Thermal Camera
An Adafruit IO - connected, CircuitPython remote thermal camera. Project Objective To observe thermal conditions out in my remote laboratory (i.e., the workshop bench in the detached garage), I previously installed an Adafruit IO (AIO) connected corrosion monitoring system that watches conditions inside and outside of the garage. The corrosion monitor consists of an interior temperature/humidity sensor and, thanks to AIO Plus, correlates with exterior weather conditions. However, from the temperature/humidity sensor's perspective, if a door or window is left open it takes far too long to detect the issue. It would be ideal to be able to "see" if a relatively small area inside the workshop has experienced a temperature change relative to the bulk of the air in the space. An added benefit would be to detect human motion in the workshop area or to discover if the soldering iron was accidentally left on. Requirements Periodically capture and upload a thermal image of a critical portion of the workshop. Monitor for temperature extremes and upload an image when exceeded. Detect human motion and upload an image. Provide a local color display with automatic brightness control. Continuously update the local display image at least twice a second to quickly detect motion and respond to thermal events. Upload the captured thermal image on a remotely accessible AIO dashboard page via the local WiFi network. Upload bitmap image payload to AIO in less than 10 seconds. Power from a USB 5-volt wall wart. Future and Nice-to-Have Blank the screen when motion has not been detected for a preset amount of time (screen saver). SD Card storage of images and temperature statistics with historical view UI. Trigger AIO notification events related to motion or alarm settings. Upload minimum, average, maximum temperature values with image; display on dashboard. Interface to Apple HomeKit. Capture local audio. Live MEMENTO photo overlay. To speed up prototyping and algorithm development, CircuitPython was the choice for the software side of things. Besides, the code needed for creating images with a thermal camera and for reliable communication with AIO already exists in other projects that I've recently developed.
adafruit-playground.com
July 11, 2025 at 5:43 PM
GPS Tracker Coding in CircuitPython - Going Down the AI Rabbit Hole
GPS Tracker Coding in CircuitPython - Going Down the AI Rabbit Hole
The Idea I've lately been dabbling with AI coding assistance and have been impressed with what it can do. So, I thought I'd do a whole project from scratch using several boards I have been meaning to do something with. I thought I'd also take you all on the journey and maybe you will find this useful. I will use this Playground article to document the process. I will go through the components and assembly, list the prompts I used with the AI tool to build the code, and share what value this new tool gives me.  The Build The project is a GPS tracker. In a nutshell a GPS module, an OLED display and an AdaLogger board. Here are the components I used: Design Choices I chose these components for simplicity. Choosing an AdaLogger for the microprocessor gives me an SD card to log the output and gives me one Neopixel, a separate LED I can use as an indicator and an extra input button with board.BUTTON. The OLED display, although small (128x32), can convey a lot of information if done well, plus it gives me three input buttons for controls. The GPS board just works well with little effort.   Assembly Since the Feather ecosystem is perfectly modular, assembly was simple: Solder headers on to the microprocessor, GPS FeatherWing and the OLED FeatherWing Solder the sockets on to the Feather Tripler Prepare the AdaLogger by inserting a formatted SD card and attach the LiPo battery to the connector.  Insert a coin cell into the GPS module Plug the three boards into the Tripler - I used a couple of rubber bands and a small piece of foam on the bottom to hold it all together That's all there is to it! With that - we are (almost) ready to code.
adafruit-playground.com
July 11, 2025 at 5:42 PM
Sword of Shannara on Microbit
Sword of Shannara on Microbit
I enjoy programming little projects on the Microbit and CircuitPlayground because I find it easy to work on them "on the go"! This project meant I was able to start working on a computer, then continue the initial Makecode work using the iOS Makecode app - saving work to Github when switching from PC to phone and back. It came about because I recently was reading through the Shannara stories, and that lead me to come up with some Microbit programs for this simple "Sword of Shannara" game in python and Makecode. This is a vastly (!) simplified version of the classic fantasy "The Sword of Shannara." Github Repository Here Screen above shows "you," representing the hero, Shea Ohmsford, who is searching for the Sword of Shannara. You move left/right through a scrolling landscape (100 cells wide) displayed on the 5x5 LED micro:bit screen. Overhead are dots that represent the "Skull Bearers" (think Tolkien's Nazgul). If you delay when one is overhead, it will attack and you can lose one of your five lives. So either move past quickly, or hit A+B to unleash the Elfstones to eliminate the Skull Bearer. Faint dots along the bottom of the "screen" represent landscape and serve to show your movement left/right. Somewhere in the middle of the 100-element landscape is the "Sword" represented by three lit pixels.
adafruit-playground.com
June 27, 2025 at 2:50 PM
Countdown Complete: It's finally here! 🎉 Upgraded Actions on IO - How to do Math(ematics)
Countdown Complete: It's finally here! 🎉 Upgraded Actions on IO - How to do Math(ematics)
Blockly has been slowly worming it's way into Adafruit IO, with a first edition replicating the old Action forms. Now the latest release brings the wealth of features we've been dreaming of, allowing great complexity! Will you be the first to bring down the house of cards/servers? Let us know in the forums if you do (or run into other issues)! Let's start off with something simple, how to subtract one from a feed value (as a countdown)... We'll explore a quick yet complex multi-action example, changing LED colour based on air quality, and additionally a Utility Light mode using the onboard button to request 30seconds of Bright White Light (useful in a kitchen). Setup a Wippersnapper device Adafruit IO has a devices page, which shows the special "Wippersnapper" devices, these run the arduino firmware that allows wifi connected boards to easily connect and configure components (inputs/outputs/sensors) with no code. Each component then has associated feeds for interacting with, so using the on board button becomes child's play. Install wippersnapper, you're best off finding the learn guide for your board and then locate the Wippersnapper pages. Alternatively there is a quick start guide, or just do the usual hacky thing and have a go with no prior knowledge... Visit this link (https://io.adafruit.com/devices/new) when signed in to be taken to the New Device setup page, then select your board and follow the onscreen instructions. (You need an IO page open when the board first connects to accept the registration request).
adafruit-playground.com
May 1, 2025 at 3:34 PM
The Many Possibilities of Adafruit IO Actions and an Arcade Button
The Many Possibilities of Adafruit IO Actions and an Arcade Button
Overview As we get closer to launching the new Adafruit IO Actions, it has been fun thinking of the many fun ways it can be used. Here is a really simple project that has a ton of potential without writing a single line of code. With this project, I simply added a NeoPixel to a simple arcade button (using the below Learn guide), and then use that LED and button to communicate information in different ways. The more I play around with this project, the more ideas I come up with. So be sure to check back here often as I will post more ideas as I come up with them. Parts Used I used the NeoPixel Mini Button as shown in the guide above, but used the QT Py ESP32-S3 board with the NeoPixel BFF to drive the NeoPixel, then just soldered one side of the button to 3V on the QT Py, and the other side of the button to A2. You could also simply skip modifying the arcade button, and just use the built in NeoPixel on the QT Py. You could even just use the built in pushbutton on the QT Py and skip the Arcade Button all together. This guide isn't so much about the specific project, as it is about the possibilities of the new Adafruit IO Actions. You can set this up with any NeoPixel and button. With that in mind, here are the products I used:
adafruit-playground.com
April 21, 2025 at 11:13 AM
Adafruit Memento Time-lapse w/ online upload & email notification
Adafruit Memento Time-lapse w/ online upload & email notification
Adafruit Memento Time-lapse Camera with Online Upload and Email Notification This guide shows how to turn your Adafruit Memento (ESP32-S3) board into a time-lapse camera that: - Captures images on a schedule or with a button press - Uploads them to Adafruit IO over Wi-Fi - Triggers email notifications using a feed - All using CircuitPython and the PyCamera library! What You Need - Adafruit Memento Board: https://www.adafruit.com/product/5843 - microSD card (optional, for GIF recording) - USB-C cable - Wi-Fi network - Adafruit IO account: https://io.adafruit.com - CircuitPython is installed on the Memento Setup 1. Installing CircuitPython To install CircuitPython on the Adafruit Memento, I followed this official guide by Anne Barela and John Park: 🔗 [Memento Camera Quick Start Guide – Install CircuitPython](https://learn.adafruit.com/memento-camera-quick-start-guide/install-circuitpython) That page walks you through how to: - Put the board into bootloader mode (double-tap reset) - Drag the `.uf2` file onto the board - Verify that the **CIRCUITPY** drive appears Make sure you use **CircuitPython 9.0.0 or later** to avoid filesystem corruption issues. 2. Install Libraries - adafruit_io  - adafruit_requests.mpy   - adafruit_ntp.mpy - adafruit_logging.mpy  - adafruit_pycamera   - adafruit_ov5640   - adafruit_connection_manager.mpy   - gifio.mpy   - bitmaptools.mpy   - ulab (folder) 3. Create settings.toml file on CIRCUITPY with this: CIRCUITPY_WIFI_SSID = "YourNetworkName" CIRCUITPY_WIFI_PASSWORD = "YourNetworkPassword" ADAFRUIT_AIO_USERNAME = "your_username" ADAFRUIT_AIO_KEY = "your_aio_key" 4. Main Code Paste the following into code.py on your CIRCUITPY drive: What I did - I used the fancy camera CircuitPython code by Anne Barela and John Park, and the Doorbell Camera code by Brent Rubell to help create the code above.  - My main focus was to get photos uploaded to Adafruit IO with the timelapse and camera shutter options. How It Works - The camera connects to Wi-Fi and Adafruit IO - Takes snapshots using the shutter button or on a time-lapse interval - Encodes image data as base64 and uploads to Adafruit IO feed - Sends a "trigger" signal to another feed to notify you via email 5. Set up Feeds on Adafruit IO - Go to io.adafruit.com - Click on the tab 'IO' - Go to Feeds and create two. I set up a 'camera' feed and a 'camera-trigger' feed. - The "camera" feed will take photo uploads, and the "camera-trigger" feed gets a 1 or 0; this is used to trigger an automated email action.
adafruit-playground.com
April 3, 2025 at 9:29 PM
Zephyr Quest: SWD Pogo Adapter for CLUE
Zephyr Quest: SWD Pogo Adapter for CLUE
Overview
adafruit-playground.com
February 18, 2025 at 5:36 PM
Zephyr Quest: Feather RP2350 Board Def
Zephyr Quest: Feather RP2350 Board Def
Overview
adafruit-playground.com
February 11, 2025 at 2:34 PM