Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Array

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Массив [1]

Это вариация примера «Цикл For», которая показывает пример использования массива. Массив – это переменная, содержащая сразу несколько значений. То есть, если представить переменную в виде чашки (в которой вместо кофе – определенное значение), то массив – это своего рода лоток для кубиков льда. Он как несколько чашек, каждая из которых может содержать значение определенного объема. Пример «Цикл For» демонстрирует, как включать/выключать группу светодиодов, подсоединенных к шести контактам Arduino (со 2-ого по 7-ой), но у него есть некоторые ограничения. Во-первых, номера контактов должны «соседствовать» друг с другом (т.е. 2-ой с 3-им, 3-ий с 4-ым и т.д.), а во-вторых, светодиоды могут включаться/выключаться только последовательно, т.е. друг за другом. Этот пример показывает, как включать светодиоды, не оглядываясь ни на «соседство», ни на последовательность. Для этого номера контактов нужно уместить в массив, а затем воспользоваться циклом for(), который будет «шерстить» этот массив. В этом примере используется шесть светодиодов, подключенных к шести цифровым контактам Arduino (со 2-ого по 7-ой) через 220-омовые резисторы – как и в примере «Цикл For». Тем не менее, порядок активации/деактивации светодиодов определяется не физическим порядком, а порядком номеров, расположенных в массиве. Этот метод очень удобен. Вам уже не обязательно, чтобы контакты были расположены один за другим. Вы в любое время можете зайти в программу и переставить их как захотите.

Необходимое оборудование

  • Плата Arduino;
  • Шесть 220-омовых резисторов;
  • Шесть светодиодов;
  • Провода-перемычки;
  • Макетная плата Breadboard;

Цепь

Подсоедините шесть светодиодов к шести цифровым контактам Arduino (со 2-ого по 7-ой), но не напрямую, а через 220-омовые резисторы.

ForLoop bb.png

Схема

ForLoop2 schem.png

Код

  1. /*
  2.   Массивы
  3.  
  4. Демонстрирует использование массива, который содержит несколько
  5. номеров контактов, расположенных в определенном порядке.
  6. Программа последовательно перебирает эти номера, опираясь   именно на этот порядок.
  7. В итоге светодиоды загораются один за другим, а затем в обратном порядке.
  8.  
  9. В отличие от примера «Цикл For», где контактам нужно обязательно
  10. находиться рядом друг с другом,
  11. здесь контакты могут быть расположены в каком угодно порядке.
  12.  
  13. Цепь:
  14.  
  15.  * Шесть светодиодов, заземленных и подключенных
  16.    к шести контактам Arduino – со 2-ого по 7-ой
  17.  
  18. Создан в 2006 Дэвидом А. Меллисом (David A. Mellis),
  19. модифицирован 30 августа 2011 Томом Иго (Tom Igoe).
  20.  
  21. Этот пример не защищен авторским правом.
  22.  
  23. http://www.arduino.cc/en/Tutorial/Array
  24.  */
  25.  
  26. int timer = 100;       // Чем выше это число,
  27.                                   // тем медленнее будут «бегать» огоньки.
  28. int ledPins[] = {      // Массив с определенным порядком номеров
  29.   2, 7, 4, 6, 5, 3 };  // контактов, к которым подсоединены светодиоды.
  30.                          
  31. int pinCount = 6;      // Количество контактов (т.е. длина массива).
  32.  
  33. void setup() {
  34.   // Элементы массива, пронумерованные от 0 до (pinCount - 1).
  35.   // Используем цикл for, чтобы сделать все контакты выходными:
  36.   for (int thisPin = 0; thisPin < pinCount; thisPin++)  {
  37.     pinMode(ledPins[thisPin], OUTPUT);      
  38.   }
  39. }
  40.  
  41. void loop() {
  42.   // перебираем номера контактов в массиве – от первого к последнему:
  43.   for (int thisPin = 0; thisPin < pinCount; thisPin++) {
  44.     // включаем контакт:
  45.     digitalWrite(ledPins[thisPin], HIGH);  
  46.     delay(timer);                  
  47.     // выключаем контакт:
  48.     digitalWrite(ledPins[thisPin], LOW);    
  49.  
  50.   }
  51.  
  52.   // перебираем номера контактов в массиве – от последнего к первому:
  53.   for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) {
  54.     // включаем контакт:
  55.     digitalWrite(ledPins[thisPin], HIGH);
  56.     delay(timer);
  57.     // выключаем контакт:
  58.     digitalWrite(ledPins[thisPin], LOW);
  59.   }
  60. }

См.также

  1. pinMode()
  2. digitalWrite()
  3. for()
  4. delay()
  5. For Loop
  6. While Loop
  7. Switch Case

Внешние ссылки

  1. Arduino - Arrays