Типы данных Arduino
Добрый день!
На днях у нас появилась необходимость произвести расчет объема памяти, необходимого для записи данных с нескольких датчиков в течение длительного времени и оказалось, что школьные знания информатики не такие уж и бесполезные :)
Итак, для начала нам необходимо понять данные какого типа мы будем получать с различных датчиков или других внешних устройств и какой объем они будут занимать, для этого нем необходимо вспомнить типы данных. Они приведены далее в таблице:
При использовании символьных типов данных стоит помнить, что переменные типа char - это символы из таблицы ASCII.
На днях у нас появилась необходимость произвести расчет объема памяти, необходимого для записи данных с нескольких датчиков в течение длительного времени и оказалось, что школьные знания информатики не такие уж и бесполезные :)
Тип данных | Описание | Диапазон значений | ||
Беззнаковые целые числа | от 0 до 255 (или (2^8)-1) | 1 байт (8 бит) | ||
Основной и самый популярный целочисленный тип данных | от -32768 до 32767 (или-2^15 до (2^15 )-1) (для Arduino Due от -2 147 483 648 до 2 147 483 647) | 2 байта (16 бита) 4 байта (32 бита для Arduino Due) | ||
Хранит бОльшее количество чисел, чем int за счет отсутствия отрицательных чисел | от 0 до 65535 (или (2^16)-1) (для Arduino Due от 0 до 4 294 967 295 (2^32 — 1)) | 2 байта (16 бит) 4 байта (32 бит для Arduino Due) | ||
Расширенный диапазон целочисленных данных (для Arduino Due тоже, что и int) | от -2 147 483 648 до 2 147 483 647 | 4 байта (32 бит) | ||
Расширенный диапазон беззнаковых целочисленных данных (для Arduino Due тоже, что и unsigned int) | от 0 до 4 294 967 295 (2^32 — 1) | 4 байта (32 бит) | ||
short | Целочисленный тип данных (аналогичен типу данных int) | от -32768 до 32767 (-2^15 до (2^15) — 1) | 2 байта (16 бит) | |
Числа с плавающей точкой (с десятичным разделителем) | ||||
float | Точность числа составляет не более 8 десятичных знаков (общее количество цифр числа) | от -3.4028235E+38 до 3.4028235E+38 (или от −3,4028235 × 10^38 до 3,4028235 × 10^38) | 4 байта (32 бита) | |
double | Аналогично float. (Дробное число двойной точности для Arduino Due) | 4 байта (32 бита) 8 байт (64 бита для Arduino Due) | ||
Символьные типы данных | ||||
char | Хранит символьное значение, в памяти контроллера хранятся как числа (соответствуют кодам символов в таблице ASCII) | от -128 до 127 (или от -2^7 до (2^7)-1) | 1 байт (8 бит) | |
unsigned char | Беззнаковый тип данных (аналогичен byte) | 0 до 255 (или от 0 до (2^8)-1) | 1 байт (8 бит) | |
string | Массив символов типа char | символы из таблицы ASCII |
| |
false = 0 true=1 (или любой число, отличное от 0) | true или false | 1 байт (8 бит) |
Для чего эти знания при написании программ? Если программа небольшая - типы данных, которые Вы будете использовать для переменных, не будут иметь практически никакого значения. Но вот если программа объемная или нужно запоминать и обрабатывать большой объем данных, то нужно будет задуматься над тем, хватит ли памяти выбранной платформы для того, чтобы выполнить то, что Вы задумали.
Для того, чтобы Ваша программа работала максимально эффективно, правильно оценивайте максимальное значение переменной, которую Вы используете. Например, если вы используете переменную int Random, но при этом значение этой переменной в программе не будет превышать 100, то правильнее будет использовать тип данных byte. Но, конечно же, это абсолютно не обязательно :)
Для того, чтобы Ваша программа работала максимально эффективно, правильно оценивайте максимальное значение переменной, которую Вы используете. Например, если вы используете переменную int Random, но при этом значение этой переменной в программе не будет превышать 100, то правильнее будет использовать тип данных byte. Но, конечно же, это абсолютно не обязательно :)
При использовании символьных типов данных стоит помнить, что переменные типа char - это символы из таблицы ASCII.