Site Language

Translate

Russian Albanian Arabic Armenian Azerbaijani Belarusian Bulgarian Catalan Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Serbian Slovak Slovenian Spanish Swedish Turkish Ukrainian Yiddish

CashBack Реальный возврат при покупках в интернете

 

Данные

Типы данных

Компилятор Arduino определяет следующие типы данных:

boolean;

char;

byte;

int;

unsigned int;

long;

unsigned long;

float;

double;

string;

массив (array);

void.

Рассмотрим типы данных более подробно.

boolean

Логический (булевый) тип данных — boolean. Может принимать одно из двух значений: true или false. Данные типа boolean занимают в памяти один байт.

char

Переменная типа char занимает 1 байт памяти и может хранить один алфавитно-цифровой символ (литеру). При объявлении литеры используются одиночные кавычки: 'A' (двойные кавычки используются при объявлении строки символов — тип string: "ABC").

Символ хранится в памяти как число, соответствующее коду символа в таблице кодировки символов ASCII. Так как символ хранится как число, в памяти над ним возможно производить арифметические действия (например, 'A' + 1 будет 66, т. к. ASCII код для 'A' — 65).

Тип char знаковый тип, т. е. число (код), хранящийся в памяти, может принимать значения от –128 до 127. Если необходима знаковая однобайтовая переменная, используйте тип byte.

Пример:

char myChar = 'A';

char myChar = 65; // Варианты эквивалентны

 

byte

Хранит 8-битовое числовое значение без десятичной точки. Имеет диапазон от 0 до 255.

Пример:

byte someVariable=150; // объявление переменной someVariable,

// имеющей тип byte

int

Тип данных int (от англ. integer — целое число) — один из наиболее часто используемых типов данных для хранения чисел. int занимает 2 байта памяти и может хранить числа от –32 768 до 32 767.

Для размещения отрицательных значений int использует так называемый дополнительный код представления числа. Старший бит указывает на отрицательный знак числа, остальные биты инвертируются с добавлением 1.

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

Когда переменная типа int вследствие арифметической операции достигает своего максимального значения, она "перескакивает" на самое минимальное значение и наоборот .

int x;

x = -32,768;

x = x - 1; // x теперь равно 32,767 x = 32,767;

x = x + 1; // x теперь равно -32,768

unsigned int

Тип данных unsigned int — беззнаковое целое число, так же как и тип int (знаковое), занимает в памяти 2 байта. Но в отличие от int, тип unsigned int может хранить только положительные целые числа в диапазоне от 0 до 65 535.

Отличие кроется в том, как unsigned int использует старший бит, иногда называемый знаковым битом. Если старший бит равен 1, то для типа int компилятор Arduino считает, что это число отрицательное, а остальные 15 битов несут информацию о модуле целого числа в дополнительном коде представления числа, в то время как unsigned int использует все 16 битов для хранения модуля числа.

Когда переменная типа unsigned int вследствие арифметической операции достигает своего максимального значения, она "перескакивает" на самое минимальное значение и наоборот.

unsigned int x; x = 0;

x = x - 1; // x теперь равна 65535

x = x + 1; // x теперь 0

long

Тип данных long используется для хранения целых чисел в расширенном диапазоне от –2 147 483 648 до 2 147 483 647. long занимает 4 байта в памяти. Пример:

long var1 = -178000;

unsigned long

Unsigned long используется для хранения положительных целых чисел в диапазоне от 0 до 4 294 967 295 и занимает 32 бита (4 байта) в памяти. Пример вывода в мил- лисекундах (мс) с начала выполнения программы приведен

void loop()

{

Serial.print("Time: ");

time = millis();

//выводит время, прошедшее с момента начала выполнения программы Serial.println(time);

function1();

}

float

Тип данных float служит для хранения чисел с плавающей запятой. Этот тип часто используется для операций с данными, считываемыми с аналоговых входов. Диапазон значений — от –3,4028235E+38 до 3,4028235E+38. Переменная типа float занимает 32 бита (4 байта) в памяти.

Тип float имеет точность 6–7 знаков, имеются в виду все знаки, а не только мантисса. Обычно для увеличения точности используют другой тип — double, но на платформе Arduino double и float имеют одинаковую точность.

double

Тип данных double, в отличие от большинства языков программирования, имеет ту же точность, что и тип float и занимает также 4 байта памяти.

Тип double поддерживается в Arduino для совместимости кода с другими платформами.

string — текстовые строки

Текстовые строки в Arduino объявляются как массив (array) типа char (символов, литер), оканчивающийся символом "конца строки". Возможны следующие варианты объявления текстовых строк;

 объявить массив символов без присваивания значений;

 объявить массив символов и присвоить значения всем элементам, кроме последнего, компилятор Arduino автоматически добавит символ конца строки;

 явно объявить завершающий символ;

 инициализировать массив строковой константой в двойных кавычках. Компилятор автоматически задаст требуемый размер на массив, равный количеству символов плюс завершающий символ;

 инициализировать массив с явным заданием размера и присвоением строковой константы;

 инициализировать массив с явным заданием дополнительного размера (с запасом), фактически превышающего размер строковой константы при начальном присвоении.

приведены варианты объявления и присвоения строк.

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";

Обычно строки оканчиваются нулевым символом (код 0 в ASCII). Это позволяет функциям (таким как Serial.print()) выявлять окончание строки. В противном случае могут считаться байты памяти, не принадлежащие переменной.

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

Строки всегда объявляются внутри двойных кавычек ("Abc").

При работе с большими объемами текстовой информации бывает удобно использо- вать массивы строк. Так как строки сами по себе массивы, массив строк будет двумерным массивом.

В примере, приведенном, символ звездочки после объявления типа "char*" указывает на то, что это массив указателей. Это необходимо для задания двумерного массива.

char* myStrings[]={"string 1", "string 2", "string 3","string 4",

"string 5","string 6"};

void setup()

{Serial.begin(9600);}

void loop()

{

for (int i = 0; i < 6; i++){ Serial.println(myStrings[i]);

delay(500);

}

}

 

Программирование, Типы данных int, Управляющие операторы, Унарные операторы, Логические операторы, Типы данных, Синтаксис, Операции с битами и байтами, Арифметические операторы, Внешние прерывания, Операторы сравнения, Унарные операторы, Унарные операторы, Дополнительные фунции ввода/вывода,  Логические операторы, Типы данных, Функции transfer(), Массивы, Константы, Цифровой ввод/вывод, Переменные, Преобразование типов данных, Функции digitalRead(), Цифровой ввод/вывод, Аналоговый ввод/вывод, Функции setBitOrder(), Функции digitalWrite(), Функции digitalRead(), Дополнительные фунции ввода/вывода, Генераторы случайных значений, Операции с битами и байтами, Внешние прерывания, Работа со временем, Математические функции, Математические функции, Тригонометрические функции, Тригонометрические, функции, Типы данных, Генераторы случайных значений, Функции digitalRead(), Типы данных int, Операции с битами и байтами, Функции digitalWrite(), Функции digitalRead(), Внешние прерыванияРабота со временем, Функции pinMode(), Функции attachInterrupt(), Функции analogReference(type),Синтаксис,  Арифметические операторы, Операторы сравнения, Функции setClockDivider(), Функции setDataMode(), Функции transfer(), Функции setBitOrder(), Функции digitalWrite(), Функции digitalRead(), Типы данных int, Программирование, Побитовый свдиг влево (<<), побитовый сдвиг вправо (>>), Управляющие операторы, Константы.

 

All Vintage Vinyl Records VinylSU.xyz

1.png2.png3.png4.png5.png