Простой пример чтения значения на аналоговом входе с помощью AnalogRead с пересчетом в вольты.
Нам понадобятся:
- плата Arduino Uno или другая
- переменный резистор 10 кОм (по-английски он называется potentiometer)
Подключение
Подключите три провода от переменного резистора к вашей плате. Первый идет на землю от одного из внешних контактов резистора . Второй идет на 5 вольт от другого внешнего вывода резистора. Третий идет от среднего контакта к аналоговому входу 0.
Вращая вал переменного резистора, вы изменяете величину сопротивления от 0 до 10кОм, это в свою очередь изменяет напряжение от 5вольт до практически 0. Значение мы считываем
Микроконтроллер платы имеет внутри схему, называемую аналого-цифровым преобразователем или АЦП, которая считывает это изменяющееся напряжение и преобразует его в число от 0 до 1023. Когда вал полностью повернут в одном направлении, 0 вольт поступает на входе, а входное значение равно 0. Когда вал полностью повернут в противоположном направлении, на вход подается 5 вольт, а входное значение равно 1023. В промежутке, AnalogRead() возвращает число от 0 до 1023, что пропорционально величине напряжения, подаваемого на контакт.
Код
Инициируем в Setup связь с компьюетером на скорости 9600 бит/сек
Serial.begin(9600);
Далее, в основном цикле вашего кода вам нужно установить переменную для хранения значения сопротивления (которое будет между 0 и 1023, идеально подходит для типа int), поступающего от вашего переменного реситора:
int sensorValue = AnalogRead (A0);
Чтобы изменить значения от 0 до 1023 на диапазон, соответствующий напряжению, которое считывает контакт, вам нужно создать еще одну переменную, число с плавающей запятой, и немного посчитать. Чтобы масштабировать числа от 0,0 до 5,0, разделите 5,0 на 1023,0 и умножьте на sensorValue :
float voltage= sensorValue * (5.0 / 1023.0);
Передаем/выводим полученное значение:
Serial.println(voltage)
Теперь, когда вы откроете Serial Monitor в Arduino IDE (щелкнув значок справа от верхней зеленой полосы или нажав Ctrl+Shift+M), вы должны увидеть постоянный поток чисел в диапазоне от 0,0 до 5,0. Когда вы поворачиваете потенциометр, значения будут меняться в соответствии с напряжением, поступающим на вход A0.
void setup() {
// устанавливаем связь:
Serial.begin(9600);
}
// тело основного цикла:
void loop() {
// считываем значение с нулевого входа:
int sensorValue = analogRead(A0);
// Пересчитываем значение ( 0 - 1023) в вольты (0 - 5В):
float voltage = sensorValue * (5.0 / 1023.0);
// выводим полученное значение:
Serial.println(voltage);
См. также Функция analogRead() | Аппаратная платформа Arduino