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

Практическое занятие 6. Робот-светофил или следующий по линии, на фоторезисторах

Реализация простейшего зрения для робота, позволяющего ехать на источник света или двигаться по линии на полу

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

  • два фоторезистора

  • два постоянных резистора на 10 кОм

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

  1. соберите схему опроса двух фоторезисторов:

  1. загрузите в контроллер следующую программу:

    int photoPin1 = A0; // первый фоторезистор подключен к аналоговому входу A0

    int photoPin2 = A1; // второй фоторезистор подключен к аналоговому входу A1

    int ledPin1 = 9; // первый светодиод подключается к digital pin 9

    int ledPin2 = 7; // первый светодиод подключается к digital pin 7

    int val1 = 0; // значение с фоторезистора 1

    int val2 = 0; // значение с фоторезистора 2

    void setup()

    {

    Serial.begin(9600);

    pinMode(ledPin1, OUTPUT);

    pinMode(ledPin2, OUTPUT);

    }

    void loop() {

    val1 = analogRead(photoPin1); // считываем значение с фоторезистора 1

    val2 = analogRead(photoPin2); // считываем значение с фоторезистора 2

    Serial.print("values: "); // выводим значения в COM-порт

    Serial.print(val1);

    Serial.print("\t");

    Serial.println(val2);

    if(val1==val2) // если значения равны - зажигаем оба светодиода

    {

    digitalWrite(ledPin1, HIGH);

    digitalWrite(ledPin2, HIGH);

    Serial.println("forward"); // едем вперед

    }

    if(val1 > val2) // если освещённость первого больше – зажигаем

    { // первый светодиод, а второй гасим

    digitalWrite(ledPin1, HIGH);

    digitalWrite(ledPin2, LOW);

    Serial.println("left"); // едем влево

    }

    else // если освещённость второго больше – зажигаем

    { // второй светодиод, а первый гасим

    digitalWrite(ledPin2, HIGH);

    digitalWrite(ledPin1, LOW);

    Serial.println("right"); // едем вправо

    }

    delay(200);

    }

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

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

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

Задача. Аналоговый датчик + светодиоды

Задание

Задание

1

Переменный резистор и 2 светодиода, мигающие по очереди с частотой, зависящей от угла поворота резистора

10

Терморезистор, два светодиода. Вывод температуры в Монитор порта, три уровня температуры: холодно – горят оба светодиода, средне – один, тепло – ни одного (модель нагревателя)

2

Переменный резистор, выдающий в Монитор порта угол поворота: 0, если резистор в 0 положении, 180, если повернут на 180 и т.д.

11

Три фоторезистора. Темно на среднем и светло на крайних – в Монитор порта команда «Forward». Темно на левом – команда «Right». . Темно на правом – команда «Left» (модель робота на линии)

3

Терморезистор, один светодиод. Светодиод загорается, когда температура на терморезисторе ниже определенного уровня

12

Фоторезистор. В зависимости от уровня освещенности контроллер выводит в Монитор порта сообщение «Temno» «Sredne» или «Svetlo»

4

Фоторезистор, один светодиод. Светодиод загорается, когда яркость на фоторезисторе ниже определенного уровня (прикрыт рукой)

13

Терморезистор, два светодиода. Если температура ниже определенного уровня – горит один светодиод, если выше – горит другой светодиод

5

Фоторезистор, два светодиода. Фоторезистор имитирует компас: крайние положения – 0 и 360 – юг, среднее положение 180 – север. Вывести в Монитор порта пересчитанный угол поворота резистора и команды: если <175 – команда «Left», горит З, > 185– команда «Right», горит К, от 175 до 185 – команда «Forward», горят оба светодиода (модель робота с компасом)

14

Светодиод, фоторезистор. Вывести полученные с фоторезистора значения в Монитор порта. При освещенности ниже определенного уровня (фоторезистор закрыт рукой) светодиод горит, а при большей освещенности (фоторезистор открыт) светодиод не горит

6

Терморезистор и 5 светодиодов. Количество горящих светодиодов зависит от температуры терморезистора (от 22 до 36 градусов)

15

5 светодиодов, переменный резистор. Вывести значения с него в формате напряжения (от 0 до 5 Вольт) на Монитор порта. Формат строчки сообщения: «Voltage = X». Если напряжение на резисторе:

меньше 0,5 В – светодиоды не горят

0,5…1,5 В – горит один светодиод

1,5…2,5 В – горит два светодиода

2,5…3,5 В – горят три светодиода

3,5…4,5 В – горят четыре светодиода

больше 4,5 В – горят пять светодиодов

7

Переменный резистор и 5 светодиодов. Количество горящих светодиодов зависит от угла поворота резистора

16

Терморезистор. В зависимости от уровня температуры контроллер выводит в Монитор порта сообщение «Holodno» «Sredne» или «Teplo»

8

Фоторезистор, два светодиода. Если освещенность ниже определенного уровня – горит один светодиод, если выше – горит другой светодиод

17

Два терморезистора. Вывод в Монитор порта температуру обоих и разницу между показаниями в градусах Цельсия

9

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

18

Переменный резистор, 2 светодиода – красный и зеленый. В Монитор порта вывести угол поворота: 0, если резистор в 0 положении, 180, если повернут на 180 и т.д. Горит красный светодиод, когда угол меньше 90, зеленый – когда больше