# ADC

{% tabs %}
{% tab title="1" %}

<figure><img src="https://2808519483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FI2jtNl20mw4WYRE8MWgw%2Fuploads%2FcN0W2FwtfWIYaePFhkGw%2FD5503657-0D93-4344-AAB8-E684C1826275.jpg?alt=media&#x26;token=cc2d4e38-062f-41cf-ba1f-56c8323033d8" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="2" %}

<figure><img src="https://2808519483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FI2jtNl20mw4WYRE8MWgw%2Fuploads%2FxHtYBjy6LH7Hqy2H5YRG%2F7CDCE4DB-6B5A-4440-9A74-27E17ED3FBF8.jpg?alt=media&#x26;token=8ad0f869-adda-48ee-abe0-02a918b28a21" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="3" %}

<figure><img src="https://2808519483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FI2jtNl20mw4WYRE8MWgw%2Fuploads%2FjN0Kn3wcwICHbaRrfxOZ%2FED74A970-9886-4A96-8D75-70C7209ADF79.jpg?alt=media&#x26;token=dc8de2b6-b3e3-4dfd-acd5-57cecc0a79c7" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="4" %}

<figure><img src="https://2808519483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FI2jtNl20mw4WYRE8MWgw%2Fuploads%2FL2SJqgRuODT1fbydyVu3%2FB2FC43B6-4963-4A5F-ACEB-B1301F8F4FF5.jpg?alt=media&#x26;token=c92339dd-17a1-4916-ba51-df6a1de33337" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="5" %}

<figure><img src="https://2808519483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FI2jtNl20mw4WYRE8MWgw%2Fuploads%2FVtw6kNSJIVflKtkJ3xyu%2F7F2E2072-F44B-417F-8E73-0A54E5D65F24.jpg?alt=media&#x26;token=208e2472-a278-4c30-bde0-30908e5809df" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="6" %}

<figure><img src="https://2808519483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FI2jtNl20mw4WYRE8MWgw%2Fuploads%2Frl9hsUwqPNtdto7HrAJC%2FA32E996D-67FB-4E07-A6FB-9322F3EDC9D0.jpg?alt=media&#x26;token=26c206eb-fddd-470f-a895-f839510d6480" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="7" %}

<figure><img src="https://2808519483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FI2jtNl20mw4WYRE8MWgw%2Fuploads%2FVyLk46pTzTzz8wioMTCV%2FScreenshot%202024-04-26%20220108.png?alt=media&#x26;token=e64e3cf6-dd2f-4491-a5f1-d62727003f62" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## ADC Pins - A1, A2, A18, A17

While all ADC pins are digital pins, not all digital pins are ADC pins.&#x20;

## Code

```python
"""
ADC Demo Code
Breadstick Innovations
April 26, 2024
https://learn.breadstick.ca/breadstick/breadsticks/raspberry-breadstick/code-examples/adc

ADC converts 0-3.3V to 16-bit integer
RP2040 has a 12-bit ADC but CircuitPython converts it to a 16-bit result.
2^16 = 65536 values
0 is one of those values,
so the range is 0-65535.
3.3V/65535 steps = 50uV/step
You won't actually measure at 50uV accuracy, closer to 1mV accuracy.
"""

from board import *
from pwmio import PWMOut
from analogio import AnalogIn
from time import sleep
from adafruit_dotstar import DotStar


def convert_voltage(ADC_value):
    return 3.3 / 65535 * ADC_value


def convert_range(ADC_value, from_max, to_max):
    return int(ADC_value / from_max * to_max)
    

pot_1 = AnalogIn(A1)
pot_18 = AnalogIn(A18)

led_5 = PWMOut(D5, frequency=500, duty_cycle=0)

leds = DotStar(DOTSTAR_CLOCK, DOTSTAR_DATA, 24, brightness=0.02, auto_write=False)

RED = (255, 0, 0)
ORANGE = (255, 75, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
OFF = (0, 0, 0)

leds.fill(OFF)
leds.show()

while True:
    ADC_1 = pot_1.value
    ADC_18 = pot_18.value

    led_5.duty_cycle = ADC_1

    voltage_1 = convert_voltage(ADC_1)
    voltage_18 = convert_voltage(ADC_18)
    print((voltage_1, voltage_18))

    bar_graph = convert_range(ADC_18, 65535, 25)
    leds.fill(OFF)
    for i in range(bar_graph):
        leds[i] = ORANGE
    leds.show()

    sleep(0.04)

```
