Arduino:Примеры/Array
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Массив [1]
Это вариация примера «Цикл For», которая показывает пример использования массива. Массив – это переменная, содержащая сразу несколько значений. То есть, если представить переменную в виде чашки (в которой вместо кофе – определенное значение), то массив – это своего рода лоток для кубиков льда. Он как несколько чашек, каждая из которых может содержать значение определенного объема. Пример «Цикл For» демонстрирует, как включать/выключать группу светодиодов, подсоединенных к шести контактам Arduino (со 2-ого по 7-ой), но у него есть некоторые ограничения. Во-первых, номера контактов должны «соседствовать» друг с другом (т.е. 2-ой с 3-им, 3-ий с 4-ым и т.д.), а во-вторых, светодиоды могут включаться/выключаться только последовательно, т.е. друг за другом. Этот пример показывает, как включать светодиоды, не оглядываясь ни на «соседство», ни на последовательность. Для этого номера контактов нужно уместить в массив, а затем воспользоваться циклом for(), который будет «шерстить» этот массив. В этом примере используется шесть светодиодов, подключенных к шести цифровым контактам Arduino (со 2-ого по 7-ой) через 220-омовые резисторы – как и в примере «Цикл For». Тем не менее, порядок активации/деактивации светодиодов определяется не физическим порядком, а порядком номеров, расположенных в массиве. Этот метод очень удобен. Вам уже не обязательно, чтобы контакты были расположены один за другим. Вы в любое время можете зайти в программу и переставить их как захотите.
Необходимое оборудование
- Плата Arduino;
- Шесть 220-омовых резисторов;
- Шесть светодиодов;
- Провода-перемычки;
- Макетная плата Breadboard;
Цепь
Подсоедините шесть светодиодов к шести цифровым контактам Arduino (со 2-ого по 7-ой), но не напрямую, а через 220-омовые резисторы.
Схема
Код
/*
Массивы
Демонстрирует использование массива, который содержит несколько
номеров контактов, расположенных в определенном порядке.
Программа последовательно перебирает эти номера, опираясь именно на этот порядок.
В итоге светодиоды загораются один за другим, а затем в обратном порядке.
В отличие от примера «Цикл For», где контактам нужно обязательно
находиться рядом друг с другом,
здесь контакты могут быть расположены в каком угодно порядке.
Цепь:
* Шесть светодиодов, заземленных и подключенных
к шести контактам Arduino – со 2-ого по 7-ой
Создан в 2006 Дэвидом А. Меллисом (David A. Mellis),
модифицирован 30 августа 2011 Томом Иго (Tom Igoe).
Этот пример не защищен авторским правом.
http://www.arduino.cc/en/Tutorial/Array
*/
int timer = 100; // Чем выше это число,
// тем медленнее будут «бегать» огоньки.
int ledPins[] = { // Массив с определенным порядком номеров
2, 7, 4, 6, 5, 3 }; // контактов, к которым подсоединены светодиоды.
int pinCount = 6; // Количество контактов (т.е. длина массива).
void setup() {
// Элементы массива, пронумерованные от 0 до (pinCount - 1).
// Используем цикл for, чтобы сделать все контакты выходными:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
}
}
void loop() {
// перебираем номера контактов в массиве – от первого к последнему:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
// включаем контакт:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// выключаем контакт:
digitalWrite(ledPins[thisPin], LOW);
}
// перебираем номера контактов в массиве – от последнего к первому:
for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) {
// включаем контакт:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// выключаем контакт:
digitalWrite(ledPins[thisPin], LOW);
}
}
См.также
- pinMode()
- digitalWrite()
- for()
- delay()
- For Loop
- While Loop
- Switch Case