Практическое занятие 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°, зеленый – когда больше |