Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Занятие 5 Цифровой ввод

.doc
Скачиваний:
64
Добавлен:
11.03.2016
Размер:
573.95 Кб
Скачать
  1. Курс «Основы робототехники». Занятие 5. Цифровой ввод

Arduino Uno может считывать два уровня напряжения: +5 В (HIGH, логическая 1) и 0 В (LOW, логический 0) любым своим входом: как цифровыми D0…D13, так и аналоговыми A0…A5

Примечание: используя кодирование информации, можно подать на входы и более сложную информацию, например, с цифрового датчика температуры DS18B20

Для считывания уровня напряжения на пине Arduino используется команда

digitalRead(номер пина);

она выдает состояние HIGH, если на пине +5 В или состояние LOW, если на пине 0 В

Примечание: перед использованием на пине команды digitalRead обязательно нужно настроить этот пин в блоке setup как входной, используя команду pinMode(номер пина, INPUT);

      1. Применение цифрового ввода:

  • подключение к контроллеру отдельных кнопок или их набора (создание клавиатуры) для управления и ввода информации

  • датчики прикосновения на роботах на основе кнопок – «усики» робота

  • концевые выключатели на станках с ЧПУ и 3D принтерах, определяющие минимумы и максимумы движения рабочих инструментов по трем осям (X, Y, Z) на основе кнопок или оптических датчиков

      1. Практическое занятие 1. Опрос кнопки

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

  • кнопка

  • резистор на 1 кОм

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

  1. схема для опроса кнопки представлена ниже. Принцип работы: когда кнопка SA1 отжата, +5 В никуда не подключен и напряжение на цифровом входе равно напряжению на Gnd (0 В, LOW). Когда кнопка SA1 нажата, +5 В через нее подключается через нее ко входу Digital и напряжение на нем тоже становится +5 В (HIGH)

  1. соберите приведенную выше схему на макетной плате:

  1. з апустите среду разработки Arduino IDE, откройте пример программы для определения состояния кнопки (нажата или отжата) Файл / Примеры / Digital / Button

  2. переведем комментарии к данной программе на русский язык:

const int buttonPin = 2; // номер пина, к которому подключена кнопка

const int ledPin = 13; // светодиод на плате Arduino

int buttonState = 0; // переменная для хранения статуса кнопки (нажата или не нажата)

void setup() {

pinMode(ledPin, OUTPUT); // пин 13 – выходной (управление светодиодом)

pinMode(buttonPin, INPUT); // пин 2 – входной (чтение кнопки)

}

void loop(){

buttonState = digitalRead(buttonPin); // читаем состояние кнопки и записываем в переменную buttonState

if (buttonState == HIGH) { // если в переменной buttonState высокий уровень

digitalWrite(ledPin, HIGH); // зажжем светодиод

}

else { // иначе

digitalWrite(ledPin, LOW); // погасим светодиод

}

}

  1. В данной программе используется неизвестные нам ранее команды if, else (если, иначе). Они работают так:

if (условие) {

// выполнить, если условие выполняется

}

else {

// выполнить, если условие не выполняется

}

Примеры условия:

  • x = = 10 – выполняется, если переменная x равна 10

  • x != 10 – выполняется, если переменная x не равна 10

  • x > 10 – выполняется, если переменная x больше 10

  • Подключите контроллер к компьютеру, загрузите данную программу и попробуйте работу: при нажатии/отпускании кнопки светодиод L на плате Arduino должен загораться или потухать

        1. Практическое занятие 2. Управление светофором кнопкой

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

    2. модифицируйте программу Button, чтобы реализовать алгоритм работы для светофора, переключающегося кнопкой:

    • Если кнопка нажата, выполнить:

      • помигать красным светодиодом

      • включить желтый светодиод на 3 секунды

      • включить зеленый светодиод на 3 секунды

      • помигать зеленым светодиодом

      • включить желтый светодиод на 3 секунды

      • включить красный светодиод

    • Иначе

      • включить красный светодиод

        1. Практическое занятие 3. Модель управления движением робота с помощью трех кнопок: Влево, Вперед, Вправо

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

    • три кнопки

    • три резистора на 1 кОм

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

    • провода со штырьками на обоих концах

    Сделаем программу, моделирующую управление двумя моторами (когда будет изучено управление драйвером двигателей, ее можно будет использовать для управления настоящими моторами, подключенными вместо светодиодов через драйвер):

    • Когда нажата кнопка Влево (левая на макетной плате) – зажигается зеленый светодиод (робот поворачивает влево)

    • Когда нажата кнопка Вправо (правая) – горит красный светодиод (робот поворачивает вправо)

    • Когда нажата кнопка Вперед (центральная) – горят оба светодиода (робот едет вперед)

    • Когда ни одна кнопка не нажата – светодиоды не горят (робот стоит)

    Соберите приведенную схему и напишите программу, реализующую модель управления:

    1. откройте программу Файл / Примеры / Digital / Button

    2. создайте переменные трех пинов кнопок buttonPin_1, buttonPin_2 и buttonPin_3

    3. создайте переменные двух пинов светодиодов ledPin_1 и ledPin_2

    4. создайте переменные трех состояний кнопок buttonState_1, buttonState_2 и buttonState_3

    5. припишите два светодиода как выходные (OUTPUT) и три кнопки как входные (INPUT)

    6. опросите (digitalRead) все три кнопки

    7. проведите три проверки (if) состояний кнопок и по результатам зажгите и погасите соответствующие светодиоды

    8. сохраните написанную программу для использования в занятии с моторами роботов в папке Мои документы / Learning / Ваша фамилия латиницей

      1. Домашнее задание

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

    Примечание: если Вы уже имеете собственный контроллер, но еще не имеете дополнительных компонентов к нему, для возможности опробовать написанную программу дома, обратитесь к преподавателю для получения компонентов для выполнения, которые нужно вернуть на следующем занятии. Также можно после занятия под руководством преподавателя спаять необходимые компоненты, которые можно будет забрать насовсем.

        1. Задача. Две кнопки (кнопка 1 и кнопка 2) + три светодиода – красный (К), желтый (Ж) и зеленый (З)

    Если не указано другое, при отсутствии нажатия кнопок все светодиоды потушены

    Задание

    Задание

    1

    1 нажата – горит К

    2 нажата – горит З

    10

    Не нажаты обе кнопки – горит З, нажата одна из кнопок (любая) – горит Ж, нажаты обе кнопки – горит К

    2

    1 нажата – горят К и Ж

    2 нажата – горит З

    11

    1 нажата – все светодиоды загорелись, 2 нажата – все светодиоды погасли

    3

    1 нажата – горит Ж

    2 нажата –горят З и К

    12

    Не нажаты обе кнопки – горит З, нажата 1 - горит Ж, нажата 2 – горит К

    4

    1 нажата – помигать К 10 раз

    2 нажата – помигать З 5 раз

    13

    Любая из кнопок нажата – загораются все три светодиода, горят 1 секунду и потухают

    5

    1 нажата – горит К, 2 нажата – горит З, нажаты обе кнопки – горят К и З

    14

    1 нажата – загорелись К и Ж и продолжают гореть (З не горит), 2 нажата – загорелся З и продолжает гореть (К и Ж не горят)

    6

    1 и 2 нажаты одновременно – загораются все светодиоды и продолжают гореть. 1 и 2 нажаты одновременно еще раз – все светодиоды потухают

    15

    1 нажата и отпущена – загорается К, остальные тухнут, 2 нажата и отпущена – загорается З, остальные тухнут

    7

    1 нажата – помигать З и Ж 7раз

    2 нажата – помигать К 4 раза

    16

    1 нажата – горит К, 2 нажата – горит З, нажаты обе кнопки – горит Ж

    8

    1 нажата – помигать К 10 раз

    2 нажата – помигать З 5 раз

    17

    Нажата 1 – включается один случайный светодиод, нажата 2 – включается два случайных светодиода

    9

    В исходный момент горит К

    Нажата 1 – светодиод переключается К->Ж->З (на З останавливается), нажата 2 – З->Ж->К (на К останавливается)

    18

    Три раза подряд нажата 1 – загорается зеленый на 1 секунду, 3 раза подряд 2 – загорается К на 1 секунду