Типы данных Arduino

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 12 марта 2018, 20:01

void
Тип void используется только для объявления функций. Он показывает, что функция не возвращает никакого значения вызвавшей ее функции.

boolean
Может принимать одно из двух состояний — true или false (хотя и занимает целый байт ОЗУ)
От переводчика — поскольку тип boolean характерен для флагов, целесообразно использовать определенные биты какой-то переменной, тем самым более полно используя оперативную память.

char
Описание:
Даный тип данных занимает 1 байт ОЗУ и хранит символ. Единичные символы выделяются в одинарные кавычки, например 'A'. Для объявления много буквенных символьных переменных используются двойные кавычки «ABC».
Символы хранятся в виде числа, соответствующего по таблице ASCII определенному символу. Это значит, что с символьными переменнымии можно совершать арифметические операции. Таким образом 'A'+1 имеет значение 66, когда символу A по ASCII соответсвует 65.
Тип данных char кодирует в диапазоне от -128 до 127, т.к. является переменной типа signed. Для использования 8-бит переменной типа unsigned, используйте тип данных byte.

unsigned char
Описание
символьная переменная типа unsigned занимает 1 байт памяти также как и byte.
unsigned char Кодирует числа в диапазоне от 0 до 255.
Предпочтительнее использовать тип byte вместо этого типа.

byte
Описание:
byte хранит 8-бит положительное число, от 0 до 255.

int
Описание:
Целочисленный тип данных. Занимает 2 байта и может хранить значения от -32 768 до 32767.
Отрицательные значения хранятся в т.н. дополнительном коде, когда старший бит показывает, что число отрицательное. При этом биты переменной инвертируются и прибавляется 1.

unsigned int
Описание
Unsigned ints (положительное цело числительное) такая же переменная что и int, также занимает 2 байта. Однако она хранит только положительные числа, поэтому вмещает диапазон чисел от 0 до 65,535 (2^16) — 1).

word
Описание
word хранит 16-бит положительное число, от 0 до 65536. Также как и unsigned int.

long
Описание:
Long это расширенный тип данных цело числительной переменной. Занимает 32 бит (4 байта и может хранить числа от -2,147,483,648 до 2,147,483,647.

unsigned long
Описание:
Unsigned long это расширенный тип данных положительной целочислительной переменной, занимающий 32 бит (4 байт).Может хранить положительные значения от 0 до 4,294,967,295 (2^32 — 1).

float
Описание:
Тип данных для хранения чисел с плавающей точкой. Числа с плавающей точкой имеют гораздо большее разрешение чем целочисленные переменные. Такие числа могут быть величиной до 3.4028235E+38 от -3.4028235E+38. Они занимают 32 бит (4 байт) данных.
Числа с плавающей точкой не точны и операция 6,0/2,0 не всегда вернет 2,0. Вы должны учитывать погрешность при сравнении двух чисел.
Числа с плавающей точкой вычисляются гораздо медленнее чем целочисленные, поэтому при написании время-критичного кода остерегайтесь большого количества операций над переменными с плавающей точкой. Используйте функции конвертирования чисел с плавающей точкой в целочисленные для увеличения скорости работы программы.

double
Описание
Double это тип данных переменной с плавающей точкой двойной точности. Однако, в Arduino на данный момент, точность double аналогична точности float — т.е. занимает 4 байта.

string
Описание
Строки это массивы символов, завершающиеся нулевым сиволом
Пример
Ниже представлены все правильные объявления переменных типа char.

Код: Выделить всё

char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = «arduino»;
char Str5[8] = «arduino»;
char Str6[15] = «arduino»

Возможности для объявления массивов
Объявление массива символов без занесения в него данных, Str1
Объявление массива символов с одной свободной ячейкой — компилятор автоматически добавит туда нулевой символ, Str2
Явное добавление нулевого символа, Str3
Инициализация массива без указания длинны, компилятор сам посчитает необходимое количество ячееек, плюс поставит нулевой символ, Str4
Инициализация массива я явным указанием длины массива и занесением в массив строковой константы, Str5
Инициализация массива, со свободным местом для более длинных строк, Str6

Нулевой символ
Как правило, строки заканчиваются нулевым символом (ASCII код 0). Этот симвлол указывает функции (например, Serial.print ()), что строка закончилась. В противном случае, функция будет продолжать чтение последующих байт памяти, которые фактически не являются частью строки.
Это означает, что ваша строка должна иметь место для еще одного символа, чем необходимое для умещения вашей строки. Вот почему Str2 и str5 необходимо восемь символов, хотя в «Arduino» только семь — последнее место автоматически заполняется нулевым символом. STR4 станет автоматически строкой с 8 символами и нулевым символом в конце В STR3, мы четко указали нулевой символ ('\ 0').

Одинарные или двойные кавычки?
строки всегда заключаются в двойные кавычки ( «ABC»), и символы — в одинарные ('').
Строки можно объявлять по частям:
char MyString [] = «Это первая линия»
«Это вторая линия»
«Прочее»;

Массивы строк
Наиболее удобным способом работы с большими объемами текста является использование массив. Поскольку строка — это и так массив, массивы получаются двухмерные. В коде ниже звездочкой после типа данных Char: символ “*» указывает, что это массив указателей. Все имена массива это на самом деле указатели, так что в результате мы работаем с массивом массивов. Указатели являются одними из наиболее сложных для понимания операторов в C для начинающих, однако не обязаельно знать их общее назначение для понимания назначения в данном применении.

Массивы
Массив представляет собой набор переменных, доступных по порядковому номеру.
Создание (объявление) Массив
Все методы, описанные ниже это правильные объявления массивов:
Int myInts [6];
Int myPins [] = (2, 4, 8, 3, 6);
Int mySensVals [6] = (2, 4, -8, 3, 2);
char message[6] = «hello»;
Вы можете объявить массив без инициализации, как в myInts.
В myPins мы объявляем массив без явного выбора размера. Компилятор подсчитывает элементы и создает массив соответствующего размера.
Наконец, вы можете инициализировать как и размер вашего массива, как и в mySensVals. Обратите внимание, что при объявлении массива типа CHAR, потребуется мето для нулевого символа.


Доступ к массиву
Индекс в массивах начинается с нуля:
mySensVals [0] == 2, mySensVals [1] == 4, и так далее.
Это также означает, что в массиве с десятью элементами, последний будет под номером 9. Итак:
Int myArray [10] = () 9,3,2,4,3,2,7,8,9,11;
/ / myArray [9] содержит 11
/ / myArray [10] является недействительным и содержит случайную информацию (другой адрес памяти)
По этой причине вы должны быть осторожны в получении доступа к массивам. Доступ к несуществующим ячейкам массива приводит к чтению других областей памяти, а запись в эти области может быть критична. Такой баг считается один из сложноуловимых.
В отличие от основного или Java, компилятор С, не проверяет, существует ли ячейка с таким порядковым номером или нет
Чтобы присвоить значение элементу массива:
mySensVals [0] = 10;
Для получения значения элемента массива:
X = mySensVals [4];

Массивы и циклы
Массивы в основном обрабатываются при помощи циклов, где счетчиком цикла является индекс ячейки.
Например, для вывода элементов массива через последовательный порт, можно использовать следующее:

Код: Выделить всё

int i;
for (= 0; i < 5; i = i + 1) {
Serial.println (myPins[i]);
[center]i love you [s]mxIni[/s] Mysql[/center]


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Программирование»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 6 гостей