Arduino скетч бегущий огонь



Урок 3 — Подключаем 2 сдвиговых регистра к Arduino. Пишем скетч «Бегущие огни»

В предыдущем уроке: Урок 2 — Подключаем сдвиговый регистр 74НС595 к Arduino. «Бегущие» огни . Мы научились подключать сдвиговый регистр к плате Arduino . Написали небольшой скетч для управления подключенными светодиодами.

После этого урока мне стали задавать вопросы как можно подключить 2 и больше сдвиговых регистра 74HC595 к Arduino UNO. Не смотря на то что я уже рассказывал в видео Часы на Arduino. Паяем 74HC595N для управления LED. Часть 1 как подключить и уровнять сдвиговыми регистрами, у многих возникает сложность в данной теме.

Я решил снять данный урок. И написает небольшой скетч для управления встречными бегущими огнями.

Для Видео урока нам понадобится:

— 2 Сдвиговых регистра 74HC595

Подключил светодиоды к Arduino вот по такой схеме.

Подключение практически такое же как и подключений одного сдвигового регистра. Только при подключении с первого сдвигового регистра ко второму. Нужно с 9 ножки 74НС595 подключить к 14 ножки сдвигового регистра.

При написании скетча трудностей у вас возникнуть не должно. Так как Программа будет с небольшим изменением.

Следующий урок:

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

Понравилась статья? Поделитесь ею с друзьями:

Источник

«Бегущий огонёк» средствами Arduino UNO.

В этой статье мы предлагаем ознакомиться с основами программирования платы Arduino UNO, предназначенной для создания простых систем робототехники и автоматики. Мы соберём схему из семи светодиодов, которые будут последовательно загораться и гаснуть.
Для этого нам понадобится сама плата Arduino UNO, макетная плата, USB кабель для подключения платы и её и питания от ноутбука, семь разноцветных светодиодов и столько же резисторов на 220 Ом и восемь небольших проводочков.

Также нам потребуется программное обеспечение, скачанное с официального сайта разработчика — www.arduino.cc
Запускаем установщик, следуем всем инструкциям установки и у нас на десктопе появляется ярлык среды разработки программ для Arduino.
Но прежде чем писать программный код, нужно собрать схему.
Наша программа записывается в микроконтроллер на плате через USB кабель.

На плате есть 14 цифровых контактов для ввода/вывода, к которым мы можем присоединить проводами диоды.

Диоды помещаем на макетную плату. К аноду каждого из них присоединяем один конец резистора на 220 Ом. К другому концу резистора присоединяем проводок, который втыкается в один из портов ввода-вывода платы. Мы воткнули во второй.

Все катоды выводим на один провод, который подключаем к контакту платы GND — земля.

Далее запускаем среду разработки и приступаем к написанию кода программы.

По-умолчанию у нас в программе есть 2 функции:

void setup()
<
>

В ней задаются начальные параметры и настройки.

void loop()
<
>

Функция, в которой будут циклически повторяться указанные нами действия.

Для начала напишем простую программу, мигающую одной лампочкой.

/*Программа для схемы с одним мигающим диодом*/
//целочисленная константа, которой присваивается значение 2го контакта
const int LED = 2;

void setup() <
//2 порт задаём как вывод, т.е он подаёт напряжение в схему
pinMode(LED, OUTPUT);
//диод в выключенном состоянии LOW = 0 В (вольт)
digitalWrite(LED, LOW);
>

void loop() <
// включаем диод HIGH = 5 В (вольт)
digitalWrite(LED, HIGH);
// задержка на 100 мс (миллисекунд)
delay(100);
// выключаем диод
digitalWrite(LED, LOW);
// задержка
delay(100);
>

Подключаем плату Arduino к компьютеру через USB кабель. Если это первое подключение — ждем, когда установятся драйвера.

Затем нужно указать в разделе «Инструменты» тип платы: Arduino — UNO.

А также, порт, через который будут передаваться данные.

После выбора порта жмём кнопочку со стрелкой «Загрузка» и наша программа загружается в микроконтроллер.

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

Чтобы эти диоды попеременно включались и выключались произведем соответствующие изменения в коде программы.

/*Программа для схемы с 7ю мигающии диодами. Сначала все последовательно включаются, потом последовательно выключаются*/
/*целочисленная переменная, которой присваивается начальное значение 2 контакта*/
int LED = 2;

void setup() <
/*цикл, перебирающий порты от 2 до 8 и присваивающий начальные значения как порт вывода и выключен*/
for(int i = 2; i /*2 цикла, перебирают порты от 2 до 8, сначала попеременно включают диоды, с задержкой 100 мс, затем попеременно выключают*/
for(int i = 2; i /*Программа для схемы с 7ю мигающии диодами, в которой один диод загорается, а предыдущий гаснет*/
/*целочисленная переменная, которой присваивается начальное значение 2 контакта*/
int LED = 2;

void setup() <
/*цикл, перебирающий порты от 2 до 8 и присваивающий начальные значения как порт вывода и выключен*/
for(int i = 2; i /*цикл, перебирает порты от 2 до 8*/
for(int i = 2; i //включаем очередной диод
LED = i;
digitalWrite(LED, HIGH);
/*если включаем 2 порт, то отключать нужно 8й, в ином случае предыдущий*/
if(i == 2)
LED = 8;
else
LED —;
digitalWrite(LED, LOW);
//задержка 100 мс
delay(100);
>
delay(100);
>

А можно сделать и реальную «змейку» из нескольких огоньков, например 3, добавив функций в код.

/*Программа для схемы с 7ю мигающии диодами, в которой за раз светятся только 3 диода, и этот огонёк пробегает змейкой по всем 7ми*/
/*целочисленная переменная, которой присваивается начальное значение 2 контакта*/
int LED = 2;
//длина «змейки» — 3 диода светятся за раз
int snake_length = 3;

void setup() <
/*цикл, перебирающий порты от 2 до 8 и присваивающий начальные значения как порт вывода и выключен*/
for(int i = 2; i /*перебираем в цикле порты от 2 до 8 и передаём функции snake номера диодов, которые нужно зажечь: текущий по циклу и 2 перед ним*/
for(int i = 2; i //задержка 500 мс.
delay(500);
>
>

int snake_check(int param)
<
if(param 8)
return (2 + (param — 8 — 1));
else
return param;
>

void snake(int init, int finite)
<
/*гасим предыдущий диод, если передаваемый номер меньше 2 или больше 8, его нужно изменить в функции snake_check*/
LED = snake_check(init-1);
digitalWrite(LED, LOW);

for(int i = init; i /*включаем нужные диоды, проверяя номер порта в функции snake_check*/
LED = snake_check(i);
digitalWrite(LED, HIGH);
>
>

А еще можно сделать увеличивающуюся в размере змейку.

/*Программа для схемы с 7ю мигающии диодами, в которой огонёк пробегает змейкой по всем 7ми, но длина этого огонька постепенно увеличивается*/
/*целочисленная переменная, которой присваивается начальное значение 2 контакта*/
int LED = 2;
//длина «змейки» — сколько диодов светятся за раз
int snake_length = 1;
//максимальная длина «змейки»
int max_snake_length = 6;

void setup() <
/*цикл, перебирающий порты от 2 до 8 и присваивающий начальные значения как порт вывода и выключен*/
for(int i = 2; i /*перебираем в цикле порты от 2 до 8 и передаём функции snake номера диодов, которые нужно зажечь: текущий по циклу и 2 перед ним*/
for(int i = 2; i //задержка 500 мс.
delay(500);
>
/*после того, как огонёк пробежал по всем диодам, его длина увеличивается на 1, пока не достигнет заданого максимального значения*/
snake_length++;
if(snake_length >= max_snake_length)
snake_length = 1;
>

int snake_check(int param)
<
if(param 8)
return (2 + (param — 8 — 1));
else
return param;
>

void snake(int init, int finite)
<
/*гасим предыдущий диод, если передаваемый номер меньше 2 или больше 8, его нужно изменить в функции snake_check*/
LED = snake_check(init-1);
digitalWrite(LED, LOW);

for(int i = init; i /*включаем нужные диоды, проверяя номер порта в функции snake_check*/
LED = snake_check(i);
digitalWrite(LED, HIGH);
>
>

Источник

Урок 9 — Бегущие огни на Arduino UNO

Продолжаем уроки в которых мы используем Arduino, резисторы и светодиоды. Мы уже делали Светофор, полицейский стробоскоп, отправляли сигнал sos и пр.
Сегодня мы будем делать бегущие огни. Бегущие огни уже были в другом блоке уроков на Arduino: Урок 2 — Подключаем сдвиговый регистр 74НС595 к Arduino. «Бегущие» огни
При подключении к сдвиговому регистру всего при подключении по 3 проводам мы можем управлять 8 светодиодами. Но вот чтобы подключить 10 светодиодов, нужно подключать 2 сдвиговых регистра и использовать всего 2 выхода из 8 доступных в регистре. Это не очень логично. Иногда бывает проще подключить к плате Arduino нужное количество светодиодов. Что я и планирую сделать. В примере будет 5 самых простых режимов бегущих огней на Arduino.

Для урока нам понадобится:

  • Arduino UNO или Arduino Nano
  • Плата макетная беспаечная
  • Резисторы 220 ОМ
  • Соединительные провода папа-папа
  • Светодиоды 3 или 5 мм.

Подключим наши 10 светодиоды вот по такой схеме.

В живую будет выгладить так.

Вы наверное скажите что схема не правильная и к пинам 0 и1 подключать не желательно. Вот именно не желательно, но можно если не использовать Serial port. А для облегчения кода нам будет очень удобно использовать данные пины. При загрузки кода в Ардуину светодиоды подключенные к 0 и 1 выходам будут мигать. Также при работе нашего скетча. Вместе с данными светодиодами на плате Arduino UNO буду включаться светодиода RX и TX. Но как я говорил в данном случаи ни чего старшного в этом нет.

Описывать все режимы не буду. В видео немного поясняю. Немного корява и может не совсем понятно. Но я думаю по комментариям к коду можно разобраться.

Первый пример бегущих огней на Arduino, последовательное включение одного светодиода с 1 по 10. По пинам на ардуино будет с 0 по 9. Это нужно учитывать при написании кода.

Немного изменим данный пример и сделаем 2 цикла. Получим включение всех светодиодов и выключение в обратном направлении.

Объединив код первого и второго примера получим включение одного светодиода в прямом и обратном направлении. Во втором цикли ставим j-2, потому что у нас пины начинаются с 0, а число светодиодов с 1 до 10. Также чтобы 10 светодиод не включался 2 раза вычитаем еще 1.

Сходящиеся огни. Тут все по аналогии. Добавим переменную в которой будим рассчитывать половину светодиодов. Поэтому количество светодиодов должно быть четным. Либо что-то делать с центральным светодиодом. Можно оставить его постоянно включенным или наоборот всегда включенным.

И по аналогии делаем расходящиеся огни.

Как видно без использования сдвигового регистра код получается намного проще и меньше строчек. Один минус количество ограничено. Максимум 20 светодиодов можно подключить к Arduino Uno и 22 к Arduino NANO. Думаете что я ошибся с цифрами. Подписывайтесь на канал. И в следующем уроке в данном блоке уроков я покажу как можно это реализовать.

Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Спасибо за внимание!

Понравилась статья? Поделитесь ею с друзьями:

Источник

Arduino-lab.ru

Электронная лаборатория

Бегущий огонёк на Arduino: скетч с массивом

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

Комплектующие

Все необходимые комплектующие и даже чуть больше есть в минимальном стартовом наборе Arduino — https://bit.ly/2QgTPvF​

  1. Arduino Uno — https://bit.ly/2P3rCI5​
  2. беспаечная макетная плата — https://bit.ly/3goWOwQ​
  3. светодиоды — https://bit.ly/3swTa6t​
  4. ограничивающий резистор — 220 Ом или аналогичный — https://bit.ly/3swTpyp​
  5. провода папа-папа, мама-мама, папа-мама 10-30 см — https://bit.ly/3n3z0jl

Схема подключения

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

Скетч

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

Видео

Бегущий огонёк на Arduino: скетч с массивом : 1 комментарий

Тут такой вопрос назрел . Мы прогнали в одну сторону . for (int i=countLeds-1; i>=0; i—) — развернули в обратную сторону . А как поделить по палам ?

Источник