Arduino:Примеры/Array: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 31: | Строка 31: | ||
==Код== | ==Код== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
Массивы | Массивы |
Текущая версия от 12:31, 20 мая 2023
Содержание | Знакомство с 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
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino