Добавить материал и получить бесплатное свидетельство о публикации в СМИ
Эл. №ФС77-60625 от 20.01.2015
Свидетельство о публикации

Автоматическая выдача свидетельства о публикации в официальном СМИ сразу после добавления материала на сайт - Бесплатно

Добавить свой материал

За каждый опубликованный материал Вы получите бесплатное свидетельство о публикации от проекта «Инфоурок»

(Свидетельство о регистрации СМИ: Эл №ФС77-60625 от 20.01.2015)

Инфоурок / Доп. образование / Конспекты / Урок №3 по робототехнике "Подключение нескольких светодиодов к Ардуино"
ВНИМАНИЮ ВСЕХ УЧИТЕЛЕЙ: согласно Федеральному закону № 313-ФЗ все педагоги должны пройти обучение навыкам оказания первой помощи.

Дистанционный курс "Оказание первой помощи детям и взрослым" от проекта "Инфоурок" даёт Вам возможность привести свои знания в соответствие с требованиями закона и получить удостоверение о повышении квалификации установленного образца (180 часов). Начало обучения новой группы: 28 июня.

Подать заявку на курс
  • Доп. образование

Урок №3 по робототехнике "Подключение нескольких светодиодов к Ардуино"

библиотека
материалов

4 урок Arduino


Управление несколькими светодиодами.
В этом
уроке вы узнаете, как управлять несколькими светодиодами. Для этого установите ещё 3 светодиода на плату и соедините их с резисторами и выводами Ardunio. Для того, чтобы включать и выключать светодиоды по очереди надо написать программу:

//Multi LED Blink


int led1Pin = 4;

int led2Pin = 5;

int led3Pin = 6;

int led4Pin = 7;


void setup() {

//установка пинов как ВЫХОД

pinMode(led1Pin, OUTPUT);

pinMode(led2Pin, OUTPUT);

pinMode(led3Pin, OUTPUT);

pinMode(led4Pin, OUTPUT);

}


void loop() {

digitalWrite(led1Pin, HIGH);//зажечь светодиод

delay(1000);//задержка 1 сек

digitalWrite(led1Pin, LOW);//потушить светодиод

delay(1000);//задержка 1 сек


//do the same for the other 3 LEDs

digitalWrite(led2Pin, HIGH);//зажечь светодиод

delay(1000);// задержка 1 сек

digitalWrite(led2Pin, LOW);//потушить светодиод

delay(1000);//задержка 1 сек


digitalWrite(led3Pin, HIGH);//зажечь светодиод

delay(1000);// задержка 1 сек

digitalWrite(led3Pin, LOW);//потушить светодиод

delay(1000);//задержка 1 сек


digitalWrite(led4Pin, HIGH);//зажечь светодиод

delay(1000);// задержка 1 сек

digitalWrite(led4Pin, LOW);//потушить светодиод

delay(1000);//задержка 1 сек

}

Эта программа будет отлично работать, но это не самое рациональное решение. Код надо изменить. Для того, чтобы программа работала раз за разом мы применим конструкцию, которая называется цикл For.
Циклы удобны, когда надо повторить одно и тоже действие несколько раз. В коде, проведенном выше мы повторяем строки

digitalWrite (led4Pin, HIGH);

delay (1000);

digitalWrite (led4Pin, LOW);

delay (1000);

Регулировка яркости светодиодов
Иногда вам надо будет менять яркость светодиодов в программе. Это можно сделать с помощью команды
analogWrite(). Эта команда так быстро включает и выключает светодиод, что глаз не видит это мерцание. Если светодиод половину времени будет включён, а половину выключен, то визуально будет казаться, что он светится в половину своей яркости. Это называется широтно-импульсная модуляция (ШИМ или PWM по-английски). Шим применяется довольно часто, так как с ее помощью можно управлять "аналоговым" компонентом с помощью цифрового кода. Не все выводы Ardunio подходят для этих целей. Только те выводы, около которых нарисовано такое обозначение "~". Вы увидите его рядом с выводами 3,5,6,9,10,11.
Соедините один из ваших светодиодов с одним из выводов ШИМ(у автора это вывод 9). Теперь запуститьскетч мигания светодиода, но прежде измените команду 
digitalWrite() на analogWrite()analogWrite() имеет два аргумента: первый это номер вывода, а второй- значение ШИМ (0-255), применительно к светодиодам это будет их яркость свечения, а для электродвигателей скорость вращения. Ниже представлен код примера для разной яркости светодиода.

//Меняем яркость светодиода


int ledPin = 9;//к этому выводу подсоединен светодиод

void setup() {

pinMode(ledPin, OUTPUT);// инициализация пина на вывод

}


void loop() {

analogWrite(ledPin, 255);//полная яркость (255/255 = 1)

delay(1000);// пауза 1 сек

digitalWrite(ledPin, LOW);//выключить светодиод

delay(1000);//пауза 1 сек


analogWrite(ledPin, 191);//яркость на 3/4 (191/255 ~= 0.75)

delay(1000);//пауза 1 сек

digitalWrite(ledPin, LOW);//выключить светодиод

delay(1000);//пауза 1 сек


analogWrite(ledPin, 127);//половина яркости (127/255 ~= 0.5)

delay(1000);// пауза 1 сек

digitalWrite(ledPin, LOW);//выключить светодиод

delay(1000);//пауза 1 сек


analogWrite(ledPin, 63);//четверть яркости (63/255 ~= 0.25)

delay(1000);// пауза 1 сек

digitalWrite(ledPin, LOW);//выключить светодиод

delay(1000);//пауза 1 сек

}

Попробуйте поменять значение ШИМ в команде analogWrite (),чтобы увидеть, как это влияет на яркость.
Далее вы узнаете, как регулировать яркость плавно от полной до нулевой. Можно ,конечно, скопировать кусок кода 255 раз

analogWrite(ledPin, brightness);

delay(5);//short delay

brightness = brightness + 1;

Но, сами понимаете - это будет не практично. Для этого лучше всего использовать цикл FOR, который использовали ранее.
В следующем примере используются два цикла, один для уменьшения яркости от 255 до 0

for (int brightness=0;brightness=0;brightness--){


analogWrite(ledPin,brightness);

delay(5);


}

delay(5) используется, чтобы замедлить скорость нарастания и уменьшения яркости 5*256=1280 мсек= 1.28 сек.)
В первой строке используется "
brightness-" ,для того чтобы значение яркости уменьшалось на 1, каждый раз, когда цикл повторяется. Обратите внимание, что цикл будет работать до тех пор, пока brightness >=0.Заменив знак > на знак >= мы включили 0 в диапазон яркости. Ниже смоделирован этот скетч.

//плавно меняем яркость


int ledPin = 9;//к этому пину подключен светодиод


void setup() {

pinMode(ledPin, OUTPUT);// инициализация пина на выход

}


void loop() {

//плавно увеличиваем яркость (0 to 255)

for (int brightness=0;brightness=0;brightness--){

analogWrite(ledPin,brightness);

delay(5);

}


delay(1000);//ждем 1 сек

//плавно уменьшаем яркость (255 to 0)

for (int brightness=255;brightness>=0;brightness--){

analogWrite(ledPin,brightness);

delay(5);

}


delay(1000);//ждем 1 сек

}

}

Это видно не очень хорошо, но идея понятна.



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


Выберите специальность, которую Вы хотите получить:

Обучение проходит дистанционно на сайте проекта "Инфоурок".
По итогам обучения слушателям выдаются печатные дипломы установленного образца.

ПЕРЕЙТИ В КАТАЛОГ КУРСОВ

Автор
Дата добавления 07.02.2016
Раздел Доп. образование
Подраздел Конспекты
Просмотров1040
Номер материала ДВ-426558
Получить свидетельство о публикации
Похожие материалы

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