Цели урока:
- Изучить что такое переменная в Arduino
- Изучить классификацию переменных
- Познакомиться с областями видимости
Что такое переменная?
Определение: Переменная — это именованная область памяти, которая хранит данные определённого типа и может изменять своё значение во время выполнения программы.
Аналогия из жизни: Представьте ящики с подписями на складе. Надпись "Гвозди" — это имя переменной, а количество гвоздей внутри — её значение. Мы можем:
- Посмотреть, сколько гвоздей (чтение)
- Добавить или убрать гвозди (изменение)
Адресация памяти
Каждая переменная имеет:
- Имя (идентификатор)
- Тип (определяет размер и формат данных)
- Значение
- Адрес в памяти (где физически хранятся данные)
Пример для int count = 5;:
Имя: count
Тип: int (2 байта)
Значение: 5
Адрес: 0x234 (пример)
Правила объявления переменных
Синтаксис объявления:
тип имя_переменной [= значение];
Примеры корректных объявлений:
int counter;
float temperature = 25.5;
char keyPress = 'A';
Строгие правила именования:
- Допустимые символы:
- Буквы (A-Z, a-z)
- Цифры (0-9, но не в начале)
- Подчёркивание (_)
- Запрещено:
- Начинать с цифры (
1var❌) - Использовать пробелы (
my var❌) - Применять спецсимволы (
var@❌) - Использовать ключевые слова (
int❌) - Регистр имеет значение:
Tempиtemp— разные переменные
Рекомендации по именованию:
- Осмысленные имена (
sensorValue, а неvar1) - "ВерблюжийРегистр" (
currentTemperature) - Для констант — ВЕРХНИЙ_РЕГИСТР (
MAX_TEMP) - Избегать однобуквенных имён (кроме счётчиков)
Классификация переменных по типам
Целочисленные типы
| Тип | Размер | Диапазон | Пример |
|---|---|---|---|
byte |
1 байт | 0..255 | byte led = 255; |
int |
2 байта | -32,768..32,767 | int temp = -25; |
unsigned int |
2 байта | 0..65,535 | uint age = 30; |
long |
4 байта | -2.1 млрд..2.1 млрд | long dist = 1 |
Особенности:
- Переполнение:
byte x = 255; x++; // Будет 0 - Деление целых:
5 / 2 = 2(дробная часть отбрасывается)
Типы с плавающей точкой
Типы с плавающей точкой - это тип данных, который представляет числа с дробной частью. Он используется для вычислений, где важна точность, включая измерения, математические операции и аналоговые сигналы.
| Тип | Размер | Точность | Пример |
|---|---|---|---|
float |
4 байта | 6-7 знаков | float pi = 3.1415; |
double |
4 байта | 6-7 знаков | double pi = 3.1415; |
На большинстве Arduino double аналогичен float
Важно:
- Используйте точку:
3.14(не3,14) - Ограниченная точность:
0.1 + 0.2 ≠ 0.3(будет ~0.3000000119)
Символьные и строковые типы
В Arduino символьные и строковые типы данных используются для работы с текстом, символами и строками.
| Тип | Размер | Пример |
|---|---|---|
char |
1 байт | char grade = 'A'; |
String |
Зависит от длины | String name = "Иван"; |
Особенности char:
- Хранит ASCII-код:
char c = 65; // 'A' - Ограничение: русские буквы требуют Unicode
Логический тип
Логический (булевый) тип в Arduino используется для хранения двух значений:
- ✅ true (истина, 1, высокий сигнал HIGH)
- ❌ false (ложь, 0, низкий сигнал LOW)
Синтаксис объявления:
bool flag = true; // Или false
Области видимости переменных
Глобальные переменные
- Объявляются вне функций
- Видны во всей программе
- Существуют всё время работы
int globalCount = 0; // Глобальная
void setup() {
globalCount = 10;
}
void loop() {
globalCount++;
}
Локальные переменные
- Объявляются внутри функций/блоков
- Видны только в своём блоке
- Уничтожаются при выходе
int globalCount = 0;
void setup() {
globalCount = 10; // Локальная
}
void loop() {
globalCount++;
}
Модификатор const
Модификаторы переменных — это ключевые слова, которые изменяют поведение переменных при компиляции и выполнении программы.
Синтаксис объявления:
const тип имя_переменной = значение;
Пример:
const float PI = 3.14159;
const int MAX_SPEED = 255;
Назначение модификатора const:
-
Делает переменную неизменяемой (значение нельзя изменить после инициализации). Переменную можно использовать как и любую другую, но изменить ее значение после инициализации
невозможно. При попытке присвоить новое значение компилятор выдаст ошибку. Представь, что ты настраиваешь светодиод на пине 13 (пример ниже).
Без
constкомпилятор промолчал бы, и ты бы долго гадал, почему светодиод перестал работать. А сconstты узнаешь об ошибке мгновенно, даже не заливая прошивку в плату.const int ledPin = 13; // Светодиод всегда на 13 пине void setup() { pinMode(ledPin, OUTPUT); } void loop() { // где-то в глубине кода, через 200 строк... ledPin = 5; // ❌ Ошибка компиляции! Константу нельзя изменить } - Позволяет экономить память, так как компилятор подставляет значение напрямую
Особенности:
-
Если попытаться изменить
const-переменную, компилятор выдаст ошибку:const int x = 10; x = 20; // ❌ Ошибка: "assignment of read-only variable" - Рекомендуется именовать константы в ВЕРХНЕМ РЕГИСТРЕ (например,
MAX_TEMP).
Что мы узнали:
- Что такое переменная
- Правила объявления переменных
- Классификация переменных по типам
- Области видимости переменных
Следующий урок: Первая программа на Arduino — "Hello, World!" с мигающим светодиодом