Проект Arduino: как сделать украшения из рождественских огней

ардуино рождественские огниЭто следующая часть нашей обучающей серии Arduino, и на этот раз мы будем изучать и использовать Массивы сделать маленький рождественский елочный орнамент с разными мигающими последовательностями. Это был бы идеальный проект, чтобы держать детей занятыми, если вы хотите научить их основам пайки — просто установите светодиоды на карточке, и вы сможете получать питание от стандартной 9-вольтовой батареи.

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

Примечание. Это учебное пособие для начинающих, и мы, конечно же, не будем открывать новые пути — это? просто устройство для обучения концепции использования Массивы а также Для петель иметь дело с большое количество светодиодов (или другие устройства вывода).

Если вы еще этого не сделали, сейчас самое время проследить за другими статьями серии:

  • Что такое Arduino Что ты можешь сделать с этим

    ?

  • Что такое стартовый комплект Arduino? Что это содержит?
  • Более крутые компоненты для покупки с вашим стартовым комплектом
  • Начало работы с вашим стартовым комплектом Arduino? Установка драйверов Настройка платы порт
  • Fritzing, бесплатный инструмент для рисования принципиальных схем
  • Пристальный взгляд на структуру приложения Arduino Пример программы Blink

Для этого проекта вам понадобится хотя бы 8 или 9 светодиодов в красном или зеленом цвете, резистор для каждого из них макетировать и некоторые провода для подключения. Стартовый комплект от Ooomlout, который я недавно приобрел сам и изображен в этом уроке, предлагает отличное соотношение цены и качества и имеет больше светодиодов и резисторов, чем вам когда-либо понадобится, а также поставляется с аккуратным макетом и корпусом Arduino для хранения вещей. аккуратный.

Вот последняя вещь:

ардуино рождественские огни

И видео об этом в действии.

Вот вид на проводку от Fritzing. Это очень просто — просто подключите положительный вывод светодиодов к контактам 2-> независимо (до контакта 13) и подключите отрицательные ножки к земле, встроенные в резистор. Значение, которое я здесь использовал, составляет 560 Ом. Вот и все для проводки.

ардуино рождественские огни

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

int led1 = 2; // первый светодиод на контакте 2
int led2 = 3; // второй на контакте 3
// и т. д.
void loop () {
digitalWrite (LED1, HIGH);
задержки (100);
digitalWrite (LED1, LOW);
задержки (100);
digitalWrite (LED2, HIGH);
// так далее
}

[/ NOEDIT]

Вы должны увидеть, что с 9 светодиодами это быстро утомит. Ответ лежит с Массивы, что, если вы не можете вспомнить наше Программирование 101 об основных типах данных

— это в основном просто списки.

Синтаксис выглядит следующим образом (поместите это как первую строку в вашем коде):

int leds [] = {2,3,4,5,6,7,8,9,10};

[/ NOEDIT]

Квадратные скобки указывают, что? Светодиоды? переменная будет массив. Фигурные скобки заключают список номеров выводов, которые будет содержать наш массив.

Теперь, чтобы использовать массив, нам нужно обратиться к нему по номеру индекса. Индекс начинается с 0, и поэтому всегда будет на 1 меньше, чем общее количество вещей внутри него (так что с 9 элементами последний будет иметь индекс 8).

Вы пишете это так:

светодиоды [0]

[/ NOEDIT]

Который в нашем случае выбрал бы число 2, потому что это то, что по индексу 0 в нашем массиве.

Следуя до сих пор? Отлично. Одного этого недостаточно для нас — нам также нужен какой-то способ перебора каждого элемента нашего массива светодиодов. Для этого мы будем использовать для цикла. Синтаксис для этого выглядит следующим образом:

for (начальная переменная; условие, при котором мы повторяем снова; меняем переменную на каждой итерации)

[/ NOEDIT]

Например:

для (int i = 0; i<9; i++)

[/ NOEDIT]

Который говорит

  • начать этот цикл с переменной, я, который имеет значение нуль
  • продолжать цикл только пока я менее чем 9?(так: 0,1,2,3,4,5,6,7,8)
  • каждый раз, добавить 1 к я (i ++ - это короткий способ сказать, что i = i + 1)

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

Мы будем использовать эту структуру дважды для начала. Оказавшись внутри функции настройки, все наши контакты переключаются в режим вывода, например так:

void setup () {
для (int i = 0; i< 9;i++){
pinMode(leds[i],OUTPUT);
}
}

[/ NOEDIT]

Ты видишь, что мы там сделали? Вместо того, чтобы писать 9 строк кода, чтобы объявить каждый отдельный вывод как выходной, мы создаем цикл «для», который повторяется 9 раз, каждый раз устанавливая другой вывод.

Теперь вы должны увидеть, как мы можем сделать то же самое в главном цикле программы, чтобы последовательно включить каждый светодиод:

void loop () {
для (int i = 0; i< 9;i++){
digitalWrite(leds[i],HIGH);
delay(100);
digitalWrite(leds[i],LOW);
}
}

[/ NOEDIT]

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

Хорошо, теперь у нас довольно скучная последовательность освещения. Давайте запрограммируем еще один. Просто для удовольствия, давайте сделаем это совершенно случайно. Замените код основного цикла следующим:

void loop () {
int randomLed = random (0,8);
digitalWrite (светодиоды [randomLed], HIGH);
задержка (50);
randomLed = случайный (0,8);
digitalWrite (светодиоды [randomLed], LOW);
}

[/ NOEDIT]

Вместо использования цикла «для» для итерации каждого светодиода мы выбираем случайное число от 0 до 9 и включаем его.

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

Вопросы, предложения, проблемы - пишите в комментариях.

Ссылка на основную публикацию