Arduino:Справочник языка Arduino/Управляющие операторы/for: различия между версиями
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
(не показаны 4 промежуточные версии 1 участника) | |||
Строка 2: | Строка 2: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
= Оператор For = | |||
Конструкция '''for''' используется для повторения блока операторов, заключенных в фигурные скобки. Счетчик приращений обычно используется для приращения и завершения цикла. Оператор '''for''' подходит для любых повторяющихся действий и часто используется в сочетании с массивами коллекций данных/выводов. | Конструкция '''for''' используется для повторения блока операторов, заключенных в фигурные скобки. Счетчик приращений обычно используется для приращения и завершения цикла. Оператор '''for''' подходит для любых повторяющихся действий и часто используется в сочетании с массивами коллекций данных/выводов. | ||
Строка 8: | Строка 8: | ||
Заголовок цикла '''for''' состоит из трех частей: | Заголовок цикла '''for''' состоит из трех частей: | ||
<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 (initialization; condition; increment) | for (initialization; condition; increment) | ||
{ | { | ||
Строка 19: | Строка 19: | ||
== Пример == | == Пример == | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" highlight="9-12"> | ||
// Затемнение светодиода с использованием ШИМ-вывода | // Затемнение светодиода с использованием ШИМ-вывода | ||
int PWMpin = 10; // Светодиод последовательно с резистором 470 ом на 10 выводов | int PWMpin = 10; // Светодиод последовательно с резистором 470 ом на 10 выводов | ||
Строка 41: | Строка 41: | ||
Например, использование умножения в операторе счетчика цикла позволяет создавать логарифмическую прогрессию: | Например, использование умножения в операторе счетчика цикла позволяет создавать логарифмическую прогрессию: | ||
<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(int x = 2; x < 100; x = x * 1.5){ | for(int x = 2; x < 100; x = x * 1.5){ | ||
println(x); | println(x); | ||
Строка 51: | Строка 51: | ||
Другой пример, плавное уменьшение или увеличение уровня сигнала на светодиод с помощью одного цикла '''for''': | Другой пример, плавное уменьшение или увеличение уровня сигнала на светодиод с помощью одного цикла '''for''': | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" highlight="4-8"> | ||
void loop() | void loop() | ||
{ | { | ||
Строка 63: | Строка 63: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=См.также= | |||
=Внешние ссылки= | |||
<references /> | <references /> | ||
Строка 74: | Строка 72: | ||
[[Категория:Управляющие операторы языка Arduino]] | [[Категория:Управляющие операторы языка Arduino]] | ||
{{Навигационная таблица/ | {{Навигационная таблица/Портал/Arduino}} | ||
Текущая версия от 12:40, 20 мая 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Оператор For
Конструкция for используется для повторения блока операторов, заключенных в фигурные скобки. Счетчик приращений обычно используется для приращения и завершения цикла. Оператор for подходит для любых повторяющихся действий и часто используется в сочетании с массивами коллекций данных/выводов.
Заголовок цикла for состоит из трех частей:
for (initialization; condition; increment)
{
// операторы выполняющиеся в цикле
}
Инициализация (Initialization) выполняется самой первой и один раз. Каждый раз в цикле проверяется условие (condition), если оно верно, выполняется блок операторов и приращение (increment), затем условие проверяется вновь. Когда логическое значение условия становится ложным, цикл завершается.
Пример
// Затемнение светодиода с использованием ШИМ-вывода
int PWMpin = 10; // Светодиод последовательно с резистором 470 ом на 10 выводов
void setup()
{
// настройка не нужна
}
void loop()
{
for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10);
}
}
Советы по применению
Цикл for в Си гораздо более гибкий, чем циклы for в других языках программирования, например, в Бейсике. Любой из трех или все три элемента заголовка могут быть опущены, хотя точки с запятой обязательны. Также операторы для инициализации, условия и приращения цикла могут быть любым допустимым в Си операторами с независимыми переменными, и использовать любой тип данных Си, включая данные с плавающей точкой (floats). Эти необычные для цикла for типы операторов позволяют обеспечить программное решение некоторых нестандартных проблем.
Например, использование умножения в операторе счетчика цикла позволяет создавать логарифмическую прогрессию:
for(int x = 2; x < 100; x = x * 1.5){
println(x);
}
Генерируется: 2,3,4,6,9,13,19,28,42,63,94
Другой пример, плавное уменьшение или увеличение уровня сигнала на светодиод с помощью одного цикла for:
void loop()
{
int x = 1;
for (int i = 0; i > -1; i = i + x){
analogWrite(PWMpin, i);
if (i == 255) x = -1; // переключение управления на максимуме
delay(10);
}
}
См.также
Внешние ссылки
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.
|
Клавиатура |
|
Мышь |
|
Разное |