Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Определение режима работы цифровых выводов, input и outputСодержание книги
Поиск на нашем сайте
Цифровые выводы могут работать как входные INPUT или выходные (OUTPUT). Установка соответствующего режима осущестляется функцие pinMode(). Выводы определены как входные Выводы Arduino (Atmega) сконфигурированные как входные при помощи pinMode() имеют высокое входное сопротивление. Таким образом возможно чтение значения с датчиков. но не питание выводом светодиода. Выводы определены как выходные Выводы, определенные как выходные имеют низкий импеданс. Это значит, что мы можем подавать через вывод большие токи, достаточные для питания устройств/схем.Максимальный ток через выводы Atmega 40 мА. Учтите, что вывод, определенный как выходной, может быть поврежден в случае замыкания на противоположную по уровню шину питания.
Целочислительные константы Обычно, цифровые константы имеют основание 10, однако в некоторых случаях требуется другая система счисления Основание Пример Формат Комментарий 10 (десятичное) 123 нет 2 (двоичное) B1111011 добавляем 'B' работает только с 8-бит значениями(0 до 255), допустимые символы 0 и 1 8 (восьмеричное) 0173 добавляем "0" допустимые символы 0-7 16 (шестнадцатеричное) 0x7B добавляем "0x" допустимые символы 0-9, A-F, a-f
Пример: 101 // равен числу 101 в десятичной системе счисления ((1 * 10^2) + (0 * 10^1) + 1) B101 // равен числу 5 в десятичной системе счисления ((1 * 2^2) + (0 * 2^1) + 1) Двоичный формат работает только для байт (8 бит), от 0 (B0) до 255 (B11111111). Если необходимо обработать в двоичном формате int (16бит) это можно сделать в два шага: myInt = (B11001100 * 256) + B10101010; // B11001100 старший байт 0101 // равен числу 65 в десятичной системе счисления ((1 * 8^2) + (0 * 8^1) + 1)
Внимание: Возможно создание труднонаходимой ошибки, записывая незначащие нули в старших разрядах - компилятор может ошибчно принять ваше число за восьмеричное. 0x101 // равен числу 257 в десятичной системе счисления ((1 * 16^2) + (0 * 16^1) + 1)
U & L форматы По умолчанию, целочислительные константы объявлены как int с соответствующими ограничесниями. Для определения таких константс другим типом данных пользуются следующими форматами записи: 'u' или 'U' определяет константу как положительную (unsigned). Например: 33u 'l' или 'L' определяет костанту в формат long. Пример: 100000L 'ul' или 'UL' определяет константу в формат unsigned long. Пример: 32767ul
Константы с плавающей точкой. Также как и целочислительные константы, константы с плавающей точкой случат для создания более удобочитаемого кода. Пример: n =.005; Константы с плавающей точкой можно указывать в научном виде, используя букву E или e. константа эквивалентна: также эквивалентна: 10.0 10 2.34E5 2.34 * 10^5 234000 67e-12 67.0 * 10^-12.000000000067
Типы данных
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 (i = 0; i < 5; i = i + 1) { Serial.println(myPins[i]); }
|
||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 355; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.200.93 (0.007 с.) |