Курс «Основы робототехники». Занятие 6 Аналоговый ввод
Arduino Uno на пинах аналогового ввода A0…A5 может определять определенный уровень напряжения от 0 до +5 В (например, 1 В, 3 В и т.д.),
Опрос аналогового входа проводится командой analogRead:
analogRead(аналоговый пин);
В качестве аналогового пина в Arduino Uno можно указать А0…А5
Команда выдает значения от 0 до 1023, соответствующие значениям от 0 до 5 В на входе (0 = 0 В, 1023 = 5 В, 512 = 2,5 В и т.д.)
Применение аналогового ввода:
· управление уровнем с помощью переменного резистора, например, громкостью звука, яркостью света и т.д.
· чтение информации с аналоговых датчиков (например, температуры, освещенности, громкости звука, уровня примесей в воздухе, магнитного поля), которые выдают уровень напряжения, соответствующий уровню измеряемого параметра
· измерение уровня напряжения на батареях и аккумуляторах (при этом уровень напряжения выше +5 В переводится в диапазон 0…+5 В, используя делитель напряжения на двух резисторах)
· измерение тока (например, определения, какой ток генерирует солнечная батарея, ветрогенератор), измеряя напряжение на резистивном шунте (резисторе очень малого сопротивления – порядка 1 Ом)
· опрос нескольких кнопок, подключенных к одному аналоговому входу
Практическое занятие 1. Опрос переменного резистора
Нужные компоненты:
· переменный резистор
· три провода со штырьками на обоих концах: красный (+5 В), синий или черный (Gnd), один произвольного цвета (но не красного, синего или черного)
Переменный резистор можно представить как два последовательно соединенных резистора, где средний вывод – точка соединения. Данная схема является делителем напряжения – на резисторе, обладающем бОльшим сопротивлением, падает бОльшее напряжение. Поворачивая ручку переменного резистора, мы меняем соотношение сопротивлений и таким образом меняем напряжение на средней ножке.
1. подключите переменный резистор по схеме
2. запустите среду разработки Arduino IDE и загрузите в контроллер программу Файл / Примеры / Analog / AnalogInput
3. попробуйте поворачивать ручку резистора. Светодиод L на плате должен мигать с периодом, зависящим от угла поворота резистора (который меняет напряжение на средней ножке)
Практическое занятие 2. Управление яркостью светодиода, чтение в Монитор порта
1. добавьте к предыдущей схеме светодиод с токоограничивающим резистором (на контакт D9), который будет изменять яркость в зависимости от уровня напряжения на A0:
2. загрузите в контроллер программу Файл / Примеры / Analog / AnalogInOutSerial
В данной программе для пересчета из диапазона входных значений 0…1023 (считанный analogRead) в диапазон выходных значений 0…255 (записываемый analogWrite) используется команда map:
map (пересчитываемое число, минимум входного, максимум входного, минимум выходного, максимум выходного)
map(100, 0, 1023, 0, 5) = 0,488; // пересчет в 5 В (100 на входе = 0,488 Вольт)
map(5, 0, 10, 0, 1000) = 500; // середина диапазона
map(0, 1023, 0, 0, 255) = 255; // может быть и диапазон от максимума к минимуму
3. убедитесь, что при вращении резистора меняется яркость светодиода
4. для передачи данных в компьютер используется набор команд Serial:
Serial.begin(9600); // установить связь с компьютером со скоростью 9600 Serial.print("sensor = "); // вывести символы в кавычках "" Serial.print(sensorValue); // вывести значение, хранящееся в sensorValue Serial.print("\t"); // табуляция (аналогично нажатию кнопки Tab в Word’е Serial.println(outputValue); // вывести значение, хранящееся в outputValue и перейти на следующую строку |
5. откройте Монитор порта – кнопка с иконкой лупы справа сверху в среде разработки и убедитесь, что в Мониторе порта показываются числа, меняющиеся в зависимости от угла поворота резистора