3.01. Типы данных и переменные.md
Теперь, когда вы знаете базовую структуру программы для Рудирона, давайте научимся работать с её главным строительным материалом 0 данными. Представьте, что вы создаёте устройство, которое считает, сколько раз нажали кнопку, или показывает температуру в комнате. Для этого программе нужно где-то хранить эту информацию. Место для хранения данных называется переменной.
Переменные - ваши помощники в коде
Переменная - это, по сути, именованная ячейка в памяти микроконтроллера, в которую мы можем положить какие-то данные. Это как подписанная коробка, в которой можно хранить число, символ или логическое значение.
Главное удобство переменных в том, что их содержимое можно изменять в любой момент. Если вам нужно, чтобы светодиод мигнул не 5, а 10 раз, вы просто меняете число в «коробке», а не переписываете всю программу.
Память микроконтроллера Рудирон ограничена. Представьте её как небольшой шкаф с полками. Каждая переменная занимает в этом шкафу определённое место. Чтобы использовать это пространство эффективно, для каждого типа данных существует своя «коробка» подходящего размера - тип данных.
Основные типы данных
Ядро Рудирона следует стандартам C++, предоставляя набор типов данных, адаптированных для программирования микроконтроллеров. Выбор правильного типа - это как выбор правильного контейнера: для хранения одного яблока не нужна огромная коробка.
| Тип данных | Назначение и диапазон | Размер в памяти |
bool |
Логические значения: true или false. |
1 байт |
byte |
Маленькие целые числа: от 0 до 255. | 1 байт |
char |
Один символ (например, ‘A’, ‘%’). | 1 байт |
int |
Целые числа: от -2,147,483,648 до 2,147,483,647. | 4 байта |
float |
Дробные числа (6-7 знаков после запятой). | 4 байта |
double |
Дробные числа повышенной точности (до 15 знаков). | 8 байт |
String |
Текстовые строки любой длины. | Переменный |
int. Идеально подходит для счётчиков (нажатия кнопок, шаги, обороты).
Пример:int clickCount = 0;float. Используется для хранения результатов измерений с датчиков, где важна дробная часть (температура, напряжение, расстояние).
Пример:float temperature = 24.5;double. Нужен для сложных научных или математических расчётов, где важна максимальная точность. В большинстве проектов достаточноfloat.
Пример:double pi_precise = 3.1415926535;char. Хранит один-единственный символ. Незаменим при работе с текстовыми протоколами, где нужно анализировать команды посимвольно.
Пример:char command = 'A';String. Удобный тип для работы с целыми текстовыми строками - например, для вывода сообщений в монитор порта.
Пример:String message = "System OK";bool. Основа всей логики. Хранит только два состояния: «да» (true) или «нет» (false). Идеален для переменных-флагов (например,isLightOn).
Пример:bool isButtonPressed = false;byte. Очень экономный тип. Используйте его вместоintдля значений, которые точно не превысят 255 (например, яркость ШИМ или RGB-компонента цвета).
Пример:byte pwmValue = 128;
Истина и ложь в C++
Тип bool напрямую хранит логические значения true и false. Они помогают вашей программе принимать решения, но в C++ понятие истины и лжи немного шире.
В
C++любое числовое значение может быть интерпретировано как логическое:
- Ноль (
0) всегда считается ложью (false).- Любое ненулевое значение (1, 42, -5) всегда считается истиной (
true).
Это очень удобное свойство. Оно позволяет писать более короткий и читаемый код при проверке состояний.
Пример:
void setup() {
Serial.begin(9600);
bool isReady = true;
Serial.println(isReady); // Выведет: 1
isReady = false;
Serial.println(isReady); // Выведет: 0
int sensorValue = 42;
// Так как sensorValue не равен 0, он будет обработан как true
Serial.println(sensorValue != 0); // Выведет: 1 (true)
sensorValue = 0;
// Так как sensorValue равен 0, он будет обработан как false
Serial.println(sensorValue != 0); // Выведет: 0 (false)
}
void loop() {}
Примечание.
Serial.println()при выводеboolпечатает1дляtrueи0дляfalse. Это наглядно показывает, как микроконтроллер представляет эти значения внутри себя.
Квалификаторы типов: short, long и unsigned
Иногда стандартные типы данных нужно немного «модифицировать» - сделать их диапазон больше, меньше или убрать отрицательные числа. Для этого существуют квалификаторы.
short. Уменьшаетintдо 2 байт (диапазон от -32,768 до 32,767). Полезно для экономии памяти, когда вы уверены, что число не будет большим.
Пример:short smallCounter = 500;long. На некоторых платформах увеличивает размерint, но наРудироне(32-битная архитектура)long intзанимает те же 4 байта, что иint. Однако существуетlong long, который занимает 8 байт и позволяет хранить огромные числа.
Пример:long long veryBigNumber = 10000000000;unsigned. Этот квалификатор убирает знак у числового типа, делая его только положительным. Это удваивает его верхний предел. Например,unsigned intхранит значения от 0 до 4,294,967,295 (4 байта).
Пример:unsigned int timerMillis = 3600000; // Хранит время в мс, оно не бывает отрицательным
Работа с символами и таблица ASCII
Тип char хранит не просто букву, а её числовой код из таблицы ASCII. Это стандарт, который сопоставляет каждому символу (букве, цифре, знаку препинания) уникальное число от 0 до 127. Например, символ 'A' — это на самом деле число 65, а символ '0' — это число 48.
Ниже приведена часть таблицы ASCII для справки:
| Код | Символ | Код | Символ | Код | Символ | Код | Символ | Код | Символ | Код | Символ |
| 32 | (пробел) | 48 | 0 | 64 | @ | 80 | P | 96 | ` | 112 | p |
| 33 | ! | 49 | 1 | 65 | A | 81 | Q | 97 | a | 113 | q |
| 34 | " | 50 | 2 | 66 | B | 82 | R | 98 | b | 114 | r |
| 35 | # | 51 | 3 | 67 | C | 83 | S | 99 | c | 115 | s |
| 36 | $ | 52 | 4 | 68 | D | 84 | T | 100 | d | 116 | t |
| 37 | % | 53 | 5 | 69 | E | 85 | U | 101 | e | 117 | u |
| 38 | & | 54 | 6 | 70 | F | 86 | V | 102 | f | 118 | v |
| 39 | ’ | 55 | 7 | 71 | G | 87 | W | 103 | g | 119 | w |
| 40 | ( | 56 | 8 | 72 | H | 88 | X | 104 | h | 120 | x |
| 41 | ) | 57 | 9 | 73 | I | 89 | Y | 105 | i | 121 | y |
| 42 | * | 58 | : | 74 | J | 90 | Z | 106 | j | 122 | z |
| 43 | + | 59 | ; | 75 | K | 91 | [ | 107 | k | 123 | { |
| 44 | , | 60 | < | 76 | L | 92 | \ | 108 | l | 124 | | |
| 45 | - | 61 | = | 77 | M | 93 | ] | 109 | m | 125 | } |
| 46 | . | 62 | > | 78 | N | 94 | ^ | 110 | n | 126 | ~ |
| 47 | / | 63 | ? | 79 | O | 95 | _ | 111 | o |
Как создать переменную?
Объявление переменной - это первый шаг в написании почти любой программы.
1. Выберите тип данных (int, float и т.д.).
2. Дайте переменной понятное имя, отражающее её назначение (например, speed для скорости). Имя должно следовать правилам:
- Может содержать только латинские буквы, цифры и знак
_. - Не может начинаться с цифры.
- Чувствительно к регистру (
speedиSpeed- это разные переменные). - Не может совпадать с зарезервированными словами (
int,void,forи т.д.).
- При необходимости укажите начальное значение с помощью знака
=.
Пример:
int clicks = 10; // Переменная clicks хранит количество нажатий

Проверка работы через Serial
Как узнать, что происходит внутри программы и какие значения хранят ваши переменные? Рудирон позволяет отправлять сообщения на компьютер через последовательный порт (Serial).
Для использования Serial нужно: 1. Инициализировать его в setup(): Serial.begin(9600); 2. Отправлять данные: Serial.print() (вывод без переноса строки) или Serial.println() (вывод с переносом на новую строку). 3. Смотреть результат в Мониторе порта в Arduino IDE (Tools → Serial Monitor). Не забудьте выставить ту же скорость (9600) в окне монитора.
Пример:
void setup() {
Serial.begin(9600); // Начать связь с компьютером
int counter = 42;
delay(2000);
Serial.print("Initial value: ");
Serial.println(counter); // Отправить значение на компьютер
}
void loop() {}
Загрузив этот код и открыв монитор порта, вы увидите сообщение «Initial value: 42». Это подтвердит, что ваша переменная создана и имеет правильное значение.

Зачем это нужно?
Переменные и типы данных - это основа ваших программ. Они позволяют хранить состояния, результаты измерений и счётчики. Правильный выбор типа данных делает вашу программу эффективной и экономит драгоценную память микроконтроллера. А Serial - это ваше «окно» во внутренний мир Рудирона, незаменимый помощник в поиске ошибок и отладке.
Вы освоили переменные и типы данных, которые позволяют вашей плате Рудирон запоминать числа, текст и состояния. Теперь переходите к следующему параграфу, чтобы узнать, как использовать операторы для выполнения вычислений и управления устройствами. А чтобы закрепить знания, попробуйте выполнить задания к этому параграфу.
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home