Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
theory:data [2020/08/12 18:00] alexniktheory:data [2020/08/14 12:07] (текущий) alexnik
Строка 1: Строка 1:
-====== Константы ======+===== Константы =====
 Константами в языке Ардуино называют некоторые предопределенные значения. Они позволяют сделать код программы более легким для восприятия.  Константами в языке Ардуино называют некоторые предопределенные значения. Они позволяют сделать код программы более легким для восприятия. 
  
-===== Логические константы =====+==== Логические константы ====
 **false** (ложь) - определяется как 0, в логическом выражении.\\ **false** (ложь) - определяется как 0, в логическом выражении.\\
-**true** (истина) - обычно говорят, что это 1, но для типа integer любой значение отличное от 0 будет также true в логическом выражении.+**true** (истина) - обычно говорят, что это 1, но для типа integer любой значение отличное от 0 будет также true в логическом выражении.\\
  
-===== Уровень напряжения на выводах, HIGH и LOW =====+==== Уровень напряжения на выводах, HIGH и LOW ====
 При работе с цифровыми выводами существует всего два значения, которые они могут выводить или считывать: HIGH и LOW.\\ При работе с цифровыми выводами существует всего два значения, которые они могут выводить или считывать: HIGH и LOW.\\
 +
 **HIGH**\\ **HIGH**\\
-Значение константы HIGH может отличатся в зависимости от того, в какой режим переключен контакт (INPUT или OUTPUT). Когда порт входа/выхода установлен в режим INPUT с помощью функции pinMode(), и считывается функцией digitalRead(), микроконтроллер отдаст значение HIGH при напряжение 3В или выше на указанном порту.+Значение константы HIGH может отличатся в зависимости от того, в какой режим переключен контакт (INPUT или OUTPUT). Когда порт входа/выхода установлен в режим INPUT с помощью функции pinMode(), и считывается функцией digitalRead(), микроконтроллер отдаст значение HIGH при напряжение 3В или выше на указанном порту.\\
  
-Также порт может быть установлен как INPUT функцией pinMode(), и затем установлен в  HIGH значение функцией digitalWrite(). Это подключит к порту внутренний подтягивающий резистор 20 кОм, что позволит получать постоянное значение HIGH при чтение этого порта, если только значение не будет приведено к LOW внешней цепью подключенной к этому порту.+Также порт может быть установлен как INPUT функцией pinMode(), и затем установлен в  HIGH значение функцией digitalWrite(). Это подключит к порту внутренний подтягивающий резистор 20 кОм, что позволит получать постоянное значение HIGH при чтение этого порта, если только значение не будет приведено к LOW внешней цепью подключенной к этому порту.\\
  
 Когда порт входа/выхода сконфигурирован как OUTPUT функцией pinMode(), и установлено значение HIGH функцией digitalWrite(), на порту будет постоянное напряжение 5В. От этого порта может быть запитан светодиод, подключенный через резистор на землю или к другому порту, сконфигурированному как OUTPUT и установленному в LOW.\\ Когда порт входа/выхода сконфигурирован как OUTPUT функцией pinMode(), и установлено значение HIGH функцией digitalWrite(), на порту будет постоянное напряжение 5В. От этого порта может быть запитан светодиод, подключенный через резистор на землю или к другому порту, сконфигурированному как OUTPUT и установленному в LOW.\\
  
 **LOW**\\ **LOW**\\
-Значение LOW также разное для режима INPUT и OUTPUT. Когда порт сконфигурирован как INPUT, и считывается функцией digitalRead(), микроконтроллер вернет LOW если напряжение на данном порту меньше или равно 2В.+Значение LOW также разное для режима INPUT и OUTPUT. Когда порт сконфигурирован как INPUT, и считывается функцией digitalRead(), микроконтроллер вернет LOW если напряжение на данном порту меньше или равно 2В.\\
  
 Если же порт установлен в OUTPUT и LOW, то напряжение на выходе порта будет 0 Вольт. К этому порту можно подключать нагрузку как к земле, как описано выше на примере светодиода.\\ Если же порт установлен в OUTPUT и LOW, то напряжение на выходе порта будет 0 Вольт. К этому порту можно подключать нагрузку как к земле, как описано выше на примере светодиода.\\
  
-===== Задание режима порта входа/выхода, INPUT и OUTPUT =====+==== Задание режима порта входа/выхода, INPUT и OUTPUT ====
 Цифровые порты входа/выхода, могут быть установлены в режимы работы как вход или выход: INPUT или OUTPUT. Установка производится функцией pinMode().\\ Цифровые порты входа/выхода, могут быть установлены в режимы работы как вход или выход: INPUT или OUTPUT. Установка производится функцией pinMode().\\
 +
 **INPUT**\\ **INPUT**\\
 Порты Контроллера установленные в режим INPUT находятся в высокоимпедансном состоянии. Это означает, что порт ввода дает слишком малую нагрузки на схему, в которую он включен. Эквивалентом внутреннему сопротивлению будет резистор 100 МОм подключенный к выводу микросхемы. Таким образом, для перевода порта ввода из одного состояния в другое требуется маленькое значение тока. Это позволяет применять выводы микросхемы для подключения различных датчиков, но не питания.\\ Порты Контроллера установленные в режим INPUT находятся в высокоимпедансном состоянии. Это означает, что порт ввода дает слишком малую нагрузки на схему, в которую он включен. Эквивалентом внутреннему сопротивлению будет резистор 100 МОм подключенный к выводу микросхемы. Таким образом, для перевода порта ввода из одного состояния в другое требуется маленькое значение тока. Это позволяет применять выводы микросхемы для подключения различных датчиков, но не питания.\\
 +
 **OUTPUT**\\ **OUTPUT**\\
-Порт установленный в режим выхода — OUTPUT, находится в низкоимпедансном состоянии. Он может пропускать через себя довольно большой ток, до 40 mA, достаточный для запитывания внешней цепи, например, светодиода. В этом состоянии порт может быть поврежден, как при замыкании на землю так и на питание 5В. Тока с порта микроконтроллера не достаточно  для питания моторов и сервоприводов напрямую. +Порт установленный в режим выхода — OUTPUT, находится в низкоимпедансном состоянии. Он может пропускать через себя довольно большой ток, до 40 mA, достаточный для запитывания внешней цепи, например, светодиода. В этом состоянии порт может быть поврежден, как при замыкании на землю так и на питание 5В. Тока с порта микроконтроллера не достаточно  для питания моторов и сервоприводов напрямую. \\ 
 + 
 +===== Типы данных ===== 
 +Тип определяет возможные значения и их смысл, операции, а также способы хранения значений типа.\\ 
 + 
 +==== boolean ==== 
 +Может принимать одно из двух значений true или false. boolean занимает в памяти один байт.\\ 
 + 
 +==== char ==== 
 +Переменная типа char занимает 1 байт памяти и может хранить один алфавитно-цифровой символ (литеру). При объявление литеры используются одиночные кавычки: 'A' (двойные кавычки используется при объявлении строки символов - тип string: "ABC").\\ 
 + 
 +Символ хранится в памяти как число, соответствующее коду символа в таблице кодировки символов ASCII. Т.к. символ хранится как число в памяти над ним возможно производить арифметические действия (например, 'A' + 1 будет 66, т.к. ASCII код для 'A' - 65).\\ 
 + 
 +Тип char знаковый тип, т.е. число (код) хранящийся в памяти может принимать значения от -128 до 127. Если необходима беззнаковая однобайтовая переменная, используйте тип byte.\\ 
 + 
 +==== byte ==== 
 +Тип данных byte 8-ми битное беззнаковое целое число, в диапазоне 0..255.\\ 
 + 
 +==== int ==== 
 +Тип данных int (от англ. integer - целое число) один из наиболее часто используемых типов данных для хранения чисел. int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767 (от -2^15 до 2^15-1).\\ 
 + 
 +Для размещения отрицательных значений int использует, так называемый, дополнительный код представления числа. Старший бит указывает на отрицательный знак числа, остальные биты инвертируются с добавлением 1.\\ 
 + 
 +Arduino компилятор сам заботиться о размещении в памяти и представлении отрицательных чисел, поэтому арифметические действия над целыми числами производятся как обычно.\\ 
 +Когда переменная типа int в следствие арифметической операции достигает своего максимального значения, она "перескакивает" на самое минимальное значение и наоборот.\\ 
 + 
 +==== unsigned int ==== 
 +Тип данных unsigned int - без знаковое целое число, также как и тип int (знаковое) занимает в памяти 2 байта. Но в отличие от int, тип unsigned int может хранить только положительные целые числа в диапазоне от 0 до 65535 (2^16)-1).\\ 
 +Отличие кроется в том как unsigned int использует старший бит, иногда называемый знаковый бит. Если старший бит равен 1, то для типа int компилятор Arduino считает, что это число отрицательное, а остальные 15 bit несут информацию о модуле целого числа в дополнительном коде представления числа, в то время как unsigned int использует все 16 бит для хранения модуля числа.\\ 
 + 
 +==== long ==== 
 +Тип данных long используется для хранения целых чисел в расширенном диапазоне от -2,147,483,648 до 2,147,483,647. long занимает 4 байта в памяти.\\ 
 +==== unsigned long ==== 
 +Unsigned long используется для хранения положительных целых чисел в диапазоне от 0 до 4,294,967,295 (2^32 - 1) и занимает 32 бита (4 байта) в памяти.\\ 
 + 
 +==== float ==== 
 +Тип данных float служит для хранения чисел с плавающей запятой. Этот тип часто используется для операций с данными, считываемыми с аналоговых входов. Диапазон значений — от -3.4028235E+38 до 3.4028235E+38. Переменная типа float занимает 32 бита (4 байта) в памяти.\\ 
 + 
 +Тип float имеет точность 6-7 знаков, имеются ввиду все знаки, а не только мантисса. Обычно для увеличения точности используют другой тип - double, но на платформе Arduino, double и float имеют одинаковую точность.\\ 
 + 
 +Хранение в памяти чисел с плавающей точкой в двоичной системе обуславливает потерю точности. Так, например, 6.0 / 3.0 не обязательно равен 2.0. Сравнивая два числа с плавающей точкой следует проверять не точное равенство, а разницу между этими числами, меньше ли она некого выбранной малого порога.\\ 
 + 
 +Следует также учитывать, что арифметические операции над числами с плавающей запятой выполняются существенно медленнее, чем над целыми.\\ 
 + 
 +==== double ==== 
 +Тип данных double, в отличие от большинства языков программирования, имеет ту же точность, что и тип float и занимает также 4 байта памяти.\\ 
 + 
 +Тип double поддерживается в Arduino для совместимости кода с другими платформами.\\ 
 + 
 +==== word ==== 
 +Тип данных word хранит 16-битное, не содержащее знака, число от 0 до 65535. Тоже самое, что unsigned int — (беззнаковое целое число).\\ 
 + 
 +==== array ==== 
 +Массивы (arrays) — именованный набор однотипных переменных, с доступом к отдельным элементам по их индексу.\\ 
 + 
 +==== string ==== 
 +Текстовые строки в Ардуино объявляются как массив (array) типа char (символов - литер), оканчивающийся символом "конца строки".\\ 
 + 
 +==== String ==== 
 +String класс появился в версии Arduino 0019. Этот класс позволяет хранить и манипулировать текстовыми строками, по сравнению с string (массивом символов) класс String предоставляет удобные функции для работы со строками, такие как поиск вхождения в строку, объединение строк и др. Класс String занимает несколько больше места в памяти, чем массив символов string.\\ 
 + 
 +Обратите внимание при обращение к классу String — он пишется с заглавной S. Массив символов string — с прописной s. Строковые константы, записанные в "двойных кавычка" интерпретируются компилятором как массив символов, а не объект класса String.\\