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

Практическое занятие 3. Опрос аналогового датчика освещенности

Нужные компоненты:

  • фоторезистор

  • постоянный резистор на 1 кОм

  • светодиод с токоограничивающим резистором

  • провода со штырьками на обоих концах: красный (+5 В), синий или черный (Gnd), два произвольного цвета (но не красного, синего или черного)

  1. научимся получать информацию с аналогового датчика, сопротивление которого меняется в зависимости от измеряемой величины (фоторезистор, терморезистор, магниторезистор). Для получения зависимости напряжения от сопротивления датчика нужно соберем делитель напряжения, состоящий из постоянного резистора и фоторезистора (схема справа)

  2. для измерения напряжения на аналоговом входе (зависящем от уровня освещения фоторезистора) используйте программу Файл / Примеры / Analog / AnalogInOutSerial, выдающую данные в Монитор порта и зависимостью яркости светодиода

  3. сделаем модель регулятора уровня освещения в комнате в зависимости от внешнего освещения: измените в программе функцию в map на map(sensorValue, 1023, 0, 0, 255) и загрузите в контроллер. После этого светодиод должен гореть тем ярче, чем ниже освещение фоторезистора

Практическое занятие 4. Опрос аналогового датчика температуры

  1. вместо фоторезистора подключите терморезистор (длинный зеленый резистор, согните ножки так, чтобы они входили в предыдущую схему вместо ножек фоторезистора)

  2. откройте Монитор порта и запишите выдаваемые контроллером значения при комнатной температуре (без нагрева, 22С) и при температуре тела (36С, нагревать терморезистор пальцем и подождать, пока значение установится)

  3. используя функцию map, напишите на основе AnalogInOutSerial программу пересчета значений с аналогового датчика в градусы Цельсия и вывод в Монитор порта:

    temperature = map(sensorValue, записанное значение при 22С, записанное значение при 36С, 22, 36);

    Serial.print("temperature = " );

    Serial.println(temperature);

  4. загрузите программу в контроллер и убедитесь, что при изменении температуры терморезистора меняется значение, выдаваемое вМонитор порта

Практическое занятие 5. Опрос кнопок шилда с жк индикатором

В плате, устанавливаемой поверх Arduino Uno, содержащей ЖК индикатор и кнопки (LCD Shield) для опроса кнопок используется схема справа. В зависимости от нажатой кнопки меняется сопротивление нижнего резистора, соответственно, меняется напряжение на входе A0. Каждой нажатой кнопке соответствует определенное напряжение.

Эта схема позволяет подключить большое количество кнопок на один вход Arduino.

  1. установите шилд с ЖК индикатором над Arduino Uno

  2. загрузите программу Файл / Примеры / Analog / AnalogInOutSerial в контроллер

  3. нажмите на все кнопки по очереди (кроме Reset) и запишите значения уровней, выдаваемые Монитором порта

  4. подключите к плате пять светодиодов разных цветов с токоограничивающими резисторами. Используйте аналоговые входы ЖК индикатора. Для использования их как цифровых используется соответствие: А0=14, А1=15 и т.д.

  5. напишите программу, которая включает определенный светодиод при нажатии на определенную кнопку. Для облегчения программирования условий запишите значения, полученные для каждой кнопки, в переменные right, up и т.д. Приведен фрагмент кода программы

Примечание: вместо x1…x4 нужно вставить значения, которые записали в пункте 3

int right = 0; // значение, выдаваемое при нажатии кнопки Right

int up = x1; // значение, выдаваемое при нажатии кнопки Up

int down = x2; // значение, выдаваемое при нажатии кнопки Down

int left = x3; // значение, выдаваемое при нажатии кнопки Left

int select = x4; // значение, выдаваемое при нажатии кнопки Select

if (sensorValue == right) { // если снятое с аналогового входа значение равно значению, определенному для нажатия кнопки Right

digitalWrite(led_right, HIGH); // зажжем светодиод индикации Вправо

}

else { // иначе

digitalWrite(led_right, LOW); // погасим светодиод индикации Вправо

}

  1. загрузите написанную программу в контроллер и убедитесь, что при нажатии на ЖК шилде на кнопку загорается соответствующий светодиод