Arduino:Примеры/ForLoop: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 32: | Строка 32: | ||
В главной части кода используется уже два цикла for() – чтобы программа двигалась «шагами», переходя от одного светодиода к другому, т.е. '''от 2-ого к 7-ому'''. При достижении '''7-ого''' светодиода процесс инвертируется, т.е. перебор продолжается, но уже в обратном направлении – '''от 7-ого светодиода ко 2-ому'''. | В главной части кода используется уже два цикла for() – чтобы программа двигалась «шагами», переходя от одного светодиода к другому, т.е. '''от 2-ого к 7-ому'''. При достижении '''7-ого''' светодиода процесс инвертируется, т.е. перебор продолжается, но уже в обратном направлении – '''от 7-ого светодиода ко 2-ому'''. | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
Повторение цикла For | Повторение цикла For |
Текущая версия от 12:32, 20 мая 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Цикл For (или «Рыцарь дорог») [1]
Зачастую в процессе работы требуется как бы перебрать контакты один за другим. Например, как в этом примере, где друг за другом загораются шесть светодиодов, подключенных к Arduino – со 2-ого по 7-ой. На программном уровне это выполняется при помощи цикла for(), благодаря которому контакты будут перебираться в одну строну, но и в другую. Светодиоды, в свою очередь, будут включатся и выключаться, что будет происходить благодаря функциям digitalWrite() и delay().
Мы называем этот пример «Рыцарем дорог» в честь телевизионного сериала 80-ых, где у героя Дэвида Хассельхофа был автомобиль с искусственным разумом по имени Китт. Причем у этой машины было множество светодиодных огоньков, которые сверкали самыми разными эффектами. В частности, в передней части капота у него была полоска с огнями, которые загорались и гасли один за другим, создавая такое впечатление, будто сигнал перемещается то влево, то вправо. В данном примере мы попробуем воссоздать этот самый эффект.
Необходимое оборудование
- Плата Arduino;
- Шесть 220-омовых резисторов;
- Шесть светодиодов;
- Провода-перемычки;
- Макетная плата Breadboard;
Цепь
Последовательно подсоедините к Arduino (со 2-ого по 7-ой контакты) шесть светодиодов, но не напрямую, а через 220 Ом резисторы.
Схема
Код
Код ниже начинается с использования цикла for(), чтобы сделать шесть цифровых контактов (со 2-ого по 7-ой) выходными контактами для шести подключенных к ним светодиодов. В главной части кода используется уже два цикла for() – чтобы программа двигалась «шагами», переходя от одного светодиода к другому, т.е. от 2-ого к 7-ому. При достижении 7-ого светодиода процесс инвертируется, т.е. перебор продолжается, но уже в обратном направлении – от 7-ого светодиода ко 2-ому.
/*
Повторение цикла For
Демонстрирует использование цикла for().
Последовательно включает/выключает несколько светодиодов –
то в одну, то в другую сторону.
Цепь:
* Шесть светодиодов, заземленных и подключенных к шести контактам –
со 2-ого по 7-ой
Создан в 2006 Дэвидом А. Меллисом (David A. Mellis),
модифицирован 30 августа 2011 Томом Иго (Tom Igoe).
Этот код не защищен авторским правом.
http://www.arduino.cc/en/Tutorial/ForLoop
*/
int timer = 100; // чем выше это число,
тем медленнее будут «бегать» огоньки.
void setup() {
// используем цикл for, чтобы сделать все контакты выходными:
for (int thisPin = 2; thisPin < 8; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// перебираем номера контактов – от самого «низкого» (т.е. от 2-ого)
// к самому «высокому» (т.е. к 7-ому):
for (int thisPin = 2; thisPin < 8; thisPin++) {
// включаем контакт:
digitalWrite(thisPin, HIGH);
delay(timer);
// выключаем контакт:
digitalWrite(thisPin, LOW);
}
// перебираем номера контактов – от самого «высокого» (т.е. от 7-ого)
// к самому «низкому» (т.е. ко 2-ому):
for (int thisPin = 7; thisPin >= 2; thisPin--) {
// включаем контакт:
digitalWrite(thisPin, HIGH);
delay(timer);
// выключаем контакт:
digitalWrite(thisPin, LOW);
}
}
См.также
- for()
- digitalWrite()
- delay()
- WhileLoop
- SwitchCase
- Array
Внешние ссылки
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