# Blinka Says Tabletop Arcade Game

## Overview

https://www.youtube.com/watch?v=-2eIgnUcZ3Q

Blinka Says is a Simon style game, implemented in CircuitPython. The project aims to be a fun-to-play game that can also serve as another practical example of&nbsp;[Cooperative Multitasking](https://learn.adafruit.com/cooperative-multitasking-in-circuitpython-with-asyncio "Cooperative Multitasking with Asyncio Guide") with `asyncio`.

It's designed to run on a Feather ESP32-S3 TFT or the S2 TFT variation. The display is used to show the current and high scores. The 4 LED Arcade buttons are connected with aligator clip jumper cables.

The microcontroller, buttons, and LEDs all connect together with the help of a perma-proto breadboard that has female header soldered to it. This allows for easy disassembly and re-use of the primary components if you'd like. Or you could solder everything to the perma-proto if you want to make it permanent.

## Parts
Featured
### Adafruit ESP32-S3 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT

[Adafruit ESP32-S3 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT](https://www.adafruit.com/product/5483)
We've got a new machine here at Adafruit, it can uncover your deepest desires. Don't believe me? I'll turn it on right now to prove it to you! What, you want your very own soft serve ice cream machine? OK well, that's not something we can provide. But we can provide your...

Out of Stock
[Buy Now](https://www.adafruit.com/product/5483)
[Related Guides to the Product](https://learn.adafruit.com/products/5483/guides)
![Top view of a purple rectangular microcontroller with a color TFT screen and powered by an ESP32-S3 chip. It is also connected to a Li-Poly battery and a lux sensor breakout. The TFT display reads in colored text: "Adafruit Feather
ESP32-S3 TFT Demo
Battery: 3.8V / 45%
I2C: 0xB, 0x10, "](https://cdn-shop.adafruit.com/640x480/5483-06.jpg)

or

Featured
### Adafruit ESP32-S2 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT

[Adafruit ESP32-S2 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT](https://www.adafruit.com/product/5300)
We've got a new machine here at Adafruit, it can uncover your deepest desires. Don't believe me? I'll turn it on right now to prove it to you! What, you want unlimited mozzarella sticks? OK well, that's not something we can provide. But we can provide your...

Out of Stock
[Buy Now](https://www.adafruit.com/product/5300)
[Related Guides to the Product](https://learn.adafruit.com/products/5300/guides)
![Adafruit ESP32-S2 TFT Feather powered on by a USB- C power source displaying the product tittle in a red, yellow, green, white and blue. ](https://cdn-shop.adafruit.com/640x480/5300-06.jpg)

Featured
### Small Alligator Clip to Male Jumper Wire Bundle - 12 Pieces

[Small Alligator Clip to Male Jumper Wire Bundle - 12 Pieces](https://www.adafruit.com/product/3255)
For bread-boarding with unusual non-header-friendly surfaces, these cables will be your best friends! No longer will you have long strands of alligator clips that are grabbing little wires. These compact jumper cables have a premium male header on one end, and a grippy mini alligator clip on...

In Stock
[Buy Now](https://www.adafruit.com/product/3255)
[Related Guides to the Product](https://learn.adafruit.com/products/3255/guides)
![ Bundle of Small Alligator Clip to Male Jumper Wires](https://cdn-shop.adafruit.com/640x480/3255-02.jpg)

Featured
### Adafruit Perma-Proto Half-sized Breadboard PCB - Single

[Adafruit Perma-Proto Half-sized Breadboard PCB - Single](https://www.adafruit.com/product/1609)
Customers have asked us to carry basic perf-board, but we never liked the look of most basic perf: it's always crummy quality, with pads that flake off and no labeling. Then we thought about how people **actually** prototype - usually starting with a solderless breadboard and...

In Stock
[Buy Now](https://www.adafruit.com/product/1609)
[Related Guides to the Product](https://learn.adafruit.com/products/1609/guides)
![Angled Shot of the Adafruit Perma-Proto Half-sized Breadboard PCB - Single](https://cdn-shop.adafruit.com/640x480/1609-03.jpg)

Featured
### Arcade Button with LED - 30mm Translucent Green

[Arcade Button with LED - 30mm Translucent Green](https://www.adafruit.com/product/3487)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have&nbsp; **LEDs built right in!** &nbsp;That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3487)
[Related Guides to the Product](https://learn.adafruit.com/products/3487/guides)
![Video of 30mm translucent green LED arcade button flashing on and off.](https://cdn-shop.adafruit.com/product-videos/640x480/3487-00.jpg)

Featured
### Arcade Button with LED - 30mm Translucent Yellow

[Arcade Button with LED - 30mm Translucent Yellow](https://www.adafruit.com/product/3488)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have&nbsp; **LEDs built right in!** &nbsp;That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3488)
[Related Guides to the Product](https://learn.adafruit.com/products/3488/guides)
![Video of 30mm translucent yellow LED arcade button flashing on and off.](https://cdn-shop.adafruit.com/product-videos/640x480/3488-03.jpg)

Featured
### Arcade Button with LED - 30mm Translucent Red

[Arcade Button with LED - 30mm Translucent Red](https://www.adafruit.com/product/3489)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have&nbsp; **LEDs built right in!** &nbsp;That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3489)
[Related Guides to the Product](https://learn.adafruit.com/products/3489/guides)
![Video of 30mm translucent red LED arcade button flashing on and off.](https://cdn-shop.adafruit.com/product-videos/640x480/3489-03.jpg)

Featured
### Arcade Button with LED - 30mm Translucent Blue

[Arcade Button with LED - 30mm Translucent Blue](https://www.adafruit.com/product/3490)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have&nbsp; **LEDs built right in!** &nbsp;That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3490)
[Related Guides to the Product](https://learn.adafruit.com/products/3490/guides)
![Video of 30mm translucent blue LED arcade button flashing on and off.](https://cdn-shop.adafruit.com/product-videos/640x480/3490-03.jpg)

Featured
### Header Kit for Feather - 12-pin and 16-pin Female Header Set

[Header Kit for Feather - 12-pin and 16-pin Female Header Set](https://www.adafruit.com/product/2886)
These two&nbsp; **Female&nbsp;Headers** &nbsp;alone are, well, lonely. But pair them with any of our&nbsp;[Feather](https://www.adafruit.com/categories/777)&nbsp;boards and you're in business!

What do they do? They get soldered on either side of the Feather...

In Stock
[Buy Now](https://www.adafruit.com/product/2886)
[Related Guides to the Product](https://learn.adafruit.com/products/2886/guides)
![Angled shot of a Header Kit for Feather - 12-pin and 16-pin Female Header Set. ](https://cdn-shop.adafruit.com/640x480/2886-00.jpg)

# Blinka Says Tabletop Arcade Game

## Project Setup

Are you new to using CircuitPython? No worries,&nbsp;[there is a full getting-started guide here](https://learn.adafruit.com/welcome-to-circuitpython "Welcome to CircuitPython").

Plug the Feather TFT&nbsp; into your computer with a known good USB cable (not a charge-only cable). The Feather TFT will appear to your computer in File Explorer or Finder (depending on your operating system) as a flash drive named&nbsp; **CIRCUITPY**. If the drive does not appear, you can&nbsp;[install CircuitPython](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython)&nbsp;on your Feather TFT and then return here.

Download the project files with the Download Project Bundle button below.&nbsp;Unzip the file and copy/paste the&nbsp; **code.py** &nbsp;and other project files to your&nbsp; **CIRCUITPY** &nbsp;drive using File Explorer or Finder (depending on your operating system).

## Drive Structure

After copying the files, your drive should look like the listing below. It can contain other files as well, but must contain these at a minimum:

![Project](https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/folder-images/Feather_TFT_Blinka_Says.png?raw=true )

## Code

The **code.py** file for the project is shown below:

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Feather_TFT_Blinka_Says/code.py

# Blinka Says Tabletop Arcade Game

## Wire It Up

## Reversible Construction Option

I like to re-use project components in future projects when possible instead of committing them permanently to a single project. I opted to use a proto-breadboard with female headers soldered to it for the Feather TFT, and for all of the button and LED connections. That, along with the alligator clip jumpers used to connect the buttons makes this project easy to take back apart and re-use the primary components.

If you are less concerned with committing your parts to a permanent project you could easily just solder wires connecting the buttons, LEDs, and proto-breadboard together. You could also solder the feather to the proto-breadboard if you'd like.

## Prepare the Arcade Buttons

The arcade buttons come with 4 total connection points on their bottom side:

- LED Power
- LED GND
- Button IO
- Button GND

We can save ourselves the need for running all 4 wires if we tie the button GND and LED GND together. Then we'll just need a single GND wire, plus the LED power and the Button IO for a total of 3 wires to each button.

Connect the GNDs by soldering a small piece of stiff copper wire between the Button GND and the LED GND.

Use a multimeter, and if needed a low voltage power source to confirm the proper connection points for GND. If you accidentally tie together any two pins besides the two GNDs the circuit will not function properly!

![gaming_GND_tie.png](https://cdn-learn.adafruit.com/assets/assets/000/132/213/medium640/gaming_GND_tie.png?1725913659)

![](https://cdn-learn.adafruit.com/assets/assets/000/132/215/medium800/gaming_button_gnds_done.png?1725913875)

## Fritzing Diagram

This diagram shows the wiring needed for the project. In this diagram the wires are color coded to match the buttons, i.e. the green wires in this diagram are meant to go to the green arcade button and it's LED. Each arcade button also needs a GND connection, which is represented in the diagram by black wires.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/206/medium800/gaming_circuit_fritzing.png?1725908389)

## Pin Connections

The buttons need to be wired to the microcontroller as follows:

- Feather Pin **GND** - Ground rail on the edge of the breadboard
- Feather Pin&nbsp; **A0&nbsp;** - Yellow LED
- Feather Pin **A1** - Green LED
- Feather Pin **A2** - Blue LED
- Feather Pin **A3** - Red LED
- Feather Pin **D5** - Yellow Button
- Feather Pin **D6** - Green Button
- Feather Pin **D9** - Blue Button
- Feather Pin **D10** - Red Button
- Ground rail - Tied **GND** connection on each of the arcade buttons

## Solder Headers

If you do want the build to be mostly reversible then you'll be soldering the following female header pieces to the proto-breadboard:

- Long Feather Header Row - Accessible from the top, soldered on the bottom
- Short Feather Header Row - Accessible from the top, soldered on the bottom
- 4x1 (at least) Header Row for GNDs - Accessible from bottom, soldered on the top. In-line on the ground rail.
- 4x1 (at least) Header Row for LEDs - Accessible from bottom, soldered on the top.
- 4x1 (at least) Header Row for the Buttons - Accessible from bottom, soldered on the top.

_Note that the Feather headers should be accessible from the top of the proto-breadboard. The headers for GND, LEDs, and Buttons are opposite and should be accessible from the bottom of the proto-breadboard.&nbsp;_

I used headers that were a tad longer than necessary, so there are extra solder points visible in the photo that aren't required in order to the project to function. Theoretically they could be used to expand the game to more buttons and LEDs.

The sets of four outlined by green boxes in the photo below are the connections that are absolutely necessary.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/217/medium800/gaming_header_locations.png?1725916125)

_Note that you could shift the headers left or right on the breadboard, you don't need to use the exact same numbered breadboard pins that I did. The important thing is that you align the feather headers correctly relative to the LED and Button header pieces so that the appropriate pins are connected as listed above_

## GND Jumper

Solder a small wire to jump GND on the micro-controller to the ground rail on the outside of the perma-proto breadboard.

The wire itself is on the top of the board, and gets soldered from the bottom.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/219/medium800/gaming_GND_jumper_locations.png?1725916496)

## Alligator Clips To Buttons

The pack of alligator clips available from Adafruit contains 12 connectors which is exactly what we need for this project (3 wires \* 4 buttons). It also contains wires in the colors of yellow, green, blue, and red, the same colors as our buttons. However I opted to use different color wires for LEDs and Buttons in an attempt to more easily keep them straight. To that end, I decided on this color coding scheme for my wires:

- Black & Blue wires are used for GND
- Yellow & Red wires are used for LEDs
- Green & White wires are used for Buttons

Each button needs it's ground, LED, and Button connected respectively to the connectors on the Button and then plugged in to the appropriate female headers on the board.

![gaming_arcade_button_alligators.png](https://cdn-learn.adafruit.com/assets/assets/000/132/220/medium640/gaming_arcade_button_alligators.png?1725917997)

# Blinka Says Tabletop Arcade Game

## Code Explanation

## Cooperative Multitasking With asyncio

The structure of this project's code follows principals discussed in the&nbsp;  
[Cooperative Multitasking in CircuitPython with asyncio](https://learn.adafruit.com/cooperative-multitasking-in-circuitpython-with-asyncio "Cooperative Multitasking with asyncio Learn Guide") Learn Guide. If you haven't already I would recommend that you read through at least the first 3 pages: Overview, Concurrent Tasks, and Communicating Between Tasks in order to gain a foundational understanding of this project's structure.

### Cooperative Multitasking in CircuitPython with asyncio - Overview

[Cooperative Multitasking in CircuitPython with asyncio](https://learn.adafruit.com/cooperative-multitasking-in-circuitpython-with-asyncio)
[Overview](https://learn.adafruit.com/cooperative-multitasking-in-circuitpython-with-asyncio/overview)
## GameState Class

The `GameState` class keeps track of all of the variables needed by the game, and facilitates "communication" between the other tasks by storing variables that each other task can access and update.&nbsp;

It holds following variables:

- `difficulty` - How many blinks there will be in the sequence.
- `led_off_time` - How long the LEDs stay off during a blink.
- `led_on_time` - How long the LEDs stay on during a blink.
- `score` - The player's current score.
- `current_state` - [State Machine](https://learn.adafruit.com/circuitpython-101-state-machines/ "State Machine Learn Guide") variable that controls the games behavior. The possible values are&nbsp;`STATE_WAITING_TO_START`, `STATE_PLAYER_TURN`, and `STATE_BLINKA_TURN`.
- `sequence` - List that holds the current sequence of colors. Colors are represented by the single letters: R, G, B, Y.
- `index` - The current index within the blinking sequence for Blinka's turn.
- `btn_cooldown_time` - A timestamp that will get set to a short time into the future and then used to ignore button presses that occur within the cool down period. It prevents unwanted effects from accidental double presses.
- `highscore` - The high score value, initially read out of NVM storage and then updated if the player manages to beat it.

## Asyncio Tasks

The core logic for the project is comprised of 3 `asyncio` tasks:

- Main Task
- Player Action Task
- Blinka Action Task

The Main Task simply initializes the `GameState` object and launches the other two tasks. The majority of the logic is implemented in the Player Action Task and Blinka Action Task.

Internally both the Player Action Task, and Blinka Action Task use a infinite loop to run forever which include call(s) to `asyncio.sleep()` to let other tasks have a chance to run too.

## Player Action Task

The async function `player_action(game_state)` is the player action task. It's responsible for polling the buttons to determine if the player has pressed any of them, and if so to react as appropriate depending on the current game state and the button that was pressed.

This task checks the current `game_state` in order to decide how to react to button presses. The following states are possible:

- Waiting to Start - If the game was in this state then a button press will cause the "ready set go" blinks to occur and then the game will begin with Blinka's first turn.
- Blinka's Turn - Button presses are ignored during Blinka's turn.
- Players Turn - The game checks if the button that was pressed matches the next color in the sequence, if so the player is awarded a point, and if not the game is over. If the sequence is empty, meaning the player has pressed all buttons correctly, then it goes back to Blinka's turn to blink a new sequence. When the game ends the state becomes Waiting to Start to allow the player to play again with the press of button.

## Blinka Action Task

The async function `blinka_action(game_state)` is the Blinka Action Task. It's responsible for the actions during Blinka's turn.&nbsp;

This task doesn't do anything if the `current_state` is not Blinka's Turn. When it is Blinka's turn the task will randomly generate a sequence if one hasn't been generated already. Then it will loop through the sequence blinking each color LED as it comes up in the sequence.&nbsp;

Once the end of the sequence is reached the `current_state` is changed back to Player's Turn.

## Source Code

The source code is embedded below and has been commented thoroughly with notes describing the purpose for each piece of code.

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Feather_TFT_Blinka_Says/code.py

# Blinka Says Tabletop Arcade Game

## Box & Decoration

![](https://cdn-learn.adafruit.com/assets/assets/000/132/221/medium800/gaming_box.png?1725918220)

The cardboard box that I mounted everything into is an upside-down recycled retail box for frozen burritos. It's dimensions are 10" x 7.25" on the face that is used as the top, and 4.25" deep. There is plenty of room to spare inside and on the top face of the box, the project could certainly be fit into a different-sized box. You are encouraged to recycle a box you have lying around rather than try to match mine exactly.

## Sticker Decoration (Optional)

I printed out and applied a sticker to the bottom of the box which serves as the top of the game play surface when in use.

If your box is a different size, or you'd like it to look different feel free to get creative and design your own artwork then print it onto sticker paper and apply to the box.

[Box Decal PDF](https://cdn-learn.adafruit.com/assets/assets/000/132/224/original/box_art_blinka_says.pdf?1725918594)
## Holes To Cut

You'll need to cut 4 circle holes big enough for the arcade buttons to panel mount to. If you're using my design, take care to cut inside the circle lines for the buttons. The circles came out a tad too large. I cut my green hole first along the line and it's a smidge too big, but luckily the panel mount still keeps it in place.

Next is to cut two strips, one longer, one shorter for the Feather Headers and Pins to poke through.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/225/medium800/gaming_holes_to_cut.jpg?1725918919)

## Assembly

The last step is to assemble the game. I found it easiest to do this with box standing on it's side so that I could access both the inside where the wires go and the top where the feather and buttons are accessible from.

Line up the breadboard with the Feather Headers oriented correctly to fit into the slits cut in the center of the box face. Plug in your Feather TFT to the headers which are sticking through the slits in the box.

Place the disconnected arcade buttons through the holes in the box from the top down so the buttons are visible and accessible from the top / outside of the game, and the wiring connectors are accessible from the inside of the box.&nbsp;

Connect the appropriate alligator clips to the arcade button connections for GND, LED, and Button. Then feed the jumper end of those 3 wires through the panel mount nut. Tighten the panel mount nut and plug in the jumper ends to the appropriate headers on the bottom of the breadboard.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/226/medium800/gaming_assembly.jpg?1725919619)

Repeat for the remaining buttons. Once everything is connected you can run the project code to ensure everything is connected properly. During your turn the button(s) that you press should light up as you press them, restart the game as needed if you lose while testing. If pressing up any of the buttons results in the wrong color LED turning on, or no LED turning on at all then carefully check the alligator and jumper connections for the buttons.


## Guide Products

### Adafruit ESP32-S3 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT

[Adafruit ESP32-S3 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT](https://www.adafruit.com/product/5483)
We've got a new machine here at Adafruit, it can uncover your deepest desires. Don't believe me? I'll turn it on right now to prove it to you! What, you want your very own soft serve ice cream machine? OK well, that's not something we can provide. But we can provide your...

Out of Stock
[Buy Now](https://www.adafruit.com/product/5483)
[Related Guides to the Product](https://learn.adafruit.com/products/5483/guides)
### Adafruit ESP32-S2 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT

[Adafruit ESP32-S2 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT](https://www.adafruit.com/product/5300)
We've got a new machine here at Adafruit, it can uncover your deepest desires. Don't believe me? I'll turn it on right now to prove it to you! What, you want unlimited mozzarella sticks? OK well, that's not something we can provide. But we can provide your...

Out of Stock
[Buy Now](https://www.adafruit.com/product/5300)
[Related Guides to the Product](https://learn.adafruit.com/products/5300/guides)
### Small Alligator Clip to Male Jumper Wire Bundle - 12 Pieces

[Small Alligator Clip to Male Jumper Wire Bundle - 12 Pieces](https://www.adafruit.com/product/3255)
For bread-boarding with unusual non-header-friendly surfaces, these cables will be your best friends! No longer will you have long strands of alligator clips that are grabbing little wires. These compact jumper cables have a premium male header on one end, and a grippy mini alligator clip on...

In Stock
[Buy Now](https://www.adafruit.com/product/3255)
[Related Guides to the Product](https://learn.adafruit.com/products/3255/guides)
### Adafruit Perma-Proto Half-sized Breadboard PCB - Single

[Adafruit Perma-Proto Half-sized Breadboard PCB - Single](https://www.adafruit.com/product/1609)
Customers have asked us to carry basic perf-board, but we never liked the look of most basic perf: it's always crummy quality, with pads that flake off and no labeling. Then we thought about how people **actually** prototype - usually starting with a solderless breadboard and...

In Stock
[Buy Now](https://www.adafruit.com/product/1609)
[Related Guides to the Product](https://learn.adafruit.com/products/1609/guides)
### Arcade Button with LED - 30mm Translucent Green

[Arcade Button with LED - 30mm Translucent Green](https://www.adafruit.com/product/3487)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have&nbsp; **LEDs built right in!** &nbsp;That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3487)
[Related Guides to the Product](https://learn.adafruit.com/products/3487/guides)
### Arcade Button with LED - 30mm Translucent Yellow

[Arcade Button with LED - 30mm Translucent Yellow](https://www.adafruit.com/product/3488)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have&nbsp; **LEDs built right in!** &nbsp;That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3488)
[Related Guides to the Product](https://learn.adafruit.com/products/3488/guides)
### Arcade Button with LED - 30mm Translucent Red

[Arcade Button with LED - 30mm Translucent Red](https://www.adafruit.com/product/3489)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have&nbsp; **LEDs built right in!** &nbsp;That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3489)
[Related Guides to the Product](https://learn.adafruit.com/products/3489/guides)
### Arcade Button with LED - 30mm Translucent Blue

[Arcade Button with LED - 30mm Translucent Blue](https://www.adafruit.com/product/3490)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have&nbsp; **LEDs built right in!** &nbsp;That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3490)
[Related Guides to the Product](https://learn.adafruit.com/products/3490/guides)

## Related Guides

- [Adafruit ESP32-S2 TFT Feather](https://learn.adafruit.com/adafruit-esp32-s2-tft-feather.md)
- [Adafruit ESP32-S3 TFT Feather](https://learn.adafruit.com/adafruit-esp32-s3-tft-feather.md)
- [IoT Filament Sensor](https://learn.adafruit.com/iot-filament-sensor.md)
- [micro:bit Lesson 3. NeoPixels with micro:bit](https://learn.adafruit.com/micro-bit-lesson-3-neopixels-with-micro-bit.md)
- [NYE Circuit Playground Drop](https://learn.adafruit.com/nye-circuit-playground-drop.md)
- [PyLeap App](https://learn.adafruit.com/pyleap-app.md)
- [Servo Boss](https://learn.adafruit.com/servo-boss.md)
- [Fog Machine with Motion Sensor and Adafruit IO](https://learn.adafruit.com/fog-machine-remote-trigger.md)
- [DIY Robotic Sky Tracking Astrophotography Mount with CircuitPython](https://learn.adafruit.com/diy-robotic-sky-tracking-astrophotography-mount.md)
- [HID Reporter](https://learn.adafruit.com/hid-reporter.md)
- [PermaProto Feather Case](https://learn.adafruit.com/permaproto-feather-case.md)
- [Coffee Rater](https://learn.adafruit.com/coffee-rater.md)
- [Personal and Portable ESP32-S2 Web Server](https://learn.adafruit.com/wordle-personal-esp32-s2-web-server.md)
- [PyLeap ESP32-S3 TFT Boxing Glove Tracker w/ Adafruit IO](https://learn.adafruit.com/esp32-s2-tft-boxing-glove-tracker-w-adafruit-io.md)
- [micro:bit Lesson 2. Controlling LEDs on Breadboard](https://learn.adafruit.com/micro-bit-lesson-2-controlling-leds-on-breadboard.md)
- [Pathfinder Robot Companion](https://learn.adafruit.com/pathfinder.md)
- [Sensor-Locked Secrets with CircuitPython](https://learn.adafruit.com/sensor-locked-secrets-with-circuitpython.md)
