Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Дисциплины:
|
из
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() | |
| { | |
| //... | |
| } | |
|
|
|
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!