Типы данных Arduino

Добрый день!
На днях у нас появилась необходимость произвести расчет объема памяти, необходимого для записи данных с нескольких датчиков в течение длительного времени и оказалось, что школьные знания информатики не такие уж и бесполезные :)

Итак, для начала нам необходимо понять данные какого типа мы будем получать с различных датчиков или других внешних устройств и какой объем они будут занимать, для этого нем необходимо вспомнить типы данных. Они приведены далее в таблице:

Тип данных
Описание
Диапазон значений

Объем памяти


Целочисленные типы данных


byte

Беззнаковые целые числа
от 0 до 255 (или (2^8)-1)
1 байт (8 бит)

int

Основной и самый популярный целочисленный тип данных
от -32768 до 32767
(или-2^15 до (2^15 )-1)
(для Arduino Due от -2 147 483 648
до 2 147 483 647)
2 байта (16 бита)
4 байта (32 бита для Arduino Due)

unsigned int/word
Хранит бОльшее количество чисел, чем int за счет отсутствия отрицательных чиселот 0 до 65535
(или (2^16)-1)
(для Arduino Due от 0 до 4 294 967 295 (2^32 — 1))
2 байта (16 бит)
4 байта (32 бит для Arduino Due)

long

Расширенный диапазон целочисленных данных (для Arduino Due тоже, что и int)
от -2 147 483 648 до 2 147 483 647
4 байта (32 бит)

unsigned long

Расширенный диапазон  беззнаковых целочисленных данных (для 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
не имеет фиксированного объема, т.к. является массивом, объем памяти вкладывается из количества символов в массиве

Логический тип данных


boolean

false = 0
true=1 (или любой число,
отличное от 0)
true или false
1 байт (8 бит)


Для чего эти знания при написании программ? Если программа небольшая - типы данных, которые Вы будете использовать для переменных, не будут иметь практически никакого значения. Но вот если программа объемная или нужно запоминать и обрабатывать большой объем данных, то нужно будет задуматься над тем, хватит ли памяти выбранной платформы для того, чтобы выполнить то, что Вы задумали.

Для того, чтобы Ваша программа работала максимально эффективно, правильно оценивайте максимальное значение переменной, которую Вы используете. Например, если вы используете переменную
int Random, но при этом значение этой переменной в программе не будет превышать 100, то правильнее будет использовать тип данных byte. Но, конечно же, это абсолютно не обязательно :)

При использовании символьных типов данных стоит помнить, что переменные типа char - это символы из таблицы ASCII.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.