Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Практическое занятие 2. Светофор с миганием




Напишем более сложный алгоритм работы и изменим программу таким образом, чтобы поведение светодиодов было похоже на настоящий светофор

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

· подождать три секунды

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

· включить желтый светодиод

· подождать три секунды

· выключить желтый светодиод

· включить зеленый светодиод

· подождать три секунды

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

 

В этом случае задачу «помигать красным светодиодом 4 раза» можно решить «в лоб» таким способом:

digitalWrite(led_ red, HIGH); // включить светодиод delay(500); // подождать полсекунды digitalWrite(led_ red, LOW); // выключить светодиод delay(500); // подождать полсекунды digitalWrite(led_ red, HIGH); // включить светодиод delay(500); // подождать полсекунды digitalWrite(led_ red, LOW); // выключить светодиод delay(500); // подождать полсекунды digitalWrite(led_ red, HIGH); // включить светодиод delay(500); // подождать полсекунды digitalWrite(led_ red, LOW); // выключить светодиод delay(500); // подождать полсекунды digitalWrite(led_ red, HIGH); // включить светодиод delay(500); // подождать полсекунды digitalWrite(led_ red, LOW); // выключить светодиод delay(500); // подождать полсекунды

 

Но такой вариант трудоемок, приводит к большому объему написанного кода и вследствие этого к трудности чтения программы и последующего изменения. Для многократных повторений одной и той же части кода можно использовать цикл for:

for (начальное значение переменной счетчика, конечное значение переменной счетчика, прибавление счетчика){ код, который нужно повторить несколько раз }

 

С использованием цикла for код, выполняющий задачу «помигать красным светодиодом 4 раза» будет выглядеть так:

for(int i = 1; i <= 4; i = i + 1) { // начать цикл: от 1 до 4 – т.е. блок между // фигурными скобками { } повторится 4 раза, при i=1, i=2, i=3 и i=4 digitalWrite(led_red, HIGH); // включить красный светодиод delay(500); // подождать полсекунды digitalWrite(led_red, LOW); // погасить красный светодиод delay(500); // подождать полсекунды }

 

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

int led_red = 11; // красный светодиод подключен к пину 11 int led_yellow = 7; // желтый светодиод подключен к пину 7 int led_green = 2; // зеленый светодиод подключен к пину 2   void setup() { // прописываем пины, к которым подключены светодиоды, как выходные pinMode(led_red, OUTPUT); pinMode(led_yellow, OUTPUT); pinMode(led_green, OUTPUT); } void loop() { digitalWrite(led_red, HIGH); // включить красный светодиод delay(3000); // подождать три секунды for(int i = 1; i <= 4; i = i + 1) { // повторить 4 раза digitalWrite(led_red, HIGH); // включить красный светодиод delay(500); // подождать полсекунды digitalWrite(led_red, LOW); // погасить красный светодиод delay(500); // подождать полсекунды }   digitalWrite(led_yellow, HIGH); // включить желтый светодиод delay(3000); // подождать три секунды digitalWrite(led_yellow, LOW); // выключить желтый светодиод   digitalWrite(led_green, HIGH); // включить зеленый светодиод delay(3000); // подождать три секунды for(int i = 1; i <= 4; i = i + 1) { // повторить 4 раза digitalWrite(led_ green, HIGH); // включить зеленый светодиод delay(500); // подождать полсекунды digitalWrite(led_ green, LOW); // погасить зеленый светодиод delay(500); // подождать полсекунды } } // начать цикл loop снова

6. Напишите в среде Arduino программу, приведенную выше (выделенный полужирным текст, комментарии писать не обязательно). Для ускорения работы можно скопировать текст программы из файла занятия в электронном виде

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

8. Сохраните программу в папку Learning / Ваша фамилия под именем Svetofor_Blink

3.3. Управление уровнем напряжения. Аналоговый выход – команда analogWrite

Команда analogWrite (номер пина, уровень) позволяет подать на определенный пин Arduino (поддерживающих данную функцию – 3, 5, 6, 9, 10, 11 – на Arduino Uno отмечены штрихом) значение от 0 до 255, что соответствует напряжению от 0 В до +5 В на контакте. Примеры:

analogWrite (6, 200); – напряжение на пине 6 станет равным 5·200/255= 3,9 В

analogWrite (11, 50); – напряжение на пине 11 станет равным 5·50/255= 1 В

 

Таким образом, постепенно увеличивая/уменьшая переданное в analogWrite значение можно добиться плавного роста/падения напряжения на выходе. Подключенный к одному из PWM-портов Arduino (3, 5, 6, 9, 10, 11) светодиод будет плавно загораться и затухать (fading).

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





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 317 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Либо вы управляете вашим днем, либо день управляет вами. © Джим Рон
==> читать все изречения...

2302 - | 2033 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.