.
Микроэлектроника для чайников. Урок 2. Бегущий огонь.
Автор 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);

  }

}

 

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