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

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

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

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

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

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

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

 

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

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); }

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

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

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

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

Задание Задание
Переменный резистор и 2 светодиода, мигающие по очереди с частотой, зависящей от угла поворота резистора Терморезистор, два светодиода. Вывод температуры в Монитор порта, три уровня температуры: холодно – горят оба светодиода, средне – один, тепло – ни одного (модель нагревателя)  
Переменный резистор, выдающий в Монитор порта угол поворота: 0, если резистор в 0 положении, 180, если повернут на 180° и т.д. Три фоторезистора. Темно на среднем и светло на крайних – в Монитор порта команда «Forward». Темно на левом – команда «Right». . Темно на правом – команда «Left» (модель робота на линии)  
Терморезистор, один светодиод. Светодиод загорается, когда температура на терморезисторе ниже определенного уровня   Фоторезистор. В зависимости от уровня освещенности контроллер выводит в Монитор порта сообщение «Temno» «Sredne» или «Svetlo»
Фоторезистор, один светодиод. Светодиод загорается, когда яркость на фоторезисторе ниже определенного уровня (прикрыт рукой)   Терморезистор, два светодиода. Если температура ниже определенного уровня – горит один светодиод, если выше – горит другой светодиод
Фоторезистор, два светодиода. Фоторезистор имитирует компас: крайние положения – 0 и 360° – юг, среднее положение 180° – север. Вывести в Монитор порта пересчитанный угол поворота резистора и команды: если <175° – команда «Left», горит З, > 185°– команда «Right», горит К, от 175° до 185° – команда «Forward», горят оба светодиода (модель робота с компасом) Светодиод, фоторезистор. Вывести полученные с фоторезистора значения в Монитор порта. При освещенности ниже определенного уровня (фоторезистор закрыт рукой) светодиод горит, а при большей освещенности (фоторезистор открыт) светодиод не горит
Терморезистор и 5 светодиодов. Количество горящих светодиодов зависит от температуры терморезистора (от 22 до 36 градусов) 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 В – горят пять светодиодов
Переменный резистор и 5 светодиодов. Количество горящих светодиодов зависит от угла поворота резистора Терморезистор. В зависимости от уровня температуры контроллер выводит в Монитор порта сообщение «Holodno» «Sredne» или «Teplo»
Фоторезистор, два светодиода. Если освещенность ниже определенного уровня – горит один светодиод, если выше – горит другой светодиод Два терморезистора. Вывод в Монитор порта температуру обоих и разницу между показаниями в градусах Цельсия
Светодиод, терморезистор. Сделать зависимость яркости мигания от температуры, измеренной датчиком. Переменный резистор, 2 светодиода – красный и зеленый. В Монитор порта вывести угол поворота: 0, если резистор в 0 положении, 180, если повернут на 180° и т.д. Горит красный светодиод, когда угол меньше 90°, зеленый – когда больше