Arduino:Основы/Sketch(Скетч): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
м (Замена текста — «<syntaxhighlight lang="c">» на «<syntaxhighlight lang="c" enclose="div">»)
 
Нет описания правки
Строка 13: Строка 13:
Первые несколько строк скетча '''Blink''' это комментарии:
Первые несколько строк скетча '''Blink''' это комментарии:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
/*
/*
  * Blink
  * Blink
Строка 30: Строка 30:
Есть еще один стиль для коротких комментариев в одну строку. Они начинаются с [[Arduino:Справочник языка Arduino/Синтаксис/// (однострочный комментарий)|//]] и продолжаются до конца строки. Например, в строке:
Есть еще один стиль для коротких комментариев в одну строку. Они начинаются с [[Arduino:Справочник языка Arduino/Синтаксис/// (однострочный комментарий)|//]] и продолжаются до конца строки. Например, в строке:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
int ledPin = 13; // Светодиод, подключенный к цифровому выводу 13
int ledPin = 13; // Светодиод, подключенный к цифровому выводу 13
</syntaxhighlight>
</syntaxhighlight>
Строка 44: Строка 44:
'''Функция'''(также известная как процедура или подпрограмма) — именованный кусок кода, который можно использовать в других частях вашего скетча. Например вот определение функции [[Arduino:Справочник языка Arduino/setup()‎|setup()]] из примера '''Blink''':
'''Функция'''(также известная как процедура или подпрограмма) — именованный кусок кода, который можно использовать в других частях вашего скетча. Например вот определение функции [[Arduino:Справочник языка Arduino/setup()‎|setup()]] из примера '''Blink''':


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
void setup()
void setup()
{
{
Строка 55: Строка 55:
Можно ''вызывать'' функцию которая уже была определена (в вашем скетче или [[Arduino:Справочник языка Arduino|стандартной библиотеке языка Arduino]]). Например, строка  
Можно ''вызывать'' функцию которая уже была определена (в вашем скетче или [[Arduino:Справочник языка Arduino|стандартной библиотеке языка Arduino]]). Например, строка  


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
pinMode(ledPin, OUTPUT);      // устанавливает цифровой порт как выход
pinMode(ledPin, OUTPUT);      // устанавливает цифровой порт как выход
</syntaxhighlight>
</syntaxhighlight>
Строка 67: Строка 67:
Функция [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/digitalWrite()|digitalWrite()]] выдаёт значение на выводе. Например, строка:
Функция [[Arduino:Справочник языка Arduino/Функции/Цифровой ввод/вывод/digitalWrite()|digitalWrite()]] выдаёт значение на выводе. Например, строка:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin, HIGH);
</syntaxhighlight>
</syntaxhighlight>
Строка 75: Строка 75:
А в данном примере:
А в данном примере:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
digitalWrite(ledPin, LOW);
digitalWrite(ledPin, LOW);
</syntaxhighlight>
</syntaxhighlight>
Строка 83: Строка 83:
Функция [[Arduino:Справочник языка Arduino/Функции/Работа со временем/delay()|delay()]] приостанавливает выполнение программы на заданное количество миллисекунд, прежде чем перейдет к следующей строке. В одной секунде 1000 миллисекунд, поэтому строка ниже:
Функция [[Arduino:Справочник языка Arduino/Функции/Работа со временем/delay()|delay()]] приостанавливает выполнение программы на заданное количество миллисекунд, прежде чем перейдет к следующей строке. В одной секунде 1000 миллисекунд, поэтому строка ниже:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
delay(1000);
delay(1000);
</syntaxhighlight>
</syntaxhighlight>

Версия от 18:17, 14 мая 2023

Первый скетч [1]

В вводном руководстве (Windows, Mac OS X, Linux), вы загрузили скетч, который мигает светодиодом. В этом уроке вы узнаете, как каждая часть этого скетча работает.

Скетч

Скетч это имя, которое Arduino использует для программы. Это единица кода, которая загружается и запускается на плате Arduino.

Комментарии

Первые несколько строк скетча Blink это комментарии:

/*
 * Blink
 *
 * The basic Arduino example.  Turns on an LED on for one second,
 * then off for one second, and so on...  We use pin 13 because,
 * depending on your Arduino board, it has either a built-in LED
 * or a built-in resistor so that you need only an LED.
 *
 * http://www.arduino.cc/en/Tutorial/Blink
 */

Все что между /* и */ игнорируется Arduino при запуске скетча (* в начале каждой строки, чтобы комментарий выглядел красиво, и не обязательна). Комментарии пишутся для людей, читающих код: объяснить, что программа делает, как она работает, и почему это написано так. Это хорошая практика комментировать ваши скетчи, и держать комментарии актуальными, когда вы изменяете код. Это поможет другим людям изучить или изменить код.

Есть еще один стиль для коротких комментариев в одну строку. Они начинаются с // и продолжаются до конца строки. Например, в строке:

int ledPin = 13; // Светодиод, подключенный к цифровому выводу 13

Сообщение "Светодиод, подключенный к цифровому выводу 13" это комментарий.

Переменные

Переменная — это место для хранения части данных. У неё есть имя, тип и значение. Например, строка скетча Blink выше, объявляет переменную с именем ledPin, типа int и начальным значением 13. Это используется для указания к какому контакту Arduino подключен светодиод. Каждый раз, когда в коде появляется ledPin её значение будет извлечено. При этом, человек, пишущий программу, мог бы не заморачиваться созданием переменной ledPin и вместо этого просто написал бы везде число 13, где необходимо указать номер контакта. Преимущество использования переменной заключается в том, что можно быстро и просто поменять номер контакта(ledPin, в данном примере): вам только нужно отредактировать одну строку, которая присваивает начальное значение переменной. Часто значение переменной будет меняться во время выполнения скетча. Например можно сохранить значение, считанное из входных данных в переменной. Чуть больше информации, можно почерпнуть из этого руководства.

Функции

Функция(также известная как процедура или подпрограмма) — именованный кусок кода, который можно использовать в других частях вашего скетча. Например вот определение функции setup() из примера Blink:

void setup()
{
  pinMode(ledPin, OUTPUT);      // устанавливает цифровой порт как выход
}

Первая строка содержит сведения о функции, с таким названием как, "setup". Текст до и после имени функции указывает на тип возвращаемого значения и параметры: они будут объяснены позже. Код между { и } называется телом функции: то, что делает функция.

Можно вызывать функцию которая уже была определена (в вашем скетче или стандартной библиотеке языка Arduino). Например, строка

pinMode(ledPin, OUTPUT);      // устанавливает цифровой порт как выход

вызывает функцию pinMode(), передавая ей два параметра: ledPin и OUTPUT. Эти параметры используются функцией pinMode() для установки контакта в заданный режим.

pinMode(), digitalWrite() и delay()

Функция pinMode() конфигурирует pin(т.е. контакт, вход/выход) как вход или выход. Чтобы использовать данную функцию, вам необходимо указать номер pin'a(т.е. контакта), который вы хотите сконфигурировать и одну из констант INPUT или OUTPUT. При работе в режиме входа, pin(т.е. контакт) может определять состояние датчика(например, нажатие кнопки); этот вопрос рассматривается в этом руководстве. При работе в режиме выхода, pin(т.е. контакт) может управлять исполнительным механизмом(например, светодиодом).

Функция digitalWrite() выдаёт значение на выводе. Например, строка:

digitalWrite(ledPin, HIGH);

устанавливает на выводе ledPin значение HIGH, т.е. (для некоторых плат 3,3В).

А в данном примере:

digitalWrite(ledPin, LOW);

устанавливает на выводе ledPin значение LOW, т.е. 0В.

Функция delay() приостанавливает выполнение программы на заданное количество миллисекунд, прежде чем перейдет к следующей строке. В одной секунде 1000 миллисекунд, поэтому строка ниже:

delay(1000);

создает задержку в одну секунду.

setup() и loop()

Есть две специальные функции, которые должны быть в каждом скетче Arduino: setup() и loop(). Функция setup() вызывается один раз, при старте скетча. Это хорошее место для настройки контактов или инициализации библиотек. Функция loop() вызывается снова и снова, её можно назвать сердцем большинства скетчей. Вам нужно включить обе функции в ваш скетч, даже если они вам не нужны.

Упражнения

  1. Измените код таким образом, чтобы светодиод включался на 100 миллисекунд и выключался на 1000 миллисекунд.
  2. Измените код , чтобы индикатор загорался при старте скетча и оставался включенным.

См.также

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