Чтение аналоговых датчиков — АЦП платы Pico
До сих пор каждый вход на вашей Pico был цифровым: кнопка либо нажата, либо нет, вывод читает либо 0, либо 1. Но реальный мир не состоит из выключателей «вкл./выкл.». Ручка регулятора яркости может стоять на 0%, 37% или 82%. В комнате может быть кромешная тьма, полумрак, светло или ослепительно ярко. Температура плавно скользит от холода к жаре. Это аналоговые величины — они могут принимать любое значение в диапазоне, а не только два.
Однако микроконтроллер способен хранить только числа. Поэтому нам нужен переводчик, который превращает плавно меняющееся напряжение в обычное число, с которым может работать программа. Этот переводчик называется АЦП — аналого-цифровой преобразователь (по-английски ADC, Analog-to-Digital Converter). В вашей Pico он встроен. В этом уроке вы будете считывать ручку (потенциометр), считывать датчик света (фоторезистор), преобразовывать «сырое» число в реальное напряжение, сглаживать скачущие показания и соберёте регулируемый ручкой диммер светодиода.
Чему вы научитесь
- Что означает «аналоговый» и почему обычный цифровой вывод не может это измерить.
- Что делает АЦП: он превращает напряжение в число.
- Какие выводы Pico являются аналоговыми входами (GP26, GP27, GP28 — их называют ADC0, ADC1, ADC2).
- Как считать значение с помощью
machine.ADCиread_u16()и что означает диапазон 0–65535. - Как преобразовать «сырое» число в реальное напряжение на конкретных подсчитанных примерах.
- Как подключить потенциометр как делитель напряжения и считать положение ручки.
- Как отобразить это показание в яркость светодиода — полноценный проект диммера на потенциометре.
- Как измерять свет фоторезистором и как откалибровать порог.
- Как усреднять множество показаний, чтобы убрать «скачущий» шум.
- Как исправить две самые частые ошибки при работе с АЦП.