Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Занятие 6 Аналоговый ввод.doc
Скачиваний:
76
Добавлен:
10.03.2016
Размер:
1.13 Mб
Скачать

Курс «Основы робототехники». Занятие 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; // может быть и диапазон от максимума к минимуму

  1. убедитесь, что при вращении резистора меняется яркость светодиода

  2. для передачи данных в компьютер используется набор команд Serial:

    Serial.begin(9600); // установить связь с компьютером со скоростью 9600

    Serial.print("sensor = "); // вывести символы в кавычках ""

    Serial.print(sensorValue); // вывести значение, хранящееся в sensorValue

    Serial.print("\t"); // табуляция (аналогично нажатию кнопки Tab в Word’е

    Serial.println(outputValue); // вывести значение, хранящееся в outputValue и перейти на следующую строку

  3. откройте Монитор порта – кнопка с иконкой лупы справа сверху в среде разработки и убедитесь, что в Мониторе порта показываются числа, меняющиеся в зависимости от угла поворота резистора