Программирование - это просто
Advertisement
Главная arrow Статьи arrow Микроэлектроника для чайников. arrow Микроэлектроника для чайников. Урок 2. Бегущий огонь.
01.12.2020 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
Микроэлектроника для чайников. Урок 2. Бегущий огонь. Печать E-mail
Автор megabax   
15.11.2020 г.
New Page 1

Микроэлектроника для чайников. Урок 2. Бегущий огонь.

На прошлом уроке мы подключили Arduino к компьютеру и написали для него первую программу: моргающий светодиод. Но на самом деле интереснее было бы, чтобы светодиод мигал не на плате, а отдельно. Его можно вставить в плату между разъемами 13 и gnd, тогда он окажется включен параллельно светодиоду, который мы заставили мигать на прошлом уроке. И он будет мигать вместе с ним. Длинный конец светодиода (анод) вставляем в разъем 13, в котором у нас плюс, а короткий (катод) в gnd ("минус" или "земля"):

Микроэлектроника для чайников. Урок 2. Бегущий огонь.

Если перепутаете, светодиод мигать не будет, так как он хоть и свето-, но все равно диод и проводит ток только в одном направлении.

Теперь перейдем к разбору программы. Она у нас состоит из двух частей (setup и loop):

Микроэлектроника для чайников. Урок 2. Бегущий огонь.

В пером блоке (setup) производятся действия по инициализации системы, например, устанавливаются режим портов ввода/вывода. В нашем случае порт 13 ()к которому подключен светодиод) устанавливается в режим вывода. А в блоке loop находиться сама программа, которая замкнута в бесконечном цикле. И внутри этого цикла мы можем производить разные действия. Например, читать информацию с портов ввода и писать на порты вывода. К портам ввода/вывода могут быть подключены разные устройства, такие как индикаторы, датчики, серводвигатель и многое другое. в нашем случае к порту подключен светодиод. Команда digitalWrite записывает значение в порт. Либо HIGH - единица, либо LOW - нуль (для цифрового порта). У Arduino есть и аналоговые порты, до них мы еще доберемся. А пока реализуем более сложную схему:

Микроэлектроника для чайников. Урок 2. Бегущий огонь.

 

Собранная схема выглядит вот так:

Микроэлектроника для чайников. Урок 2. Бегущий огонь.

Обратите внимание, что светодиоды рекомендуется подключать через резисторы сопротивлением 220 Ом, в противном случае они могут перегореть. А вот и программка для нашего устройства:

 

void setup() {

  pinMode(10, OUTPUT);

  pinMode(11, OUTPUT);

  pinMode(12, OUTPUT);

  pinMode(13, OUTPUT);

}

 

void loop() {

  for(int i=10; i<=13; i++)

  {

    digitalWrite(i, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; i - номер порта, второй аргумент - включение (HIGH) или выключение (LOW)

    delay(1000); //эта команда используется для ожидания между действиями, аргумент - время ожидания в миллисекундах

    digitalWrite(i, LOW);

    delay(1000);

  }

}

Здесь мы перебираем в цикле порты от 10 до 13, в каждом из них устанавливаем сначала единицу, потом нуль. Между ними задержка в 1 секунду. Таким образом у нас получается "бегущий огонь". Также обратите внимание, что порты перед использованием нужно инициализировать в блоке setup.

Теперь немного усложним программу. Сделаем чтобы был не просто бегущий огонь, а играла некая "музыка огоньков". Для этого нам потребуется такая структура, как массив. В массив мы загоним номер портов, которые нужно"зажечь". И будем в цикле перебирать элементы этого массива, зажигая произвольный свтеодиод а отом гася его:

int a[11] = {10, 11, 12, 13, 13, 12, 11, 10, 13, 11, 12}; 

 

void setup() {

  // put your setup code here, to run once:

  pinMode(10, OUTPUT);

  pinMode(11, OUTPUT);

  pinMode(12, OUTPUT);

  pinMode(13, OUTPUT);

}

 

void loop() {

  for(int i=0; i<11; i++)

  {

    digitalWrite(a[i], HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led - номер порта, второй аргумент - включение (HIGH) или выключение (LOW)

    delay(300); //эта команда используется для ожидания между действиями, аргумент - время ожидания в миллисекундах

    digitalWrite(a[i], LOW);

  }

}

 

При желании вы можете задать любую последовательность любой длины, не забудьте только в цикле указать эту длину.

 
« След.   Пред. »
 
© 2020 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги