Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
theory:data [2020/08/14 11:03] alexniktheory:data [2020/08/14 12:07] (текущий) alexnik
Строка 4: Строка 4:
 ==== Логические константы ==== ==== Логические константы ====
 **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 Вольт. К этому порту можно подключать нагрузку как к земле, как описано выше на примере светодиода.\\
Строка 22: Строка 23:
 ==== Задание режима порта входа/выхода, 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 ==== ==== boolean ====
- \\ +Может принимать одно из двух значений true или false. 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 ====
 Тип данных int (от англ. integer - целое число) один из наиболее часто используемых типов данных для хранения чисел. int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767 (от -2^15 до 2^15-1).\\ Тип данных int (от англ. integer - целое число) один из наиболее часто используемых типов данных для хранения чисел. int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767 (от -2^15 до 2^15-1).\\
 +
 Для размещения отрицательных значений int использует, так называемый, дополнительный код представления числа. Старший бит указывает на отрицательный знак числа, остальные биты инвертируются с добавлением 1.\\ Для размещения отрицательных значений int использует, так называемый, дополнительный код представления числа. Старший бит указывает на отрицательный знак числа, остальные биты инвертируются с добавлением 1.\\
 +
 Arduino компилятор сам заботиться о размещении в памяти и представлении отрицательных чисел, поэтому арифметические действия над целыми числами производятся как обычно.\\ Arduino компилятор сам заботиться о размещении в памяти и представлении отрицательных чисел, поэтому арифметические действия над целыми числами производятся как обычно.\\
 Когда переменная типа int в следствие арифметической операции достигает своего максимального значения, она "перескакивает" на самое минимальное значение и наоборот.\\ Когда переменная типа int в следствие арифметической операции достигает своего максимального значения, она "перескакивает" на самое минимальное значение и наоборот.\\
 +
 ==== unsigned int ==== ==== unsigned int ====
 Тип данных unsigned int - без знаковое целое число, также как и тип int (знаковое) занимает в памяти 2 байта. Но в отличие от int, тип unsigned int может хранить только положительные целые числа в диапазоне от 0 до 65535 (2^16)-1).\\ Тип данных unsigned int - без знаковое целое число, также как и тип int (знаковое) занимает в памяти 2 байта. Но в отличие от int, тип unsigned int может хранить только положительные целые числа в диапазоне от 0 до 65535 (2^16)-1).\\
 Отличие кроется в том как unsigned int использует старший бит, иногда называемый знаковый бит. Если старший бит равен 1, то для типа int компилятор Arduino считает, что это число отрицательное, а остальные 15 bit несут информацию о модуле целого числа в дополнительном коде представления числа, в то время как unsigned int использует все 16 бит для хранения модуля числа.\\ Отличие кроется в том как unsigned int использует старший бит, иногда называемый знаковый бит. Если старший бит равен 1, то для типа int компилятор Arduino считает, что это число отрицательное, а остальные 15 bit несут информацию о модуле целого числа в дополнительном коде представления числа, в то время как unsigned int использует все 16 бит для хранения модуля числа.\\
 +
 ==== long ==== ==== long ====
 Тип данных long используется для хранения целых чисел в расширенном диапазоне от -2,147,483,648 до 2,147,483,647. long занимает 4 байта в памяти.\\ Тип данных long используется для хранения целых чисел в расширенном диапазоне от -2,147,483,648 до 2,147,483,647. long занимает 4 байта в памяти.\\
 ==== unsigned long ==== ==== unsigned long ====
 Unsigned long используется для хранения положительных целых чисел в диапазоне от 0 до 4,294,967,295 (2^32 - 1) и занимает 32 бита (4 байта) в памяти.\\ 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.\\
 +