Азбука микроэлектроники. Урок 3. "Бегущие огни" или цикл For KosachenkoSV's blog / 25.08.2015 Предыдущие посты:Азбука микроэлектроники. ВведениеАзбука микроэлектроники. Урок 1. Светодиоды. Blink. СветофорАзбука микроэлектроники. Урок 2. Кнопка. ButtonЗанятие №3. «Бегущие огни» или цикл For В котором мы рассмотрим применение алгоритмической конструкции цикл "For".Что хотимСобираем схему и программируем различные эффекты «бегущих огней».Что потребуется Arduino 8 LED диодов 8 резисторов на 220 Ом Этапы работы Собираем схему Пишем программу Делаем программу короче и проще Подсоединяем плату к компьютеру и прошиваем Наслаждаемся Экспериментируем Снимаем на видео Собираем схемуМы уже знаем, что светодиоды нужно подключать через токоограничивающие резисторы (см. Урок №1). Чтобы эффект «бегущих огней» был эффектней, нужно разместить светодиоды как можно ближе друг к другу. Собираем такую схему.Пишем программуЗачем вообще нужен цикл, если мы уже делали огонёк без всяких циклов? (если не считать, что у нас вообще все команды программы находится в бесконечном цикле loop())Ну, давайте начнём писать программу, как обычно с инициализации портов в режиме «ВЫВОД» (OUTPUT):Ужас! Куча одинаковых команд. Почти одинаковых.К счастью, мы можем написать команду pinMode один раз и заставить её повторяться многократно в цикле для различных значений некоторой переменной величины.Обозначим эту переменную-счетчик буквой i. Теперь ту же самую процедуру инициализации портов перепишем, используя цикл. В программе применен цикл for с таким заголовком: for (int i=6; i<=13; i++)По-русски это можно прочитать так: к целочисленной переменной i, которая вначале равна 6, нужно прибавлять 1 (i++), пока её значение меньше либо равно 13. Какие числа побывают в переменной i? Перепишем их: 6, 7, 8, 9, 10, 11, 12, 13,- итого восемь разных чисел. Как раз те числа, что нам нужны для номеров инициализируемых портов! При каждом значении переменной i будут выполняться операции, записанные в фигурных скобках (тело цикла). А в фигурных скобках мы написали команду pinMode, которая настраивает порт с номером, равным числу из переменной i, в режим «ВЫВОД» (OUTPUT). Таким образом обе написанные процедуры выполняют одни и те же команды, но вторая более компактна и профессиональна.Идём далее. Реализуем "простой огонёк", бегущий от диода на 6 пине, до диода на 13. Будем по очереди зажигать диоды и через небольшую паузу гасить по номеру их пина: 6й, 7й, 8й диод… до 13-го.void loop() { for (int i=6; i<=13; i++) { digitalWrite(i,HIGH); //зажигаем delay(50); //ждем 50 миллисекунд digitalWrite(i,LOW); //гасим }}Программа целиком:Прошиваем, получается!ЭкспериментируемТеперь пусть у нас последовательно зажгутся все диоды, а потом последовательно погаснут…А может, пусть огонёк бегает туда-сюда?Можно придумать и другие способы движения огонька.Для варианта из 5 диодов на 8-12 пинах (здесь используется вложенный цикл, т.е. цикл в цикле).Попробуйте с помощью цикла for построить различные варианты движения огонька в «бегущих огнях».Обязательно снимайте свои бегущие огни на видео, чтобы показать родным и друзьям.Заметки для учителя1. На этом занятии ребята повторяют работу со светодиодами и токоограничивающими резисторами, поэтому схему они соберут быстро. Большую часть времени посвятим программированию «бегущих огней».2. Сразу говорим, что бегущие огни нужно записать на видео «чтобы показать родителям и друзьям». С современными смартфонами для школьников записать видео — не проблема. Если у кого-нибудь из ребят телефон не записывает видео, попросите его друзей записать на видео его работу, а потом скопировать это видео через интернет. 3. Как только у кого-нибудь из группы заработает первая «бегущая строка» - громко акцентируйте на этом факте внимание всей группы: интенсивность работы у всех сразу возрастет, а потом ребята начнут «мерятся» разными вариантами мигания «бегущих строк» - эдакое творческое соревнование. arduino freeduino ТФТЛ микроэлектроника