# Adafruit IO Basics: Digital Output

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/025/083/medium800thumb/adafruit_io_P1040260.jpg?1448317883)

This guide is part of a series of guides that cover the basics of using Adafruit IO. It will show you how to turn a LED on and off from Adafruit IO using any modern web browser.

If you haven't worked your way through the Adafruit IO feed and dashboard basics guides, you should do that before continuing with this guide so you have a basic understanding of Adafruit IO.

* [Adafruit IO Basics: Feeds](../../../adafruit-io-basics-feeds)
* [Adafruit IO Basics: Dashboards](../../../adafruit-io-basics-dashboards) 

You should go through the setup guides associated with your selected set of hardware, and make sure you have internet connectivity with the device before continuing. The following links will take you to the guides for your selected platform.

* [Adafruit Feather HUZZAH ESP8266 Setup Guide](../../../../adafruit-io-basics-esp8266-arduino)

If you have gone through all of the prerequisites for your selected hardware, you are now ready to move on to the Adafruit IO setup steps that are common between all of the hardware choices for this project. Let's get started!

# Adafruit IO Basics: Digital Output

## Get Started with Adafruit IO

Adafruit IO is integrated with your&nbsp;[adafruit.com account](https://accounts.adafruit.com/)&nbsp;so you don't need to create yet another online account! You need an Adafruit account to use Adafruit IO because we want to make sure the data you upload is available to only you (unless you decide to publish your data).

## I have an Adafruit.com Account already

**If you already have an Adafruit account, then you already have access to Adafruit IO**. It doesn't matter how you signed up, your account will make all three available.

To access Adafruit IO, simply visit [https://io.adafruit.com](https://io.adafruit.com) to start streaming, logging, and interacting with your data.

## Create an Adafruit Account (for Adafruit IO)

An Adafruit account makes Adafruit content and services available to you in one place. Your account provides access to the [Adafruit shop](https://www.adafruit.com/), the [Adafruit Learning System](https://learn.adafruit.com/), and [Adafruit IO](https://io.adafruit.com/). This means only one account, one username, and one password are necessary to engage with the content and services that Adafruit offers.

If you do not have an Adafruit account, signing up for a new Adafruit account only takes a couple of steps.

Begin by visiting [https://accounts.adafruit.com](https://accounts.adafruit.com).

**Click the Sign Up button** under the "Need An Adafruit Account?" title, below the Sign In section.

![](https://cdn-learn.adafruit.com/assets/assets/000/125/220/medium800/adafruit_io_Create_account_sign_in_up_page.png?1697479894)

This will take you to the **Sign Up** page.

**Fill in the requested information,** and **click the Create Account button.**

![](https://cdn-learn.adafruit.com/assets/assets/000/125/219/medium800/adafruit_io_Create_Account_info_entered.png?1697479894)

This takes you to your Adafruit Account home page. From here, you can access all the features of your account.

You can also access the Adafruit content and services right from this page. Along the top of the page, you'll see a series of links beginning with "Shop". To access any of these, simply click the link.

![](https://cdn-learn.adafruit.com/assets/assets/000/125/217/medium800/adafruit_io_Create_account_home_page.png?1697479894)

For example, **to begin working with Adafruit IO, click the IO link** to the right of the rest of the links. This is the same for the other links as well.

That's all there is to creating a new Adafruit account, and navigating to Adafruit IO.

![](https://cdn-learn.adafruit.com/assets/assets/000/125/218/medium800/adafruit_io_Create_Account_io_homepage.png?1697479770)

# Adafruit IO Basics: Digital Output

## Arduino Wiring

## Arduino Wiring
You will need the following parts for this tutorial:

* **1x** Adafruit IO compatible Feather
* **2x** jumper wires
* **1x** 560 ohm resistor
* **1x** 10mm LED

You will need to connect the following pins to the LED and resistor:

* Feather **GND** to LED **cathode** (short leg)
* Feather **Pin 5** to one leg of the **560 ohm resistor**
* LED **anode** (long leg) to the second leg of the **560 ohm resistor**

**Note:** Resistors are *not* polarized, so the 560 ohm resistor can be connected to the circuit in either direction.

![](https://cdn-learn.adafruit.com/assets/assets/000/039/338/medium800/adafruit_io_00_wiring.png?1487196059)

Next, we're going to set up our Arduino.

# Adafruit IO Basics: Digital Output

## Arduino Setup

You should go through the setup guides associated with your selected set of hardware, and make sure you have internet connectivity with the device before continuing. The following links will take you to the guides for your selected platform.

* [Adafruit Feather HUZZAH ESP8266 Setup Guide](../../../../adafruit-io-basics-esp8266-arduino)

You will need to make sure you have at least **version 2.3.1** of the Adafruit IO Arduino library installed before continuing.

![](https://cdn-learn.adafruit.com/assets/assets/000/039/366/medium800/adafruit_io_Screen_Shot_2017-02-16_at_2.41.36_PM.png?1487274221)

For this example you will need to open the **adafruitio\_07\_digital_out** example in the **Adafruit IO Arduino** library.

![](https://cdn-learn.adafruit.com/assets/assets/000/039/340/medium800/adafruit_io_Screen_Shot_2017-02-15_at_5.16.21_PM.png?1487197013)

Next, we will look at the network configuration options in the sketch.

# Adafruit IO Basics: Digital Output

## Arduino Network Config

To configure the network settings, click on the **config.h** tab in the sketch. You will need to set your Adafruit IO username in the **IO_USERNAME** define, and your Adafruit IO key in the **IO_KEY** define.

![](https://cdn-learn.adafruit.com/assets/assets/000/039/317/medium800/adafruit_io_03_config.png?1487185264)

## WiFi Config

WiFi is enabled by default in **config.h** so if you are using one of the supported WiFi boards, you will only need to modify the **WIFI_SSID** and **WIFI_PASS** options in the **config.h** tab.

![](https://cdn-learn.adafruit.com/assets/assets/000/039/318/medium800/adafruit_io_04_wifi.png?1487185900)

## FONA Config

If you wish to use the FONA 32u4 Feather to connect to Adafruit IO, you will need to first comment out the WiFi support in **config.h**

![](https://cdn-learn.adafruit.com/assets/assets/000/039/319/medium800/adafruit_io_05_wifi_disable.png?1487186164)

Next, remove the comments from both of the FONA config lines in the FONA section of **config.h** to enable FONA support.

![](https://cdn-learn.adafruit.com/assets/assets/000/039/320/medium800/adafruit_io_06_fona.png?1487186409)

## Ethernet Config

If you wish to use the Ethernet Wing to connect to Adafruit IO, you will need to first comment out the WiFi support in **config.h**

![](https://cdn-learn.adafruit.com/assets/assets/000/039/321/medium800/adafruit_io_05_wifi_disable.png?1487186577)

Next, remove the comments from both of the Ethernet config lines in the Ethernet section of **config.h** to enable Ethernet Wing support.

![](https://cdn-learn.adafruit.com/assets/assets/000/039/322/medium800/adafruit_io_07_ethernet.png?1487186729)

Next, we will look at how the example sketch works.

# Adafruit IO Basics: Digital Output

## Arduino Code

The **adafruitio\_07\_digital_out** example uses digital pin 5 by default on all boards, and that can be modified by changing the **LED_PIN** define. 

**Note:** If you are using the WICED Feather, you will need to change the **LED_PIN** define to *PC5* instead of the default setting of *5*.

```
/************************ Example Starts Here *******************************/

// digital pin 5
#define LED_PIN 5
```

The next chunk of code sets up an Adafruit IO Feed instance for a feed called **digital**.

```
// set up the 'digital' feed
AdafruitIO_Feed *digital = io.feed("digital");
```

In the setup function, we set the **LED_PIN** as a digital output, and connect to Adafruit IO. We also attach a function called **handleMessage** to the **digital** feed that will be called whenever your device receives messages for that feed.

The code will wait until you have a valid connection to Adafruit IO before continuing with the sketch. If you have any issues connecting, check **config.h** for any typos in your username or key.

```python
void setup() {

  // set led pin as a digital output
  pinMode(LED_PIN, OUTPUT);

  // start the serial connection
  Serial.begin(115200);

  // wait for serial monitor to open
  while(! Serial);

  // connect to io.adafruit.com
  Serial.print("Connecting to Adafruit IO");
  io.connect();

  // set up a message handler for the 'digital' feed.
  // the handleMessage function (defined below)
  // will be called whenever a message is
  // received from adafruit io.
  digital-&gt;onMessage(handleMessage);

  // wait for a connection
  while(io.status() &lt; AIO_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

  // we are connected
  Serial.println();
  Serial.println(io.statusText());

  digital-&gt;get();
}
```

Next, we have the main `loop()` function. The first line of the loop function calls `io.run();` this line will need to be present at the top of your loop in every sketch. It helps keep your device connected to Adafruit IO, and processes any incoming data.

```
void loop() {
  // io.run(); is required for all sketches.
  // it should always be present at the top of your loop
  // function. it keeps the client connected to
  // io.adafruit.com, and processes any incoming data.
  io.run();
}
```

The final chunk of code is the **handleMessage** function. This is the function that is called whenever the **digital** feed gets a message.

We use the `data-&gt;toPinLevel()` function to convert the incoming data to either **LOW** or **HIGH**, and set the state of the **LED_PIN** to that value.

```
// this function is called whenever an 'digital' feed message
// is received from Adafruit IO. it was attached to
// the 'digital' feed in the setup() function above.
void handleMessage(AdafruitIO_Data *data) {

  Serial.print("received &lt;- ");

  if(data-&gt;toPinLevel() == HIGH)
    Serial.println("HIGH");
  else
    Serial.println("LOW");

  // write the current state to the led
  digitalWrite(LED_PIN, data-&gt;toPinLevel());

}
```

Upload the sketch to your board, and open the Arduino Serial Monitor. Your board should now connect to Adafruit IO.

```
    Connecting to Adafruit IO....

Adafruit IO connected.
  
```

Toggle the button on your Adafruit IO dashboard, and you should see the following in the Arduino Serial Monitor.

```
received &lt;- HIGH
received &lt;- LOW
received &lt;- HIGH
received &lt;- LOW

```

You can now toggle the button on your Adafruit IO dashboard, and you should see your LED turn on and off.

# Adafruit IO Basics: Digital Output

## Python Wiring

We're going to use a combination of the Adafruit IO Client Library and Adafruit's CircuitPython to control a Raspberry Pi over Adafruit IO.&nbsp;

## Parts
### Part: Raspberry Pi 3 - Model B+
quantity: 1
The Raspberry Pi is a small linux board compatible with Adafruit IO projects. 
[Raspberry Pi 3 - Model B+](https://www.adafruit.com/product/3775)

If you're following along with a Raspberry Pi, we use the T-Cobbler Plus for the IO Basics Projects. This add-on prototyping board lets you easily connect a Raspberry Pi (Raspberry Pi Model Zero, A+, B+, Pi 2,Pi 3) to a solderless breadboard:

### Part: Assembled Pi T-Cobbler Plus
quantity: 1
GPIO Breakout - Pi A+, B+, Pi 2, Pi 3, Zero
[Assembled Pi T-Cobbler Plus](https://www.adafruit.com/product/2028)

### Part: Green LED
quantity: 1
Diffused Green 5mm LED
[Green LED](https://www.adafruit.com/product/298)

### Part: Jumper Wires
quantity: 1
Breadboarding wire bundle.
[Jumper Wires](https://www.adafruit.com/product/153)

## Wiring
![](https://cdn-learn.adafruit.com/assets/assets/000/057/155/medium800/adafruit_io_digital_output.png?1530811951)

You'll need to make the following connections:

- Pi **GND** to **LED Cathode** (_short_ LED leg_)._
- Pi **Pin 5** to one leg of the **560 ohm resistor.**
- **LED Anode** (_long&nbsp;_LED leg_)&nbsp;_to the other leg of the&nbsp; **560 ohm resistor.**
  - **note:&nbsp;** resistors are&nbsp; **not&nbsp;** polarized, so the 560 ohm resistor can be connected to the circuit in either direction.

# Adafruit IO Basics: Digital Output

## Python Setup

If you're following along with a Raspberry Pi, Beaglebone or any other supported small linux computer, we'll use a special library called&nbsp;[**adafruit\_blinka**](https://pypi.org/project/Adafruit-Blinka/)&nbsp;([named after Blinka, the CircuitPython mascot](https://www.adafruit.com/?q=blinka)) to provide the layer that translates the CircuitPython hardware API to whatever library the Linux board provides. It's CircuitPython, on Pi!

![](https://cdn-learn.adafruit.com/assets/assets/000/056/898/medium800/adafruit_io_blinkapi.gif?1530563193)

## Update your Pi and Python
Warning: 

In this page we'll assume you've already gotten your Raspberry Pi up and running and can log into the command line.

Go ahead and **ssh** into your Raspberry Pi via terminal or a ssh client:

`ssh pi@raspberrypi.local`

Run the standard updates:

`sudo apt-get update`

`sudo apt-get upgrade`

and

`sudo pip3 install --upgrade setuptools`

## Make sure you're using Python 3!
The default python on your computer may not be python 3. Python 2 is officially discontinued and all our libraries are Python 3 only.

We'll be using&nbsp;`python3`&nbsp;and&nbsp;`pip3`&nbsp;in our commands, use those versions of python and pip to make sure you're using 3 and not 2

# Install Python Libraries
## Installing Adafruit Blinka Library
Now you're ready to install all the python support

Run the following command to install the Raspberry PI GPIO library:

```
pip3 install RPI.GPIO
```

![](https://cdn-learn.adafruit.com/assets/assets/000/056/897/medium800/adafruit_io_sensors_pip.png?1530562955)

Run the following command to install&nbsp; **adafruit\_blinka**

```
pip3 install adafruit-blinka
```

The computer will install a few different libraries such as&nbsp;`adafruit-pureio`&nbsp;(our ioctl-only i2c library),&nbsp;`spidev`&nbsp;(for SPI interfacing),&nbsp;`Adafruit-GPIO`&nbsp;(for detecting your board) and of course&nbsp;`adafruit-blinka`

## Installing Adafruit IO Python Library
![](https://cdn-learn.adafruit.com/assets/assets/000/057/153/medium800/adafruit_io_iopython.png?1530802075)

We'll also need to install the [Adafruit IO Python Client Library](https://github.com/adafruit/io-client-python)&nbsp;to communicate with Adafruit IO.

Run the following command to install the **Adafruit IO Client for Python**** :**

```
pip3 install adafruit-io
```

Warning: 

## Downloading Example Code
The example code is contained within the Python IO Client's&nbsp;_examples/basics&nbsp;_subdirectory.

Navigate to the root directory of your Pi:

```
cd ~
```

Then, download the latest version of the _adafruit/io-client-python_ repository by running:

```
git clone https://github.com/adafruit/io-client-python.git
```

Navigate to that folder's example folder for the examples:&nbsp;

```
cd io-client-python/examples/basics/
```

That's it! We're all set up.

Next, let's upload some code and learn how it works.

# Adafruit IO Basics: Digital Output

## Python Code

Before we run the script, we'll need to change&nbsp;`ADAFRUIT_IO_USERNAME`&nbsp;and&nbsp;`ADAFRUIT_IO_KEY`&nbsp;to the username and key for your Adafruit IO account.

- If you need the AIO Key, navigate to [your Adafruit IO Profile](https://io.adafruit.com/profile)

```
# Set to your Adafruit IO key.
# Remember, your key is a secret,
# so make sure not to publish it when you publish this code!
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY'

# Set to your Adafruit IO username.
# (go to https://accounts.adafruit.com to find your username)
ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'
```

Next, we'll create an instance of the Adafruit IO Client and set up the feed we created earlier.

```
aio = Client(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY)
digital = aio.feeds('digital')
```

The next chunk of code sets up the LED to digital pin 5 (`board.D5`) and sets the direction of the LED to an output.

```
# led set up
led = digitalio.DigitalInOut(board.D5)
led.direction = digitalio.Direction.OUTPUT
```

To set up the led, assign it to digital pin 5:

`led = digitalio.DigitalInOut(board.D5)`

We want the LED to light up. To do this, its pin needs to be set to an output:

`led.direction = Direction.OUTPUT`

Inside the `while True` loop,. the code retrieves the the current value of the feed and sets the LED to the value.

```
while True:
    data = aio.receive(digital.key)
    if int(data.value) == 1:
        print('received &lt;- ON\n')
    elif int(data.value) == 0:
        print('received &lt;- OFF\n')

    # set the LED to the feed value
    led.value = int(data.value)
    # timeout so we dont flood adafruit-io with requests
    time.sleep(0.5)
```

## Running the Code
Make sure you're within the _/io-client-python/examples/basics_&nbsp;directory.&nbsp;

If you're not sure which directory you're in, you can check this by running `pwd`&nbsp;and you should see the following output from your terminal:

`~/io-client-python/examples/basics`

Let's run the script. In your terminal, run:

`python3 digital_in.py`

Toggle the button on your Adafruit IO dashboard, and you should see the following in the the terminal of your Pi.&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/057/069/medium800thumb/adafruit_io_Kapture_2018-07-03_at_17.35.58.jpg?1530653801)

You can now toggle the button on your Adafruit IO dashboard, and you should see your LED turn on and off.

## Code
https://github.com/adafruit/io-client-python/blob/master/examples/basics/digital_out.py

# Adafruit IO Basics: Digital Output

## Adafruit IO FAQ

## Encountering an issue with your Adafruit IO Arduino Project?

If you're having an issue compiling, connecting, or troubleshooting your project, check this page first.

_Don't see your issue?_&nbsp;&nbsp;[Post up on the Adafruit IO Forum with your issue](https://forums.adafruit.com/viewforum.php?f=56).

### **I encounter the following error when compiling my sketch:**

**`  fatal error: Adafruit_MQTT.h: No such file or directory, `** `#include "Adafruit_MQTT.h"`

The Adafruit IO Arduino library is dependent on our Adafruit IO MQTT Library.

To resolve this error, from the Arduino IDE, navigate to the **Manage Libraries...** option in the **Sketch -\> Include Library** menu.

![adafruit_io_library_menu.png](https://cdn-learn.adafruit.com/assets/assets/000/065/260/medium640/adafruit_io_library_menu.png?1541529617)

To resolve this error, from the Arduino IDE, navigate to the **Manage Libraries...** option in the **Sketch -\> Include Library** menu.

![adafruit_io_mqtt_install.png](https://cdn-learn.adafruit.com/assets/assets/000/065/259/medium640/adafruit_io_mqtt_install.png?1541529632)

### 

Your board is not connecting to Adafruit IO, but why? Let's find out:

**First** , check in&nbsp;`config.h`&nbsp;that you have the correct&nbsp;`IO_USERNAME`,&nbsp;`IO_KEY`,&nbsp;`WIFI_SSID`, and&nbsp;`WIFI_PASS`&nbsp;are set correctly.&nbsp;

**Next** , we're going to modify the while loop which waits for an IO connection in your sketch. Change the line in the status check loop from&nbsp;`Serial.println(.);`to&nbsp;`Serial.println(io.statusText());`

`// wait for a connection`  
`while(io.status() < AIO_CONNECTED) {`  
`Serial.println(io.statusText());`  
`delay(500);`  
`}`

Verify and re-upload the sketch. If you're receiving a&nbsp; **Network disconnected&nbsp;** error message, the board is not able to talk to the internet. Re-check your hardware, connections, and router settings.&nbsp;

If it's still not showing&nbsp; **Adafruit IO connected** ,&nbsp;check the&nbsp;[IO status on the Adafruit Status page](https://status.adafruit.com/)&nbsp;to make sure the service is online.

### 

Possibly - you can check&nbsp;[IO status on the Adafruit Status page](https://status.adafruit.com/).&nbsp;

### 

There's a&nbsp;[monitor page built-into Adafruit IO](https://io.adafruit.com/monitor)&nbsp;which provides a live view of incoming data and error messages. Keep this page open while you send data to your Adafruit IO devices to monitor data and errors.&nbsp;


## Featured Products

### Raspberry Pi 5 - 4 GB RAM

[Raspberry Pi 5 - 4 GB RAM](https://www.adafruit.com/product/5812)
The Raspberry Pi 5&nbsp;is the newest Raspberry Pi computer, and the Pi Foundation knows you can always make a good thing _better_! And what could make the Pi 5 better than the 4? How about a&nbsp;_faster_ processor, USB 3.0 ports, and an updated Gigabit Ethernet chip with PoE...

In Stock
[Buy Now](https://www.adafruit.com/product/5812)
[Related Guides to the Product](https://learn.adafruit.com/products/5812/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...

In Stock
[Buy Now](https://www.adafruit.com/product/5300)
[Related Guides to the Product](https://learn.adafruit.com/products/5300/guides)
### Adafruit Pi T-Cobbler Plus Kit Breakout for 2x20 Raspberry Pi

[Adafruit Pi T-Cobbler Plus Kit Breakout for 2x20 Raspberry Pi](https://www.adafruit.com/product/1989)
The Raspberry Pi A+/B+/Pi 2/Pi 3/Zero has landed on the Maker World like a 40-GPIO pinned, quad-USB ported, credit card sized bomb of DIY joy. And while you can use most of our great Model B accessories by hooking up our [downgrade cable,](https://www.adafruit.com/product/1986)...

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/1989)
[Related Guides to the Product](https://learn.adafruit.com/products/1989/guides)
### Diffused Red 5mm LED (25 pack)

[Diffused Red 5mm LED (25 pack)](https://www.adafruit.com/product/299)
Need some indicators? We are big fans of these diffused red LEDs, in fact we use them exclusively in our kits. They are fairly bright so they can be seen in daytime, and from any angle. They go easily into a breadboard and will add that extra zing to your project.

- Pack of 25...

In Stock
[Buy Now](https://www.adafruit.com/product/299)
[Related Guides to the Product](https://learn.adafruit.com/products/299/guides)
### Half-Size Breadboard with Mounting Holes

[Half-Size Breadboard with Mounting Holes](https://www.adafruit.com/product/4539)
This cute 3.2″ × 2.1″ (82 × 53mm) solderless half-size breadboard has four bus lines&nbsp;and 30 rows of pins, our favorite size of solderless breadboard for projects. You get a whoppin' **400 tie points**! [Plug in...](http://adafruit.com/feather)

Out of Stock
[Buy Now](https://www.adafruit.com/product/4539)
[Related Guides to the Product](https://learn.adafruit.com/products/4539/guides)
### Breadboarding wire bundle

[Breadboarding wire bundle](https://www.adafruit.com/product/153)
75 flexible stranded core wires with stiff ends molded on in red, orange, yellow, green, blue, brown, black and white. These are a major improvement over the "box of bent wires" that are sometimes sold with breadboards, and faster than stripping your own solid core wires. Makes...

In Stock
[Buy Now](https://www.adafruit.com/product/153)
[Related Guides to the Product](https://learn.adafruit.com/products/153/guides)
### Adafruit IO+ Subscription Pass – One Year

[Adafruit IO+ Subscription Pass – One Year](https://www.adafruit.com/product/3792)
The all-in-one Internet of Things service from Adafruit you know and love is now _even better_ with IO+. The 'plus' stands for MORE STUFF! More feeds, dashboards, storage, speed. Power up your [Adafruit IO](https://io.adafruit.com/) with the $99 pass for 1 year of the...

In Stock
[Buy Now](https://www.adafruit.com/product/3792)
[Related Guides to the Product](https://learn.adafruit.com/products/3792/guides)
### Adafruit IO+ Subscription Card

[Adafruit IO+ Subscription Card](https://www.adafruit.com/product/4443)
These are for freebies only! If you like to purchase one for yourself, here's the store version! https://www.adafruit.com/product/3980

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

## Related Guides

- [Adafruit ESP32-S2 TFT Feather](https://learn.adafruit.com/adafruit-esp32-s2-tft-feather.md)
- [Introducing Adafruit Feather](https://learn.adafruit.com/adafruit-feather.md)
- [CircuitPython OctoPrint Controller and Monitor](https://learn.adafruit.com/circuitpython-octoprint-controller-and-monitor.md)
- [itsaSNAP Apple Health Status Board](https://learn.adafruit.com/itssnap-apple-fitness-status-board.md)
- [DIY IoT Doorbell Camera with MEMENTO](https://learn.adafruit.com/diy-iot-doorbell-camera-with-memento.md)
- [Use Apple HomeKit Devices with itsaSNAP and Adafruit IO](https://learn.adafruit.com/use-apple-homekit-devices-with-itsasnap.md)
- [Adafruit IO Basics: Feeds](https://learn.adafruit.com/adafruit-io-basics-feeds.md)
- [Adafruit IO Basics: Color](https://learn.adafruit.com/adafruit-io-basics-color.md)
- [Welcome to Adafruit IO](https://learn.adafruit.com/welcome-to-adafruit-io.md)
- [Scan QR Codes with CircuitPython](https://learn.adafruit.com/scan-qr-codes-with-circuitpython.md)
- [Adafruit IO Basics: Analog Output](https://learn.adafruit.com/adafruit-io-basics-analog-output.md)
- [Feather TFT STEMMA Case](https://learn.adafruit.com/feather-tft-stemma-case.md)
- [Adafruit IO Basics: Analog Input](https://learn.adafruit.com/adafruit-io-basics-analog-input.md)
- [Adafruit IO Basics: Digital Input](https://learn.adafruit.com/adafruit-io-basics-digital-input.md)
- [No-Code Pool Party Notifier](https://learn.adafruit.com/pool-party-notification-device.md)
