Освой MicroPython играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
У плат ESP32 аналоговые выводы обозначаются аббревиатурой ADC. К ним относятся выводы: 2, 4, 12, 13, 14, 15, 25, 26, 27, 32, 33, 34, 35, 36, 39. У других плат нужно смотреть документацию по выводам (pinout). Рекомедуется использовать выводы 36 и 39.
Я использовал M5Stick-C, который использует плату ESP32 Pico, в этом устройстве доступен вывод 36 для опытов.
По умолчанию разрешение ADC-выводов составляет 12 бит, мы можем считывать напряжение от 0 до 3.3V в диапазоне от 0 до 4095 (у ESP8266 от 0 до 1023). Разрешение можно изменить программно, например, ограничить значения от 0 до 1023, используя 10 бит.
Подключим потенциометр (питание, земля и вывод 36). Считываем напряжение с помощью следующего кода. Здесь присутствуют импорт классов, специфичных для M5Stick-C. Их можно убрать при работе с другими платами, в нашем случае они нужны для вывода значений на экран.
from m5stack import *
from m5ui import *
from uiflow import *
from machine import Pin, ADC
from time import sleep
lcd.setRotation(1)
setScreenColor(0xCD3E3E)
pot = ADC(Pin(36))
pot.atten(ADC.ATTN_11DB)
while True:
pot_value = pot.read()
print(pot_value)
lcd.setCursor(0, 0)
lcd.clear()
lcd.print(pot_value)
sleep(0.1)
В ADC(Pin(36)) мы указали вывод, с которого будем считывать аналоговые значения.
Метод atten() позволяет установить разрешение считываемых показаний. Возможные варианты.
Осталось в бесконечном цикле считывать показания через метод read().
Изменить разрешение можно через ADC.width(bit)
# добавьте строчку в код примера
ADC.width(ADC.WIDTH_9BIT)