# Adafruit VCNL4040 Proximity Sensor

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/078/981/medium800/adafruit_products_4161_iso_ORIG_2019_08.jpg?1564788811)

The VCNL4040 is a handy two-in-one sensor, with a proximity sensor that works from 0 to 200mm (about 7.5 inches) and light sensor with range of 0.0125 to 6553 lux.

We've all been there. That thing is&nbsp;_close_ but&nbsp;_how close?_ When you need to measure a small distance with reasonable accuracy, such as the rough height of particularly calm bumble bee, the VCNL4040 Proximity Sensor from Vishay can do that for you. If perchance you also needed to measure the amount of light at the same time, perhaps to let the bee to know if it's time for bed, you're in luck! The VCNL4040 can do that too (bumble bee not included, we tried putting it in the anti-static bag but it started buzzing in a threatening manner).

![](https://cdn-learn.adafruit.com/assets/assets/000/078/982/medium800/adafruit_products_4161_top_demo_ORIG_2019_08.jpg?1564788857)

"OK,&nbsp;_finally_ I can get started on my bee measuring and light sensing project, but&nbsp;_how do I use it?"_ you say. To make life easier so you can focus on your important work, we've taken the VCNL4040 and put it onto a breakout PCB along with support circuitry to let you use this little wonder with 3.3V (Feather) or 5V (Arduino/ Metro328) logic levels. Additionally, since it speaks I2C, you can easily connect it up with two wires (plus power and ground!).&nbsp; We've even included [SparkFun qwiic](https://learn.adafruit.com/ds3502-i2c-potentiometer/) compatible**&nbsp;[STEMMA QT](https://learn.adafruit.com/introducing-adafruit-stemma-qt)**&nbsp;connectors for the I2C bus so **you don't even need to solder!** &nbsp;Just wire up to your favorite micro and you can use our CircuitPython/Python or Arduino drivers to easily interface with the VCNL4040 and make approximate approximations of proximity in no time!

![](https://cdn-learn.adafruit.com/assets/assets/000/078/985/medium800/adafruit_products_4161_quarter_ORIG_2019_08.jpg?1564789177)

To give you some ability to tune your measurements for your situation, the VCNL4040 lets you adjust the integration time (how long light is being measured) to set the sensitivity of your measurements depending on the lighting conditions. With an integration time of 80ms, since the sensor is only collecting measurements for a short period of time, each measured bit of light represents a larger amount of light. For this reason the maximum range in lux for the 80ms integration time is 6553.5 lux.

If you use a longer integration time and get the same amount of light measurements "events", you know that there is comparatively less light because we're waiting around longer for light to show up and getting the same number, meaning the rate of light events is lower. For this reason at the maximum integration time of 640ms the VCNL4040 will only measure up to 819.2 lux.

It is also worth keeping in mind that as you increase the integration time you are also increasing the sensitivity and resolution within the measurement range

In addition to adjusting the sensitivity of light measurements, you can change the current and duty cycle of the IR LED that powers the proximity detection to adjust how sensitive proximity measurements are

# Adafruit VCNL4040 Proximity Sensor

## Pinouts

![](https://cdn-learn.adafruit.com/assets/assets/000/078/983/medium800/adafruit_products_front_crop.png?1564788957)

## Power Pins

- **Vin** - this is the power pin. Since the sensor chip uses 3 VDC, we have included a voltage regulator on board that will take 3-5VDC and safely convert it down. To power the board, give it the same power as the logic level of your microcontroller - e.g. for a 5V micro like Arduino, use 5V
- **3Vo** - this is the 3.3V output from the voltage regulator, you can grab up to 100mA from this if you like
- **GND** - common ground for power and logic

## I2C Logic Pins

- **SCL** - this is the I2C clock pin, connect to your microcontroller's I2C clock line.
- **SDA** - this is the I2C data pin, connect to your microcontroller's I2C data line
- **[STEMMA QT](https://learn.adafruit.com/introducing-adafruit-stemma-qt)&nbsp;-** These connectors allow you to connectors to dev boards with&nbsp; **STEMMA QT** connectors or to other things with&nbsp;[various associated accessories](https://www.adafruit.com/?q=JST%20SH%204)

## Other Pins

- **INT&nbsp;** -This is the interrupt pin. You can setup the VCNL4040 to pull this low when certain conditions are met such as proximity or lux level thresholds being crossed.

# Adafruit VCNL4040 Proximity Sensor

## Arduino

- Connect&nbsp; **&nbsp;**** Metro or Arduino&nbsp; ****5V** to&nbsp; **board**  **VIN**
- Connect **Metro or Arduino**  **GND** to **board**  **GND**
- Connect **Metro or Arduino**  **SCL** to **board SCL**
- Connect **Metro or Arduino**  **SDA** to **board SDA**

![adafruit_products_arduino_fritz.png](https://cdn-learn.adafruit.com/assets/assets/000/079/055/medium640/adafruit_products_arduino_fritz.png?1565032884)

The final results should resemble the illustration above, showing an [Adafruit Metro](https://www.adafruit.com/product/2488) development board.

# Installation

You can install the **Adafruit VCNL4040 Library** for Arduino using the Library Manager in the Arduino IDE:

![](https://cdn-learn.adafruit.com/assets/assets/000/078/020/medium800/adafruit_products_library_manager_menu.png?1562794241)

Click the&nbsp; **Manage Libraries ...** menu item, search for **Adafruit VCNL4040** ,&nbsp;and select the&nbsp; **Adafruit VCNL4040** library:

![](https://cdn-learn.adafruit.com/assets/assets/000/078/166/medium800/adafruit_products_arduino_lib_install.png?1562955403)

Then follow the same process for the **Adafruit BusIO** library.

![](https://cdn-learn.adafruit.com/assets/assets/000/078/022/medium800/adafruit_products_sensors_adafrtui_busio_arduino.png?1562794329)

# Load Example

Open up&nbsp; **File -\> Examples -\> Adafruit VCNL4040&nbsp;**** -\> vcnl4040\_test** and upload to your Arduino wired up to the sensor.

Upload the sketch to your board and open up the Serial Monitor ( **Tools-\>Serial Monitor** ) at 115200 baud. You should see the the values for the current configuration settings printed on startup, followed by readings for ambient light, proximity levels, and raw white light readings similar to this:

![](https://cdn-learn.adafruit.com/assets/assets/000/078/898/medium800/adafruit_products_arduino_example.png?1564695854)

You can place your hand close to the sensor to see the proximity value change, and to see the ambient light levels change you can either cover the sensor or shine a light at it.

# Example Code

The following code is part of the standard library and illustrates the basic function of sensing light levels and measuring proximity:

https://github.com/adafruit/Adafruit_VCNL4040/blob/master/examples/vcnl4040_test/vcnl4040_test.ino

# Adafruit VCNL4040 Proximity Sensor

## Arduino Docs

# Adafruit VCNL4040 Proximity Sensor

## Python & CircuitPython

It's easy to use the VCNL4040 sensor with CircuitPython and the&nbsp;[Adafruit CircuitPython VCNL4040](https://github.com/adafruit/Adafruit_CircuitPython_VCNL4040)&nbsp;module.&nbsp; This module allows you to easily write Python code that reads the ambient light levels, white light levels, and proximity data from the breakout.  
  
You can use this sensor with any CircuitPython microcontroller board or with a Linux single board computer that has GPIO and Python&nbsp;[thanks to Adafruit\_Blinka, our CircuitPython-for-Python compatibility library](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux).

## CircuitPython Microcontroller Wiring

First wire up a VCNL4040 to your board exactly as follows. Here is an example of the VCNL4040 wired to a [Feather](https://www.adafruit.com/product/3857) using I2C:

- **Board 3V** &nbsp;to&nbsp; **sensor VIN**
- **Board GND** &nbsp;to&nbsp; **sensor GND**
- **Board SCL** &nbsp;to&nbsp; **sensor SCL**
- **Board SDA** &nbsp;to&nbsp; **sensor SDA**

![adafruit_products_cpy_fritz.png](https://cdn-learn.adafruit.com/assets/assets/000/078/733/medium640/adafruit_products_cpy_fritz.png?1564449666)

Primary: 

## Python Computer Wiring

Since there's&nbsp;_dozens_&nbsp;of Linux computers/boards you can use we will show wiring for [Raspberry Pi](https://www.adafruit.com/product/3055). For other platforms,&nbsp;[please visit the guide for CircuitPython on Linux to see whether your platform is supported](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux).&nbsp;

Here's the Raspberry Pi wired with I2C:

- **Pi 3V3** &nbsp;to&nbsp; **sensor VIN**
- **Pi GND** &nbsp;to&nbsp; **sensor GND**
- **Pi SCL** &nbsp;to&nbsp; **sensor SCL**
- **Pi SDA** &nbsp;to&nbsp; **sensor SDA**

![adafruit_products_rpi_fritz.png](https://cdn-learn.adafruit.com/assets/assets/000/078/734/medium640/adafruit_products_rpi_fritz.png?1564449690)

## CircuitPython Installation of VCNL4040 Library

You'll need to install the&nbsp;[Adafruit CircuitPython VCNL4040](https://github.com/adafruit/Adafruit_CircuitPython_VCNL4040) library on your CircuitPython board.

First make sure you are running the&nbsp;[latest version of Adafruit CircuitPython](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython)&nbsp;for your board.

Next you'll need to install the necessary libraries&nbsp;to use the hardware--carefully follow the steps to find and install these libraries from&nbsp;[Adafruit's CircuitPython library bundle](https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases).&nbsp; Our CircuitPython starter guide has [a great page on how to install the library bundle](https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-libraries).

For non-express boards like the Trinket M0 or Gemma M0, you'll need to manually install the necessary libraries from the bundle:

- **adafruit\_vcnl4040.mpy**
- **adafruit\_bus\_device**
- **adafruit\_register**

Before continuing make sure your board's lib folder or root filesystem has the&nbsp; **adafruit\_vcnl4040.mpy,**  **adafruit\_bus\_device** , and&nbsp; **adafruit\_register** files and folders **&nbsp;** copied over.

Next&nbsp;[connect to the board's serial REPL&nbsp;](https://learn.adafruit.com/welcome-to-circuitpython/the-repl)so you are at the CircuitPython&nbsp;`>>>`&nbsp;prompt.

## Python Installation of VCNL4040 Library

You'll need to install the **Adafruit\_Blinka** library that provides the CircuitPython support in Python. This may also require enabling I2C on your platform and verifying you are running Python 3.&nbsp;[Since each platform is a little different, and Linux changes often, please visit the CircuitPython on Linux guide to get your computer ready](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux)!

Once that's done, from your command line run the following command:

- `sudo pip3 install adafruit-circuitpython-vcnl4040`

If your default Python is version 3 you may need to run 'pip' instead. Just make sure you aren't trying to use CircuitPython on Python 2.x, it isn't supported!

## CircuitPython & Python Usage

To demonstrate the usage of the sensor we'll initialize it and read the light levels and proximity measurements from the board's Python REPL.

Run the following code to import the necessary modules and initialize the I2C connection with the sensor:

```auto
import time
import board
import busio
import adafruit_vcnl4040

i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_vcnl4040.VCNL4040(i2c)
```

![](https://cdn-learn.adafruit.com/assets/assets/000/078/900/medium800/adafruit_products_cpy_repl_import.png?1564696732)

Now you're ready to read values from the sensor using these properties:

- **lux -** &nbsp;The ambient light data in lux
- **proximity** - The proximity data measurement

For example to print ambient light level and proximity info:

![](https://cdn-learn.adafruit.com/assets/assets/000/078/901/medium800/adafruit_products_cpy_repl_values.png?1564696969)

For more details, check out the [library documentation](https://circuitpython.readthedocs.io/projects/vcnl4040/en/latest/api.html).

That's all there is to using the VCNL4040 sensor with CircuitPython!

## Full Example Code
https://github.com/adafruit/Adafruit_CircuitPython_VCNL4040/blob/main/examples/vcnl4040_simpletest.py

# Adafruit VCNL4040 Proximity Sensor

## Python Docs

# Adafruit VCNL4040 Proximity Sensor

## WipperSnapper

![](https://cdn-learn.adafruit.com/assets/assets/000/128/385/medium800/adafruit_products_01_DeviceList.png?1709295079)

## What is WipperSnapper

WipperSnapper is a firmware designed to turn any WiFi-capable board into an Internet-of-Things device without programming a single line of code. WipperSnapper connects to [Adafruit IO](https://io.adafruit.com/), a web&nbsp;platform designed ([by Adafruit!](https://www.adafruit.com/about)) to&nbsp;_display_,&nbsp;_respond_, and&nbsp;_interact_&nbsp;with your project's data.

Simply load the WipperSnapper firmware onto your board, add credentials, and plug it into power. Your board will automatically register itself with your Adafruit IO account.

From there, you can add&nbsp;_components_&nbsp;to your board such as buttons, switches, potentiometers, sensors, and more! Components are&nbsp;_dynamically&nbsp;_added to hardware, so you can&nbsp;immediately start interacting, logging, and streaming the data your projects produce without writing code.

If you've never used WipperSnapper, click below to read through the quick start guide before continuing.

[Quickstart: Adafruit IO WipperSnapper](https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper)
## Wiring
First, wire up an VCNL4040 to your board exactly as follows. Here is an example of the VCNL4040 wired to an&nbsp;[Adafruit ESP32 Feather V2](https://www.adafruit.com/product/5400)&nbsp;using I2C&nbsp;[with a STEMMA QT cable (no soldering required)](https://www.adafruit.com/product/4210)

- **Board 3V** &nbsp;to&nbsp;**sensor VIN (red wire on STEMMA QT)**  
- **Board GND** &nbsp;to&nbsp;**sensor GND (black wire on STEMMA QT)**  
- **Board SCL** &nbsp;to&nbsp;**sensor SCL (yellow wire on STEMMA QT)**  
- **Board SDA** &nbsp;to&nbsp;**sensor SDA (blue wire on STEMMA QT)**

![adafruit_products_featherV2_VCNL4040_STEMMAQT_bb.png](https://cdn-learn.adafruit.com/assets/assets/000/128/399/medium640/adafruit_products_featherV2_VCNL4040_STEMMAQT_bb.png?1709298395)

![adafruit_products_featherV2_VCNL4040_Breadboard_bb.png](https://cdn-learn.adafruit.com/assets/assets/000/128/400/medium640/adafruit_products_featherV2_VCNL4040_Breadboard_bb.png?1709298427)

## Usage

Connect your board to Adafruit IO Wippersnapper and **[navigate to the WipperSnapper board list](https://io.adafruit.com/wippersnapper).**

On this page, **select the WipperSnapper board you're using** to be brought to the board's interface page.

![](https://cdn-learn.adafruit.com/assets/assets/000/128/386/medium800/adafruit_products_02_DeviceSelection_croppped.png?1709295142)

If you do not see your board listed here - you need [to connect your board to Adafruit IO](https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper) first.

On the device page, quickly&nbsp; **check that you're running the latest version of the WipperSnapper firmware**.

The device tile on the left indicates the version number of the firmware running on the connected board.

- **If the firmware version is green with a checkmark -** &nbsp;continue with this guide.
- **If the firmware version is red with an exclamation mark "!" -** &nbsp;[update to the latest WipperSnapper firmware](https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper)&nbsp;on your board before continuing.

![adafruit_products_04_LatestVersion.png](https://cdn-learn.adafruit.com/assets/assets/000/128/387/medium640/adafruit_products_04_LatestVersion.png?1709295168)

![adafruit_products_04_UpdateRequired.png](https://cdn-learn.adafruit.com/assets/assets/000/128/388/medium640/adafruit_products_04_UpdateRequired.png?1709295184)

Next, make sure the sensor is plugged into your board and click the **&nbsp;I2C Scan&nbsp;** button.

![](https://cdn-learn.adafruit.com/assets/assets/000/113/177/medium800/sensor_page_crop_scan.png?1657724520)

You should see the VCNL4040's default I2C address of&nbsp;`0x60`&nbsp;pop-up in the I2C scan list.

![](https://cdn-learn.adafruit.com/assets/assets/000/128/389/medium800/adafruit_products_Screenshot_2024-03-01_121342.png?1709295239)

###  I don't see the sensor's I2C address listed! 


First, double-check the connection and/or wiring between the sensor and the board.

Then, reset the board and let it re-connect to Adafruit IO WipperSnapper.

With the sensor detected in an I2C scan, you're ready to add the sensor to your board.

**Click the New Component button or the + button** to bring up the component picker.

![](https://cdn-learn.adafruit.com/assets/assets/000/127/931/medium800/sensor_page_temperature___humidity_06_AddComponent.png?1708631009)

Adafruit IO supports a large amount of components. To quickly find your sensor, type&nbsp;`VCNL4040`&nbsp;into the search bar, then select the&nbsp; **VCNL4040** &nbsp;component.

![](https://cdn-learn.adafruit.com/assets/assets/000/128/390/medium800/adafruit_products_HgGYnxcKU8.png?1709295386)

On the component configuration page, the VCNL4040's sensor address should be listed along with the sensor's settings.

The&nbsp; **Send Every** &nbsp;option is specific to each sensor's measurements. This option will tell the Feather how often it should read from the VCNL4040 sensor and send the data to Adafruit IO. Measurements can range from every 30 seconds to every 24 hours.

For this example, set the&nbsp; **Send Every&nbsp;** interval to every 30 seconds.

![](https://cdn-learn.adafruit.com/assets/assets/000/128/391/medium800/adafruit_products_k3nCttc1gN.png?1709295422)

Your device interface should now show the sensor components you created. After the interval you configured elapses, WipperSnapper will automatically read values from the sensor(s) and send them to Adafruit IO.

![](https://cdn-learn.adafruit.com/assets/assets/000/128/392/medium800/adafruit_products_tuNcr7AMYm.png?1709295440)

To view the data that has been logged from the sensor, click on the graph next to the sensor name.

![](https://cdn-learn.adafruit.com/assets/assets/000/128/393/medium800/adafruit_products_BgTM3MQ1uX.png?1709295448)

Here you can see the feed history and edit things about the feed such as the name, privacy, webhooks associated with the feed and more. If you want to learn more about how feeds work, [check out this page](https://learn.adafruit.com/all-the-internet-of-things-episode-four-adafruit-io/advanced-feeds).

![](https://cdn-learn.adafruit.com/assets/assets/000/128/394/medium800/adafruit_products_BSG8Xmrh1K.png?1709295550)

# Adafruit VCNL4040 Proximity Sensor

## Downloads

## Files

- [VCNL4040 Datasheet](https://www.vishay.com/docs/84274/vcnl4040.pdf)
- [EagleCAD files on GitHub](https://github.com/adafruit/Adafruit-VCNL4040-PCB)
- [3D models on GitHub](https://github.com/adafruit/Adafruit_CAD_Parts/tree/main/4161%20VCNL4040%20Sensor)
- [Fritzing object from Adafruit Fritzing Library](https://github.com/adafruit/Fritzing-Library/blob/master/parts/Adafruit%20VCNL4040.fzpz)

# Schematic
![](https://cdn-learn.adafruit.com/assets/assets/000/078/737/medium800/adafruit_products_schematic.png?1564449985)

# Fab Print
![](https://cdn-learn.adafruit.com/assets/assets/000/078/736/medium800/adafruit_products_fab_print.png?1564449904)

![](https://cdn-learn.adafruit.com/assets/assets/000/136/350/medium800/adafruit_products_4161_VCNL4040_Sensor.jpg?1744987320 )


## Primary Products

### Adafruit VCNL4040 Proximity and Lux Sensor - STEMMA QT / Qwiic

[Adafruit VCNL4040 Proximity and Lux Sensor - STEMMA QT / Qwiic](https://www.adafruit.com/product/4161)
The VCNL4040 is a handy two-in-one sensor, with a proximity sensor that works from **0 to 200mm** (about 7.5 inches) and light sensor with range of **0.0125 to 6553 lux**.

We've all been there. That thing is&nbsp;_close_ but&nbsp;_how close?_...

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

## Featured Products

### STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and remove.

<a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)
### STEMMA QT / Qwiic JST SH 4-pin to Premium Male Headers Cable

[STEMMA QT / Qwiic JST SH 4-pin to Premium Male Headers Cable](https://www.adafruit.com/product/4209)
This 4-wire cable is a little over 150mm / 6" long and fitted with JST-SH female 4-pin connectors on one end and premium Dupont male headers on the other. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert...

In Stock
[Buy Now](https://www.adafruit.com/product/4209)
[Related Guides to the Product](https://learn.adafruit.com/products/4209/guides)
### JST SH 4-pin Right Angle Connector (10-pack)

[JST SH 4-pin Right Angle Connector (10-pack)](https://www.adafruit.com/product/4208)
If you're a DIY&nbsp;enthusiast who likes to&nbsp;_micro_-manage your project's connections, here is a 10-pack of some&nbsp;_micro_&nbsp;JST SH connectors!&nbsp;They're&nbsp;solid plastic with 4 x 1mm pitch through-hole mounting tabs. In an SMT line you can just paste...

In Stock
[Buy Now](https://www.adafruit.com/product/4208)
[Related Guides to the Product](https://learn.adafruit.com/products/4208/guides)
### Adafruit METRO 328 - Arduino Compatible - with Headers

[Adafruit METRO 328 - Arduino Compatible - with Headers](https://www.adafruit.com/product/2488)
This is the&nbsp; **Adafruit METRO Arduino-Compatible - with&nbsp;headers.&nbsp;** It's a fully assembled and tested microcontroller and physical computing board with through-hole headers attached.&nbsp; If you don't want a&nbsp;Metro with the headers attached for...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2488)
[Related Guides to the Product](https://learn.adafruit.com/products/2488/guides)
### Adafruit METRO M0 Express - designed for CircuitPython

[Adafruit METRO M0 Express - designed for CircuitPython](https://www.adafruit.com/product/3505)
Metro is our series of microcontroller boards for use with the Arduino IDE. This new **Metro M0 Express** board looks a whole lot like our&nbsp;[original Metro 328](https://www.adafruit.com/product/2488), but with a huge upgrade. Instead of the ATmega328, this Metro...

In Stock
[Buy Now](https://www.adafruit.com/product/3505)
[Related Guides to the Product](https://learn.adafruit.com/products/3505/guides)
### Adafruit Feather M4 Express - Featuring ATSAMD51

[Adafruit Feather M4 Express - Featuring ATSAMD51](https://www.adafruit.com/product/3857)
It's what you've been waiting for, the Feather M4 Express featuring ATSAMD51. This Feather is fast like a swift, smart like an owl, strong like a ox-bird (it's half ox, half bird, OK?) This feather is powered by our new favorite chip, the **ATSAMD51J19** -&nbsp; with...

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

## Related Guides

- [Adafruit Metro M0 Express](https://learn.adafruit.com/adafruit-metro-m0-express.md)
- [Adafruit Feather M4 Express](https://learn.adafruit.com/adafruit-feather-m4-express-atsamd51.md)
- [Adafruit MSA301 Triple Axis Accelerometer](https://learn.adafruit.com/msa301-triple-axis-accelerometer.md)
- [Using Servos With CircuitPython and Arduino](https://learn.adafruit.com/using-servos-with-circuitpython.md)
- [Programming an M0 using an Arduino](https://learn.adafruit.com/programming-an-m0-using-an-arduino.md)
- [NeoPixel Run LED Arcade Game](https://learn.adafruit.com/pixel-chase-game.md)
- [CircuitPython 101: Basic Builtin Data Structures](https://learn.adafruit.com/basic-datastructures-in-circuitpython.md)
- [CircuitPython Hardware: PCA9685 PWM & Servo Driver](https://learn.adafruit.com/micropython-hardware-pca9685-pwm-and-servo-driver.md)
- [Mystery Box: NeoMatrix Mk I](https://learn.adafruit.com/mystery-box-neomatrix-mk-i.md)
- [MakeCode Maker](https://learn.adafruit.com/makecode-maker.md)
- [Adafruit AirLift Shield - ESP32 WiFi Co-Processor](https://learn.adafruit.com/adafruit-airlift-shield-esp32-wifi-co-processor.md)
- [Alternative languages for programming the SAMD51 boards](https://learn.adafruit.com/alternative-languages-for-programming-samd-boards.md)
- [CircuitPython Hardware: ILI9341 TFT & FeatherWing](https://learn.adafruit.com/micropython-hardware-ili9341-tft-and-featherwing.md)
- [Porting an Arduino library to CircuitPython: VL6180X Distance Sensor](https://learn.adafruit.com/porting-an-arduino-library-to-circuitpython-vl6180x-distance-sensor.md)
- [Adafruit DS3502 I2C Digital Potentiometer](https://learn.adafruit.com/ds3502-i2c-potentiometer.md)
- [Analog Devices ADXL343 Breakout Learning Guide](https://learn.adafruit.com/adxl343-breakout-learning-guide.md)
