Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Дисциплины:
2022-11-24 | 23 |
5.00
из
|
Заказать работу |
|
|
Когда переменная типа 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 до 65535 (2^16)-1).
Отличие кроется в том как unsigned int использует старший бит, иногда называемый знаковый бит. Если старший бит равен 1, то для типа int компилятор Arduino считает, что это число отрицательное, а остальные 15 bit несут информацию о модуле целого числа в дополнительного кода представления числа, в то время как unsigned int использует все 16 бит для хранения модуля числа.
Пример
unsigned int ledPin = 13; |
Синтаксис
unsigned int var = val; |
Замечание по использованию типа unsigned int
Когда переменная типа int в следствие арифметической операции достигает своего максимального значения, она "перескакивает" на самое минимальное значение и наоборот:
Unsigned int x | |
x = 0; |
x = x - 1; // x теперь равна 65535 | |
x = x + 1; // x теперь 0 |
Word
Описание типа
Тип данных word хранит 16-битное, не содержащее знака, число от 0 до 65535. Тоже самое, что unsigned int — (беззнаковое целое число).
Пример
word w = 10000; |
Long
Описание типа
Тип данных long используется для хранения целых чисел в расширенном диапазоне от -2,147,483,648 до 2,147,483,647. long занимает 4 байта в памяти.
|
Пример
long speedOfLight = 186000L; // См. значение постфикса 'L' в теме Целочислесленные константы |
Синтаксис
long var = val; |
Unsigned long
Описание типа
Unsignedlong используется для хранения положительных целых чисел в диапазоне от 0 до 4,294,967,295 (2^32 - 1)изанимает 32 бита (4 байта) в памяти.
Пример
unsigned long time; |
Void setup() | |
{ Serial.begin(9600); } |
void loop() |
{ Serial.print("Time: "); |
time = millis(); | |
//выводит время, прошедшее с момента начала выполнения программы |
Serial.println(time); | |
// ожидаем (делаем пауза) 1 секунду |
delay(1000); | |
} |
Синтаксис
unsigned long var = val; |
Float
Описание типа
Тип данных float служит для хранения чисел с плавающей запятой. Этот тип часто используется для операций с данными, считываемыми с аналоговых входов. Диапазон значений — от -3.4028235E+38 до 3.4028235E+38. Переменная типа float занимает 32 бита (4 байта) в памяти.
Тип float имеет точность 6-7 знаков, имеются ввиду все знаки, а не только мантисса. Обычно для увеличения точности используют другой тип - double, но на платформе Arduino, double и float имеют одинаковую точность.
Хранение в памяти чисел с плавающей точкой в двоичной системе обуславливает потерю точности. Так, например, 6.0 / 3.0 не обязательно равен 2.0. Сравнивая два числа с плавающей точкой следует проверять не точное равенство, а разницу между этими числами, меньше ли она некого выбранной малого порога.
Следует также учитывать, что арифметические операции над числами с плавающей запятой выполняются существенно медленнее, чем над целыми.
Пример
floatmyfloat; | |
floatsensorCalbrate = 1.117; |
Синтаксис
floatvar = val; |
Пример использования в коде
intx; |
inty; |
floatz; |
x = 1; | |
y = x / 2; // y теперь равен 0, тип int не может хранить дробные числа |
z = (float)x / 2.0; // z равна.5 (следует использовать 2.0, а не 2) |
Double
Описание типа данных
|
Тип данных double, в отличие от большинства языков программирования, имеет ту же точность, что и тип float и занимает также 4 байта памяти.
Тип double поддерживается в Arduino для совместимости кода с другими платформами.
String - текстовые строки
Описание
Текстовые строки в Ардуино объявляются как массив (array) типа char (символов - литер), оканчивающийся символом "конца строки".
Синтаксис
Ниже приведены варианты объявления и присвоения строк:
charStr1[15]; | |
charStr2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'}; |
charStr3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'}; | |
charStr4[ ] = "arduino"; |
charStr5[8] = "arduino"; | |
charStr6[15] = "arduino"; |
Возможны следующие варианты объявления текстовых строк:
Символ окончания строки
Обычно строки оканчиваются нулевым символом (код 0 в ASCII). Это позволяет функциям (таким как Serial.print()) выявлять окончание строки. В противном случае могут считаться байты памяти, не принадлежащие переменной.
Массивы символов, выделяемый под строку, должен иметь один дополнительный элемент для символа конца строки. Именно поэтому Str2 и Str5 должны иметь 8 символом, хотя "arduino" 7 символов — последнему элементу автоматически присваивается символ окончания строки.
Технически возможно объявить строку без символа окончания строки, например, объявить длину массива равной 7 для Str2. Это приведет к некорректной работе функций, оперирующих строками.
Одинарные и двойные кавычки
Строки всегда объявляются внутри двойных кавычек ("Abc"). Символы — внутри одинарных ('A')
Инициализация длинных строк
Длинные строки могут быть объявлены так:
|
charmyString[] = "This is the first line" | |
" this is the second line" |
" etcetera"; |
Массивы строк
При работе с большими объемами текстовой информации, например в проектах с LCD дисплеем, бывает удобно использовать массивы строк. Так как строки сами по себе массивы, массивы строк будет двумерным массивом.
В примере ниже, символ звездочки после объявления типа " char* " указывает на то, что это массив указателей. Это необходимо для задания двумерного массива. В данном случае не требуется понимания всех тонкостей работы с указателями.
Пример
char* myStrings[]={"This is string 1", "This is string 2", "This is string 3", | |
"This is string 4", "This is string 5","This is string 6"}; |
voidsetup(){ |
Serial.begin(9600); | |
} |
voidloop(){ |
for(inti = 0; i < 6; i++){ | |
Serial.println(myStrings[i]); |
delay(500); | |
} |
} |
String
String класс появился в версии Arduino 0019. Этот класс позволяет хранить и манипулировать текстовыми строками, по сравнению с string (массивом символов) класс String предоставляет удобные функции для работы со строками, такие как поиск вхождения в строку, объединение строк и др. Класс String занимает несколько больше места в памяти, чем массив символов string.
Обратите внимание при обращение к классу String — он пишется с заглавной S. Массив символов string — с прописной s. Строковые константы, записанные в "двойных кавычка" интерпретируются компилятором как массив символов, а не объект класса String.
Функции
Операторы
· Массивы
· Массивы (arrays) — именованный набор однотипных переменных, с доступом к отдельным элементам по их индексу.
· Объявление массивов
· Ниже приведены несколько корректных вариантов объявления массивов:
int myInts[6]; | |
int myPins[] = {2, 4, 8, 3, 6}; |
·
int mySensVals[6] = {2, 4, -8, 3, 2}; | |
char message[6] = "hello"; |
· Массив может быть объявлен без непосредственной инициализации элементов массива, как в случае массива myInts.
· Массив myPins был объявлен без явного задания размера. Компилятор сам посчитает фактическое количество элементов и создаcт в памяти массив необходимого размера.
|
· Размер может быть задан явно, одновременно с инициализацией элементов массива. Обратите внимания, что при создании массива типа char, необходим дополнительный элемент массива для нулевого символа. Подробнее см. строки.
· Доступ к элементам массива
· Индексация массива начинается с 0. Это значит, что для массива с 10-тью элементами, индекс 9 будет последним:
int myArray[10]={9,3,2,4,3,2,7,8,9,11}; | |
// myArray[0] первый элемент, содержит 9 |
·
// myArray[9] последний элемент, содержит 11 | |
// myArray[10] это неверно возможно возвращение произвольного значения из области памяти не относящийся к массиву |
· Присваиваем значение элементу массива:
mySensVals[0] = 10; |
· Возвращаем значение элемента массива:
x = mySensVals[4]; |
· Массивы и FOR циклы
· Чаще всего для перебора элементов цикла используется цикл for, счетчик цикла используется как индекс для доступа к каждому элементу массива. Например, для вывода массива через Serial порт можно использовать следующий код:
int i; | |
for (i = 0; i < 5; i = i + 1) { |
·
Serial.println(myPins[i]); | |
} |
Void
Ключевое слово void используется при объявлении функций, если функция не возвращает никакого значение при ее вызове (в некоторых языках программирования такие функции называют процедурами).
Пример
// в функциях "setup" и "loop" производятся некоторые действия, | |
// но ничего не возвращается во внешнюю программу |
void setup() |
{ | |
//... |
} |
void loop() | |
{ |
//... | |
} |
|
|
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!