Реклама
Это следующая часть нашей обучающей серии Arduino, и на этот раз мы? буду изучать и использовать Массивы сделать маленький елочный орнамент с различными мигающими последовательностями. Это был бы идеальный проект, чтобы держать детей занятыми, если вы хотите научить их основам пайки - просто установите светодиоды на кусок карты, и вы сможете получать питание от стандартной 9-вольтовой батареи.
Это также ключевой урок в программировании на Arduino для начинающих, хотя, если вы не планируете использовать его в качестве украшения, я бы настоятельно рекомендовал в любом случае использовать его.
Примечание: это учебник для начинающих, и мы, безусловно, победили? не открывать новые пути - это? s? просто устройство для обучения концепции использования Массивы и Для петель иметь дело с большое количество светодиодов (или другие устройства вывода).
Если у вас есть? Уже сейчас самое время следовать за другими статьями серии:
- Что такое Arduino и что с этим можно сделать Что такое Arduino и что с этим можно сделать? Arduino - это замечательное небольшое электронное устройство, но если вы никогда не использовали его раньше, то что же это такое и что вы можете сделать с ним? Прочитайте больше ?
- Что такое стартовый комплект Arduino и что в нем содержится? Что входит в стартовый комплект Arduino? [MakeUseOf Объясняет]Ранее я представил оборудование Arduino с открытым исходным кодом здесь, в MakeUseOf, но вам понадобится нечто большее, чем просто Arduino, чтобы что-то из него построить и начать работу. Arduino "стартовые комплекты" ... Прочитайте больше
- Более крутые компоненты для покупки с вашим стартовым комплектом 8 более интересных компонентов для ваших проектов ArduinoИтак, вы думаете о приобретении стартового комплекта Arduino, но хотите знать, хватит ли каких-нибудь базовых светодиодов и резисторов, чтобы занять вас на выходные? Возможно нет. Вот еще 8 ... Прочитайте больше
- Начало работы с вашим стартовым комплектом Arduino? Установка драйверов и настройка платы и порта Начало работы с вашим Arduino Starter Kit - Установка драйверов и настройка платы и портаИтак, вы купили себе стартовый комплект Arduino и, возможно, некоторые другие случайные классные компоненты - что теперь? Как вы на самом деле начинаете программировать эту штуку Arduino? Как вы это настроили ... Прочитайте больше
- Fritzing, бесплатный инструмент для рисования принципиальных схем Fritzing - лучший инструмент для набросков электронных проектов [кросс-платформенный]Несмотря на то, что Fritzing звучит как алкопоп, на самом деле это невероятное количество свободного программного обеспечения, которое вы можете использовать для создания принципиальные схемы и компоненты для использования с быстродействующими макетными платами, такими как фантастический открытый код Arduino ... Прочитайте больше
- Пристальный взгляд на структуру приложения Arduino и пример программы Blink Первые шаги с Arduino: пристальный взгляд на печатную плату и структуру программыВ прошлый раз я оставил вас, настроив Arduino для работы с Mac или Windows, и загрузив простое тестовое приложение, которое мигало встроенным светодиодом. Сегодня я собираюсь объяснить код ... Прочитайте больше
Для этого проекта вы? понадобится хотя бы 8 или 9 светодиодов в красном или зеленом цвете, резистор для каждого из них макетировать и некоторые провода для подключения. Стартовый комплект от Ooomlout, который я недавно приобрел сам и изображен в этом уроке, предлагает отличное соотношение цены и качества и имеет больше светодиодов и резисторов, чем вы? Вам понадобится, также как и аккуратный макет и чехол Arduino, чтобы держать вещи в порядке.
Вот? И последнее:

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

Что касается программного обеспечения, подумайте о том, как вы можете записать все эти светодиоды в коде. Вы можете сделать это так:
int led1 = 2; // первый светодиод на контакте 2 int led2 = 3; // второй на контакте 3. // etc etc void loop () {digitalWrite (led1, HIGH); задержка (100); digitalWrite (led1, LOW); задержка (100); digitalWrite (led2, HIGH); // и т.д. }
Вы должны увидеть, что с 9 светодиодами это быстро утомит. Ответ лежит с Массивычто если сможешь? не помню наш Программирование 101 об основных типах данных Основы компьютерного программирования 101 - Переменные и типы данныхПознакомившись и немного поговорив об объектно-ориентированном программировании и о том, где его тезка приходит, я думал, что пришло время пройти через абсолютные основы программирования в неязыковой путь. Это... Прочитайте больше - это в основном просто списки.
Синтаксис выглядит следующим образом (поместите это как первую строку в вашем коде):
int leds [] = {2,3,4,5,6,7,8,9,10};
Квадратные скобки указывают, что? Светодиоды? переменная будет массив. Фигурные скобки заключают список номеров выводов, которые будет содержать наш массив.
Теперь, чтобы использовать массив, нам нужно обратиться к нему по номеру индекса. Индекс начинается с 0и поэтому всегда будет на 1 меньше, чем общее количество вещей внутри него (так что с 9 элементами последний будет иметь индекс 8).
Вы пишете это так:
светодиоды [0]
Который в нашем случае выбрал бы число 2, потому что это? с чем? с индексом 0 в нашем массиве.
Следуя до сих пор? Отлично. Что одних разве? Для нас этого достаточно - нам также нужен способ перебора каждого элемента нашего массива светодиодов. Для этого мы будем использовать для цикла. Синтаксис для этого так:
for (начальная переменная; условие, при котором мы повторяем снова; менять на переменную каждую итерацию)
Например:
для (int i = 0; г <9; я ++)
Который говорит
- начать этот цикл с переменной, я, который имеет значение нуль
- продолжать цикл только пока я менее чем 9? (ит.: 0,1,2,3,4,5,6,7,8)
- каждый раз, добавить 1 к я (i ++ - это короткий способ сказать, что i = i + 1)
Таким образом, в основном, цикл будет повторяться столько раз, сколько у нас светодиодов, и каждый раз так? С повторением у нас будет переменная, я, который мы можем использовать так, как нам нравится.
Мы? Я буду использовать эту структуру дважды, чтобы начать с. Оказавшись внутри функции настройки, все наши контакты переключаются в режим вывода, например так:
void setup () {for (int i = 0; i <9; i ++) {pinMode (leds [i], OUTPUT); } }
Ты видишь, что мы там сделали? Вместо того, чтобы писать 9 строк кода, чтобы объявить каждый отдельный вывод в качестве выходного, мы создаем цикл «для», который повторяется 9 раз, каждый раз устанавливая другой вывод.
Теперь вы должны увидеть, как мы можем сделать то же самое в главном цикле программы, чтобы последовательно включить каждый светодиод:
void loop () {for (int i = 0; i <9; i ++) {digitalWrite (leds [i], HIGH); задержка (100); digitalWrite (светодиоды [i], LOW); } }
Попробуй это. Вы можете загрузите полный код для сегодняшнего проекта здесь если вы? Я не буду печатать это снова (хотя я призываю вас, поскольку это помогает процессу обучения).
Хорошо, теперь у нас довольно скучная последовательность освещения. Позволять? с другой программой. Просто ради интереса, давай? сделать это совершенно случайно. Замените код основного цикла следующим:
void loop () { int randomLed = random (0,8); digitalWrite (leds [randomLed], HIGH); задержка (50); randomLed = случайный (0,8); digitalWrite (светодиоды [randomLed], LOW); }
Вместо использования цикла «для» для итерации каждого светодиода мы выбираем случайное число от 0 до 9 и включаем его.
Я собираюсь оставить его там на сегодня, так как теперь вы должны иметь достаточно знаний, чтобы программировать все новые последовательности и экспериментировать с циклами. Чтобы доказать, насколько легко все это, я попросил свою жену подумать о последовательности, которую она? хотел бы посмотреть, а потом получил?ей запрограммировать себя, учитывая только код и уроки? до сих пор. Она придумала это, так что посмотрите, сможете ли вы подобрать это для домашней работы!
Вопросы, предложения, проблемы - пишите в комментариях.
Джеймс имеет степень бакалавра в области искусственного интеллекта и сертифицирован CompTIA A + и Network +. Он является ведущим разработчиком MakeUseOf и проводит свое свободное время за игрой в VR-пейнтбол и настольные игры. Он строит компьютеры с детства.