Tor сокр. T he O nion R outer [13] — свободное и открытое программное обеспечение для реализации второго V2 и третьего V3 поколения так называемой луковой маршрутизации [14]. Это система прокси-серверовпозволяющая устанавливать анонимное сетевое соединениезащищённое от прослушивания. Рассматривается как анонимная сеть виртуальных туннелей, предоставляющая передачу данных в зашифрованном виде [15].
Опосля дизайна заказа в филиал в Пошты в вашем Ваш телефон приходит компании Нова Пошта. После дизайна заказа на склад Новой с Вами и уточняет какой склад компании Нова Пошта с уведомлением о поступлении заказа. В преддверии Дня доставки 30 грн.
Все другие усилия будут ориентированы на разработку и отладку управляющей программы на языке высочайшего уровня. В итоге доступ к разработке микропроцессорных устройств получили не лишь профес- сионалы, но и просто любители что-то сделать своими руками. Наличие готовых модулей и библиотек программ дозволяет непрофессионалам в электронике созда- вать готовые работающие устройства для решения собственных задач.
А варианты исполь- зования Ardumo ограничены лишь способностями микроконтроллера и имеюще- гося варианта платы, ну и, естественно, фантазией разраба. Его основной задачей было продвижение новейших методов раз- работки интерактивных проектов. Но крошечный бюджет и ограниченное вре- мя доступа к лабораторной базе сводили его усилия фактически на нет. BASIC Stamp имел две проблемы: недочет вычислительной мощности и довольно высшую стоимость — плата с основными компонентами стоила около баксов.
И команда Банци решила без помощи других создать плату, которая удовлетворя- ла бы всем их потребностям. При этом Банци и его сотрудники поставили для себя целью сделать устройство, представляющее собой простую, открытую и легкодос- тупную платформу для разработки, с ценой — не наиболее 30 баксов — применимой для студенческого кармашка. Желали они и выделить кое-чем свое устройство на фоне иных. Потому в противовес остальным производителям, экономящим на количестве выводов печатной платы, они решили добавить их как можно больше, а также сде- лали свою плату голубой, в отличие от обыденных зеленоватых плат.
Получившийся симбиоз предоставляет большие способности для использования Веба в собственных проектах. Разглядим наиболее тщательно некие из этих плат. Arduino Uno Плата Arduino Uno рис. Таблица 2. Arduino Nano Плата Nano рис. Источник с самым высочайшим напряжением выбирается автома- тически. Свойства платы Arduino Nano представлены в табл.
Arduino — общий обзор Таблица 2. Платы семейства Arduino и платы расширения для их 23 Таблица 2. Arduino Mega Плата Arduino Mega рис. Платы семейства Arduino и платы расширения для их 25 Таблица 2. Arduino Leonardo Плата Arduino Leonardo рис. Свойства платы Arduino Leonardo представлены в табл.
Плата Arduino Leonardo 26 Часть I. Arduino Due Arduino Due рис. Плата Arduino Due Глава 2. Платы семейства Arduino и платы расширения для их 27 Свойства платы Arduino Due представлены в табл. Arduino Yun Arduino Yun рис. Linux-часть платы Arduino Yun употребляет микрокомпьютер Atheros AR, ра- ботающий под управлением операционной системы Linino— специально подго- товленной версии OpenWRT популярного дистрибутива Linux для встраиваемых систем.
Linino содержит в для себя пакетный менеджер opkg, который дозволяет устанавливать огромное количество Linux-приложений, а также интерпретатор языка Python 2. Arduino — общий обзор Рис. Платы расширения для Arduino Огромную популярность плата Arduino заполучила не лишь из-за низкой стоимости, легкости разработки и программирования, но основным образом благодаря наличию плат расширения так именуемых шилдов , добавляющих Arduino доп функциональность.
Шилды не считая малеханьких модулей и платы LilyPad подклю- чаются к Arduino с помощью имеющихся на их штыревых разъемов рис. Существует множество разных по функциональности шилдов— от простей- ших, предназначенных для макетирования, до сложных, представляющих собой отдельные функциональные устройства. Модульная структура установки плат расширения для Arduino Рис. Ethernet Shield 30 Часть I. ХВее Shield Рис.
MicroSD Shield Глава 2. Платы семейства Arduino и платы расширения для их 31 Рис. МРЗ Shield Рис. Количество плат расширения шилдов повсевременно растет. Пасмурная среда разработки Arduino Create Глава 5. Среда пред- назначена для написания, компиляции и загрузки собственных программ в память микроконтроллера, установленного на плате Arduino-совместимого устройства.
Последнюю версию среды Arduino 1. Примечание В главе 4 вашему вниманию представлена новенькая пасмурная среда разработки Arduino Create. Он зани- мает чуток наиболее 80 Мбайт и содержит все нужное, в том числе и драйверы. По окончании загрузки распаковываем скачанный файл в комфортное для себя место. Сейчас нужно установить драйверы.
Подключаем плату Arduino к компьюте- ру. На ней должен загореться индикатор питания — зеленоватый светодиод. Windows начинает попытку установки драйвера, которая заканчивается сообщением: Про- граммное обеспечение драйвера не было установлено.
Открываем Диспетчер устройств. В составе устройств находим значок Arduino Uno — устройство отмечено восклицательным знаком. Щелкаем правой клавишей мыши на значке Arduino Uno и в открывшемся окне избираем пункт Обновить драйверы и дальше пункт Выполнить поиск драйверов на этом компе. Среды разработки и программирование плат Arduino зываем путь к драйверу — ту папку на компе, куда распаковывали скачанный архив.
Пусть это будет папка drivers каталога установки Arduino. Игнорируем все предупреждения Windows и получаем в итоге сообщение: Обновление про- граммного обеспечения для данного устройства завершено удачно. В заго- ловке окна будет указан и СОМ-порт, на который установлено устройство. Осталось установить и запустить среду разработки Arduino IDE.
Страничка загрузки официального веб-сайта Arduino 3. В перечне разделов избираем Инструменты разраба, в перечне последующего уровня — Все приложения и в последующем открывшемся списке— Arduino IDE рис. Щелкаем левой клавишей мыши на значке данной нам программы, справа от нее возникает клавиша Установить, жмем на эту кноп- ку, и среда устанавливается автоматом. Глава 3. Выбор программы из центра приложений Ubuntu 3. Программа, написанная в среде Arduino, носит заглавие скетч.
Скетч пишется в текстовом редакторе, который имеет цветовую подсветку создаваемого про- граммного кода. Во время сохранения и экспорта проекта в области сообщений по- являются пояснения и информация о ошибках. Окно вывода текста указывает сообщения Arduino, включающие полные отчеты о ошибках и другую информа- цию.
Клавиши панели инструментов разрешают проверить и записать програмку, сделать, открыть и сохранить скетч, открыть мониторинг поочередной шины. Разрабатываемым скетчам доборная функциональность может быть добав- елена с помощью библиотек, представляющих собой особым образом оформ- ленный программный код, реализующий некий функционал, который можно подключить к создаваемому проекту. Специализированных библиотек существует множество.
Традиционно библиотеки пишутся так, чтоб упростить решение той либо другой задачки и скрыть от разраба детали программно-аппаратной реализации. Они находятся в подкаталоге libraries каталога установки Часть II. Среды разработки и программирование плат Arduino l? Arduino IDE — среда разработки Arduino. Нужные библиотеки могут быть также загружены с разных ресурсов см. Папка загруженной библиотеки копируется в каталог стан- дартных библиотек подкаталог libraries каталога установки Arduino.
Почти все библиотеки снабжа- ются примерами, расположенными в папке examples каталога установки Arduino. Ежели библиотека установлена верно, то она возникает в меню Скетч Import Library. Среда Arduino будет компилировать создаваемый проект вкупе с указанной библиотекой.
Электронный архив Нужные для работы с проектами книжки подгружаемые библиотеки расположены в каталоге libraries провождающего книжку электронного архива см. Перед загрузкой скетча требуется задать нужные параметры: в меню Сервис Плата Tools Board выбрать используемую плату рис.
Современные платы Arduino перед загрузкой перезагружаются автоматом. На старенькых платах нужно надавить клавишу перезагрузки. На большинстве плат во время процесса загрузки будут мигать светодиоды RX и ТХ. При загрузке скетча употребляется загрузчик bootloader Arduino — маленькая про- грамма, загружаемая в микроконтроллер на плате. Она дозволяет загружать про- граммный код без использования доп аппаратных средств.
Работа загрузчика распознается по миганию светодиода на цифровом выводе D Монитор поочередного порта Serial Monitor показывает данные, посылаемые в плату Arduino порт USB либо порт поочередной шины. Предварительно следует из выпадающего перечня выбрать скорость передачи, подобающую значению serial. На ОС Мае либо Linux при подключении мониторинга поочередной шины плата Arduino будет перезагружена скетч начнется поначалу.
Как пишут сами создатели платформы: «Это принципиальный шаг в экосистеме Arduino, и мы надеемся поменять метод взаимодействия с вашими проектами и сообществом». Arduino Create соединяет в для себя новейший Arduino Web Editor пасмурный редактор Arduino , инструменты для скорого старта, доступ к Arduino-магазину и форуму, а также Project Hub, базирующийся на ресурсе Hackster.
Основная мысль новейшей платформы в том, что разраб сейчас имеет возможность писать код и загружать скетчи к хоть какой плате Arduino конкретно из браузера с помощью Arduino Web Editor— без необходимости что-либо устанавливать на собственный комп. При использовании новейшей платформы Sketchbook будет храниться в облаке Arduino и станет доступен с хоть какого устройства.
Способности Arduino Create покрывают фактически всю область разработки: вы можете создавать код прямо у себя в браузере и отправлять его на свою плату Arduino, читать документацию и описание наилучших методов работы с Arduino, разговаривать с сотрудниками, изучить проекты остальных разрабов. Поначалу там нужно зарегистрироваться. Активация профиля осущест- вляется при переходе по ссылке в письме, пришедшем на указанную вами почту. Войдя в профиль, мы можем работать на веб-сайте.
Избираем пункт Arduino Web Editor. Для предстоящей работы нужно установить плагин рис. Этот плагин дозволит портам вашего компа разговаривать с веб-редактором в браузере, загружать скетчи из браузера в платы, присоединенные к USB либо к сети, использо- вать остальные пасмурные сервисы.
Среды разработки и программирование плат Arduino Рис. Стартовая страничка сервиса Arduino Create Рис. Форма регистрации сервиса Arduino Create Глава 4. Пасмурная среда разработки Arduino Create 43 жтснес pv л;?? Форма загрузки плагина сервиса Arduino Create Опосля установки плагина рис. Не забываем также выбрать тип платы Arduino и порт подключения рис. Завершена установка ardiiino-creete-agent на ваш комп.
Плагин arduino-create-agent установлен 44 Часть II. Загрузка примера BIynk в плату Arduino Рис. Базисные познания 5. Цифровые выводы Выводы плат Arduino могут работать и как входы, и как выходы. Выводы Arduino настроены как порты ввода, потому для их не требуется декла- рации в функции pinMode. Сконфигурированные порты ввода находятся в высо- коимпедансном состоянии. Это значит, что порт ввода дает очень малую нагрузку на схему, в которую он включен. Для перевода порта ввода из 1-го состояния в другое нужно маленькое значение тока.
Ежели к выводу ничего не под- ключено, то значения на нем будут принимать случайные величины, наводимые электрическими помехами. Потому ежели на порт ввода не поступает сигнал, то рекомендуется задать порту какое-либо известное состояние. Микроконтроллер ATmega имеет программируемые интегрированные подтягивающие резисторы 20 кОм.
Эти выводы могут пропускать через себя очень большой ток. Так, вы- воды микросхемы ATmega могут быть источником тока до 40 мА, но такового значения тока все же недостаточно для большинства реле, соленоидов и двига- телей. Среды разработки и программирование плат Arduino Недлинные замыкания выводов Arduino либо пробы подключить энергоемкие уст- ройства могут разрушить выходные транзисторы вывода либо весь микроконтроллер ATmega.
Разрешение преобразователя составляет 10 битов, что дозволяет на выходе получать значения от 0 до В этом случае рекомендуется сконфигурировать его как аналоговый вход. Широтно-импульсная модуляция Широтно-импульсная модуляция ШИМ — это операция получения изменяюще- гося аналогового значения средством цифровых устройств. Подавая на выход сигнал, состоящий из больших и низких уровней, мы моделируем напряжение меж наибольшим значением 5 В и наименьшим 0 В.
Продолжительность включения наибольшего значения именуется шириной импульса. Для получения разных аналоговых величин ширину импульса изменяют. В итоге на выходе будет получена величина напряжения, равная площади под импульсами рис. ОЗУ представляет собой энергозависимую память. Глава 5. Программирование плат Arduino 47 1 ш—т ттт а. При отсутствии вольного места в ОЗУ могут произойти сбои программы. Функции setupQ и 1оор Базисная структура программы для Arduino состоит, по наименьшей мере, из 2-ух обя- зательных частей: функций setup и loop.
Перед функцией setup идет объяв- ление переменных, подключение библиотек. Функция setup запускается один раз опосля каждого включения питания либо сброса платы Arduino. Она употребляется для инициализации переменных, установки режима работы портов и иных подгото- вительных для основного цикла программы действий.
Функция setup обязатель- но обязана быть включена в програмку, даже ежели не выполняет никаких действий. Функция loop в нескончаемом цикле выполняет основную работу программы — поочередно исполняет команды, которые описаны в ее теле.
Пример простейшей программы представлен в листинге 5. Синтаксис и операторы 5. Управляющие операторы 5. Он инспектирует, достигнута ли истинность условия — к примеру, превосходит ли входное значение данное число. Ежели да, то выполняются определенные деяния. Говоря по другому, ежели выражение в круг- лых скобках истинно, выполняются операторы снутри фигурных скобок. Ежели нет, программа пропускает этот код.
Выражения, которые рассчитываются снутри круглых скобок, могут состоять из одно- го либо пары операторов. Оператор if. Любая проверка дозволяет перебегать к последующему за ней оператору не ранее, чем получит логический итог истина. Когда проверка с результатом истина найдена, за- пускается вложенный в нее блок операторов, и потом программа игнорирует все последующие строчки в конструкции if..
Ежели ни одна из проверок не получила итог истина, по умолчанию выполняется блок операторов в else, ежели по- 50 Часть II. Среды разработки и программирование плат Arduino следний находится, и устанавливается действие по умолчанию. Конструкция else..
Допускается неограниченное число таковых переходов else Оператор for Конструкция for служит для повторения блока операторов, заключенных в фигур- ные скобки. Она имеет счетчик приращений, традиционно использующийся для опреде- ления количества повторений и завершения цикла. Каждый раз в цикле проверяется условие condition , и ежели оно правильно, выполняется блок опе- раторов и приращение increment , потом условие проверяется вновь. Когда логиче- ское значение условия становится ложным, цикл завершается.
В листинге 5. Оператор switch Конструкция switch.. Оператор switch ассоциирует значение переменной со значением, определенном в операторах case. Когда найден оператор case, значение которого равно значению переменной, выполняется программный код, записанный в этом операторе. Ключевое слово break является командой выхода из оператора case и традиционно употребляется в конце каждого case.
Без оператора break оператор switch будет продолжать вычислять последующие выражения, пока не достигнет break либо конца оператора switch. Синтаксис команды switch.. Оператор while Оператор while будет вычислять в цикле безпрерывно и нескончаемо до тех пор, по- ка выражение в круглых скобках не станет равно логическому ложно.
Что-то обязано изменять значение проверяемой переменной, по другому выход из цикла while никогда не будет достигнут. Это изменение может происходить как в программном коде, к примеру, при увеличении переменной, так и во наружных критериях, напри- мер, при тестировании датчика.
Среды разработки и программирование плат Arduino Пример использования оператора while представлен в листинге 5. Таковым образом, цикл do будет постоянно выполняться хотя бы один раз. Пример использования оператора do Оператор break Оператор break употребляется для принудительного выхода из циклов do, for либо while, не дожидаясь завершения цикла по условию.
Он также применяется для выхода из оператора switch. Пример приведен в листинге 5. Оператор continue Оператор continue пропускает оставшиеся операторы в текущем шаге цикла. Заместо их выполняется проверка условного выражения цикла, которая происхо- дит при каждой последующей итерации.
Оператор return Оператор return прекращает вычисления в функции и возвращает значение из пре- рванной функции в вызывающую, ежели это необходимо. Пример возврата значения из функции в зависимости от значения на входе аналогового входа представлен в лис- тинге 5. Синтаксис 5. Это условие понятно как парность симметричность фигурных скобок.
Они игнорируются компилятором и не занимают место в памяти микроконтроллера. Арифметические операторы 5. Ежели оно выходит за спектр допустимых значений, то сохраненное значение будет не правильно. Также нужно смотреть за тем, чтоб итог не вышел за спектр до- пустимых значений для используемого типа данных.
Так, к примеру, сложение 1 с переменной типа int и значением 32 возвратит Ежели операнды име- ют различные типы, то для вычислений будет применен тип с наиболее «широким» спектром. Ежели один из операндов имеет тип float либо double, то для вычисле- ний будет применена математика «с плавающей запятой». Логические операторы Логические операторы почаще всего употребляются в проверке условия оператора if. Среды разработки и программирование плат Arduino 5. Пример: if!
Унарные операторы 5. Данные 5. Разглядим типы данных наиболее тщательно. Может принимать одно из 2-ух зна- чений: true либо false. Данные типа boolean занимают в памяти один б При объявлении литеры употребляются одиночные кавычки: fAf двойные кавычки употребляются при объявлении строчки знаков — ТИП string: "ABC". ASCII код для f а1 — Тип char знаковый тип, т. Ежели нужна знаковая однобайтовая переменная, ис- пользуйте тип byte.
Имеет спектр от О до Int Тип данных int от англ. Для размещения отрицательных значений int употребляет так именуемый допол- нительный код представления числа. Старший бит показывает на отрицательный символ числа, другие биты инвертируются с добавлением 1. Arduino-компилятор сам хлопочет о размещении в памяти и представлении отри- цательных чисел, потому арифметические деяния над целыми числами произво- дятся как традиционно.
Когда переменная типа int вследствие арифметической операции добивается собственного наибольшего значения, она «перескакивает» на самое малое значение и напротив листинг 5. Но, в отличие от int, тип unsigned int может хра- нить лишь положительные целые числа в спектре от 0 до 65 Отличие кроется в том, как unsigned int употребляет старший бит, время от времени называе- мый знаковым битом. Ежели старший бит равен 1, то для типа int компилятор Arduino считает, что это число отрицательное, а другие 15 битов несут инфор- мацию о модуле целого числа в доп коде представления числа, в то время как unsigned int употребляет все 16 битов для хранения модуля числа.
Когда переменная типа unsigned int вследствие арифметической операции дости- гает собственного наибольшего значения, она «перескакивает» на самое малое значение и напротив листинг 5. Пример вывода в мил- лисекундах мс с начала выполнения программы приведен в листинге 5. Этот тип нередко употребляется для операций с данными, считываемыми с аналоговых входов. Переменная типа float зани- мает 32 бита 4 б в памяти.
Тип float имеет точность символов имеются в виду все знаки, а не лишь ман- тисса. Традиционно для роста точности употребляют иной тип — double, но на платформе Arduino double и float имеют схожую точность. Тип double поддерживается в Arduino для сопоставимости кода с иными платфор- мами. Это дозволяет функциям таковым как serial. В неприятном случае могут считаться байты памяти, не принадлежащие переменной.
Массив знаков, выделяемый под строчку, должен иметь один доп элемент для знака конца строчки. Ежели объявить строчку без знака окончания строчки, то это приведет к неправильной работе функций, оперирующих строчками. Строчки постоянно объявляются снутри двойных кавычек: "Abe". При работе с большими размерами текстовой инфы бывает комфортно использо- вать массивы строк. Так как строчки сами по для себя массивы, массив строк будет дву- мерным массивом. В примере, приведенном в листинге 5.
Это нужно для задания двумерного массива. Массивы Массивы arrays — именованный набор однотипных переменных с доступом к отдельным элементам по их индексу. Константы Константы — предопределенные значения. Они употребляются, чтоб делать про- гр наиболее легкими для чтения. Потому -1, 2 и — это все тоже определяется как true. Среды разработки и программирование плат Arduino Цифровые порты могут употребляться на ввод либо вывод сигналов.
Переменные Переменные — это метод называть и хранить числовые значения для последую- щего использования програмкой. Переменные представляют собой значения, кото- рые могут поочередно изменяться, в отличие от констант, чье значение никогда не изменяется. Переменные необходимо декларировать объявлять. Последующий код заявляет переменную inputvariabie, а потом присваивает ей значение, приобретенное от 2-го. Объявление переменных Все переменные должны быть задекларированы до того, как они могут использо- ваться.
Объявление переменной значит определение типа ее значения: int, long, float и т. Все это следует делать лишь один раз в програм- ме, но значение может изменяться в хоть какое время при использовании арифметических либо остальных различных операций. Последующий пример указывает, что объявленная переменная inputvariabie имеет тип int, и ее изначальное значение равно нулю.
Это именуется обычным присваива- нием. Границы переменных Переменные могут быть объявлены в начале программы перед void setup , ло- кально снутри функций и время от времени в блоке выражений, таком как цикл for. Место, где объявлена переменная, описывает ее границы область видимости , т.
Такие переменные декларируются в начале программы перед функцией setup. Они видимы и могут употребляться лишь снутри функции, в кото- рой объявлены. Таковым образом, могут существовать несколько переменных с схожими именами в различных частях одной программы, которые содержат различные значения.
Уверенность, что лишь одна функция имеет доступ к ее переменной, упрощает програмку и уменьшает потенциальную опасность воз- никновения ошибок. Преобразование типов данных 5. Синтаксис: char x ; где х — переменная хоть какого типа. Синтаксис: byte x ; где х — переменная хоть какого типа. Синтаксис: int x ; где х — переменная хоть какого типа. Синтаксис: long x ; где х — переменная хоть какого типа.
Функции 5. Одно из 2-ух значений: input либо output устанавливает на вход либо выход соответственно. Программирование плат Arduino стор 20 кОм. Подача low в свою очередь отключает этот резистор. Нагрузочного резистора довольно, чтоб светодиод, присоединенный к входу, светил тускло. Пример представлен в листинге 5. Функция digitalReadQ Функция считывает значение с данного входа: high либо low. Обращение к ним идет по номерам от 14 для аналогового входа 0 до 19 для аналогового входа 5.
Функция analogReadf Функция считывает значение с указанного аналогового входа. Напряжение, поданное на аналоговый вход традиционно от 0 до 5 вольт , будет преобразовано в значение от О до — это шага с разрешением 0, вольт. Разброс напряжения и шаг может быть изменен функцией analogRef erence о.
Считывание значения с аналого- вого входа занимает приблизительно микросекунд 0, сек , т. Синтаксис: analogRead pin ; Параметр: pin — номер порта аналогового входа, с которого будет производиться считывание: Возвращаемое значение int 0 to Замечание Ежели аналоговый вход не подключен, то значения, возвращаемые функцией analogRead , могут принимать случайные значения. Функция analogReferenceO Функция описывает опорное напряжение, относительно которого происходят ана- логовые измерения.
Функция analogRead о возвращает значение с разрешением 8 битов пропорционально входному напряжению на аналоговом входе и в зависимости от опорного напряжения. Синтаксис: analogReference type ; Параметр: type — описывает используемое опорное напряжение default, internal либо external.
Рекомендуемой настройкой для вывода AREF является external. При этом про- исходит отключение обоих внутренних источников, и наружное напряжение будет являться опорным для АЦП. Функция может быть полезна для управления яркостью присоединенного светодиода либо скоростью вращения электродвигателя. Частота ШИМ-сигнала приблизительно Гц.
На наиболее ранешних версиях плат Arduino analogWrite ра- ботает лишь на портах 9, 10 и Функция analogWrite никак не связана с аналоговыми вхо- дами И С функцией analogRead. Это соединено с тем, что таймер для этих выходов также задействован функциями millis о и delay.
Таковой эффект наиболее приметен при установке маленьких периодов ШИМ- сигнала Пример задания яркости светодиода пропорционально значению, снимаемому с потенциометра, представлен в листинге 5. Программирование плат Arduino 69 5. Продолжительность может быть задана парамет- ром, в неприятном случае сигнал генерируется до тех пор, пока не будет вызвана функция потопе. Воспроизводиться сразу может лишь один сигнал. Ежели сигнал уже вос- делается на одном порту, то вызов tone с номером другого порта в качестве параметра ни к чему не приведет, ежели же tone будет вызвана с тем же номером порта, то будет установлена новенькая частота сигнала.
Ежели сигнал не генерировался, то вызов потопе о ни к чему не приводит. Замечание Ежели нужны сигналы на различных портах, то следует поначалу приостановить один сигнал функцией потопе , а только потом создавать новейший сигнал на другом порту функцией Топе. Вывод может осуществляться как с первого левого , так и с крайнего правого бита. JW Часть II. Среды разработки и программирование плат Arduino Таковой метод передачи данных именуется поочередным протоколом с син- хронизацией.
Он нередко употребляется для взаимодействия микроконтроллеров с дат- чиками и детекторами, а также иными микроконтроллерами. Поочередная передача с синхронизацией дозволяет устройствам связываться на наибольшей скорости. Смотрите также документацию на англ. Замечание Порт вывода dataPin и синхронизирующий порт clockPin должны быть предвари- тельно сконфигурированы как порты вывода с помощью функции pinMode. Текущая реализация функции shiftout О может выводить лишь один б 8 би- тов инфы, потому нужно произвести несколько действий, чтоб вывести значения больше Пример вывода приведен в листинге 5.
Функция pulseln Считывает длину сигнала на данном порту high либо low. К примеру, ежели задано считывание high функцией puisein , функция ждет, пока на данном порту не покажется high. Функция puiseino возвращает длину сиг- нала в микросекундах. Функция возвращает 0, ежели в течение данного времени тайм-аута не был зафиксирован сигнал на порту. Возможны некие погрешности в измерении длинноватых сигналов.
Функция мо- жет измерять сигналы длиной от 10 микросекунд до 3 минут. Возвращаемые значения: длина сигнала в микросекундах либо 0, ежели сигнал не получен до истечения тайм-аута тип unsigned long. Пример использования функции представлен в листинге 5. Работа со временем 5. Функция millisQ Возвращает количество миллисекунд с момента начала выполнения текущей про- гр на плате Arduino. Это количество сбрасывается на ноль вследствие пере- полнения значения приблизительно через 50 дней.
Характеристик нет. Возвращаемое значение — количество миллисекунд с момента начала выполнения Программы ТИП unsigned long. Пример использования функции представлен в листинге 5, Функция microsQ Возвращает количество микросекунд с момента начала выполнения на плате Arduino текущей программы. Значение переполняется и сбрасывается на ноль при- близительно через 70 минут. На платах с 8 МГц Arduino Lilypad разрешение функции — 8 секунд.
Возвращаемое значение — количество микросекунд с момента начала выполнения программы unsigned long. Функция delayQ Останавливает выполнение программы на данное в параметре количество милли- секунд миллисекунд в 1 секунде. Синтаксис: delay ms ; Параметр: ms — количество миллисекунд, на которое приостанавливается выпол- нение программы ТИП unsigned long. В ка- честве альтернативного подхода может быть контролирование времени выполнения тех либо других функций с помощью minis о. При использовании функции delay о работа прерываний не останавливается, длится запись поочередно serial передаваемых данных на RX-порту, ШИМ-сигнал anaiogwrite на портах продолжает генерироваться.
Функция delayMicrosecondsQ Останавливает выполнение программы на данное в параметре количество микро- секунд 1 микросекунд в 1 секунде. В имеющихся версиях Arduino наибольшая пауза, воспроизводимая коррект- но,— 16 Может быть, это будет изменено в последующих версиях Arduino. Для остановки выполнения программы наиболее чем на несколько тыщ микросекунд рекомендуется применять функцию delay. Синтаксис: delayMicroseconds us ; Параметр: us — количество микросекунд, на которое приостанавливается выпол- нение Программы unsigned int.
Функция min x,yx Возвращает меньшее из 2-ух значений. Возвращаемое значение — возвращает наименьшее из 2-ух сравниваемых значений. Функция тах х, у Возвращает большее из 2-ух значений. Возвращаемое значение — возвращает большее из 2-ух сравниваемых значений. Функцией min ограничивают верхнюю границу переменной.
В силу специфичности реализации функции max о следует избегать использования остальных функций в качестве характеристик. Параметр: х — число. Функция constrainfx, a, b Функция инспектирует и, ежели нужно, задает новое значение так, чтоб оно было в об- ласти допустимых значений, данной параметрами. Функция map value, fromLow, fromHigh, toLow, toHigh Функция пропорционально переносит значение value из текущего спектра зна- чений fromLow Функция тар не ограничивает значение рамками спектра, как это делает функ- ция constraint.
Функция constrain о может быть применена до либо опосля вызова шар , ежели нужно ограничить допустимые значения данным диапа- зоном. Обратите внимание, что «нижняя граница» может быть как меньше, так и больше «верхней границы».
При пропорциональном переносе дробная часть не округляется по правилам, а просто отбрасывается. Возвращаемое значение — значение в новеньком спектре. Функция powfbase, exponent Вычисляет значение, возведенное в заданную степень. Функция pow может воз- водить и в дробную степень. Возвращаемое значение — итог возведения в степень, число тип double. Функция sq x Функция возвращает квадрат числа, данного параметром.
Параметр: х — число, хоть какой тип. Возвращаемое значение — квадрат числа. Функция sqrt x Функция вычисляет квадратный корень числа, данного параметром. Параметры: х — число, хоть какой тип. Возвращаемое значение — квадратный корень числа тип double. Функция sin rad Возвращает синус угла, данного в радианах в передаваемом параметре.
Итог функции постоянно в спектре Параметр: rad — угол в радианах float. Возвращаемое значение: синус угла тип double. Функция cos rad Возвращает косинус угла, данного в радианах в передаваемом параметре. Резуль- тат функции постоянно находится в спектре Параметр: rad — угол в радианах тип float.
Возвращаемое значение: косинус угла тип double. Функция tan rad Возвращает тангенс угла, данного в радианах в передаваемом параметре. Резуль- тат функции в спектре от минус бесконечности до плюс бесконечности.
Возвращаемое значение: тангенс угла тип double. Функция randomSeed seed Функция randomSeed инициализирует генератор псевдослучайных чисел. Генери- руемая последовательность случайных чисел чрезвычайно длинноватая, и постоянно одна и та же.
Точка в данной для нас последовательности, с которой начинается генерация чисел, зависит от параметра seed. Параметр: seed — параметр, задающий начало выдачи псевдослучайных значений на последовательности тип int, long. Программирование плат Arduino 5. Функция randomf Функция random возвращает псевдослучайное число. Возвращаемое значение: случайное число меж min и шах - 1 тип long.
Ежели при каждом запуске программы нужно получать различные последователь- ности значений, генерируемых функцией randomo, то нужно инициализиро- вать генератор псевдослучайных чисел со случайным параметром. В неких вариантах нужно получать схожую по- следовательность при каждом запуске программы на Arduino. Тогда инициализиро- вать генератор псевдослучайных чисел следует вызовом функции randomseedo с фиксированным параметром.
Функция lowByteQ Извлекает младший самый правый б переменной к примеру, типа word. Синтаксис: lowByte x ; Параметр: х — величина хоть какого типа. Возвращает б Функция highByteQ Извлекает старший последний левый б слова либо 2-ой младший б больше- го типа данных. Синтаксис: highByte x ; Параметр: х — величина хоть какого типа. Функция bitReadQ Читает определенный бит переменной. Возвращает: значение бита 0 либо 1. Функция bitWriteQ Записывает бит числовой переменной. Функция bitSetQ Устанавливает записывает 1 бит числовой переменной.
Функция bitClearQ Сбрасывает записывает 0 бит числовой переменной. Функция bit Вычисляет значение указанного бита бит 0 — это 1, бит 1 — это 2, бит 2 — это 4 и т. Синтаксис: bit n ; Параметр: п — номер бита, который нужно вычислить. Возвращает: значение бита. Наружные прерывания Прерывание англ. При этом выполнение текущей последовательности команд приостанавливается, и управление передается обработчику прерывания, который выполняет работу по обработке действия и возвращает управление в прерванный код.
Arduino так же предоставляет свои функции для работы с прерываниями. Их всего две: П attachlnterrupt ; П detachlnterrupt. Функция attachlnterrupt Задает функцию обработки наружного прерывания, т. Ежели до этого была задана иная функция, то назначается новенькая.
Вычисляет значение указанного бита бит 0 — это 1, бит 1 — это 2, бит 2 — это 4 и т. Возвращаемого значения нет. Снутри функции обработки прерывания не работает функция delay о, значения, возвращаемые функцией minis о, не меняются. Возможна утрата данных, пере- даваемых по поочередному соединению Serial data в момент выполнения функции обработки прерывания.
Переменные, изменяемые в функции, должны быть объявлены как volatile. Функция detach Interrupt Выключает обработку наружного прерывания. Синтаксис: detachlnterrupt interrupt ; Глава 5. При этом светодиод на выводе 13 Arduino при каждом прерывании меняет статус горит или гаснет.
Управление портами через регистры ATmega Внедрение интегрированных функций Arduino для работы с выводами чрезвычайно комфортно. Но за удобство приходится платить быстродействием. В большинстве про- гр это не принципиально, но время от времени имеет решающее значение. В таковых случа- ях нужно управлять портами Arduino впрямую через регистры ATmega.
При этом мы не лишь увеличиваем быстродействие, но еще и уменьшаем размер программы. Разглядим таблицу соответствия выводов Arduino портам микроконтроллера ATmega рис. Опасайтесь низкоомной перегрузки на этих выводах щм использовании портом CSP Рис. Используя эти команды, можно заменить обычные функции Arduino для управ- ления выводами. Частота ШИМ- сигнала приблизительно Гц. Ежели для вас охото иметь ШИМ с огромным разре- шением либо иной частотой, чем дозволяет обычная функция anaiogwrite , Глава 5.
Этому будут посвящены главы Arduino: вводы и выводы Глава 7. Внедрение библиотек в проектах Arduino Глава 8. Подключение датчиков к плате Arduino Глава Внедрение мониторов в проектах Arduino Глава Подключение к Arduino исполнительных устройств Глава Arduino и беспроводная связь Глава Arduino и Веб вещей Глава Особые способности отдельных плат Arduino Глава Взаимодействие Arduino с иными программируемыми системами Глава До этого всего, эти контак- ты могут служить цифровыми вводами и выводами.
В то же время, часть контактов Arduino могут действовать и как аналоговые входы. Почти все из имеющихся контак- тов не считая того также мультиплексированы — способны выступать в роли различ- ных коммуникационных интерфейсов, поочередных интерфейсов, широтно- импульсных модуляторов и обработчиков наружных прерываний.
В данной для нас главе мы разглядим внедрение контактов Arduino на примере обычных и не чрезвычайно проектов. Цифровые выводы — «бегущий огонь» на светодиодах 1-ое, с что можно начать знакомство с платформой Arduino, — это ее цифровые выводы. Цифровые выводы, имеющиеся на платах Arduino, разрешают подключать к ним остальные микросхемы, а также разные датчики и приводы.
Исследование воз- можностей использования цифровых выводов Arduino дозволит для вас организовать с ее помощью решение почти всех фактически нужных задач. Цифровые сигналы имеют лишь два отдельных значения: высочайший high, 1 и низ- кий low, 0 уровни.
Вы сможете использовать цифровые сигналы в вариантах, когда вход либо выход будут принимать одно из этих 2-ух значений. К примеру, одной из ситуаций, в которых вы сможете применять цифровой сигнал, является вклю- чение и выключение светодиода. Так как цифровые выводы Arduino могут выступать в роли как входов, так и вы- ходов, поначалу нужно их настроить.
Подключение светодиода к выводу Arduino Разглядим простой пример— подключение к выводу Arduino светодиода. Монтажная схема подключения светодиода В представленной на рис. Разберемся, как подобрать таковой резистор, и как будет влиять номи- нал резистора на яркость светодиода. Самым основным уравнением для хоть какого ин- Глава 6. В электрической схеме каждый компонент имеет какое-то собственное сопротив- ление, что вызывает при прохождении через него тока некое понижение его на- пряжения, называемое падением напряжения.
Светодиоды также вызывают опре- деленное падение напряжения на их и предусмотрены для работы при определен- ном значении тока: чем больше ток через светодиод, тем ярче светодиод светится, и так до предельного значения. Для более всераспространенных типов светодиодов наибольший ток составляет 20 мА. Обыденное значение падения напряжения для светодиода — около 2 В. Беря во внимание, что напряжение питания, равное 5 В, обязано свалиться на светодиоде и резисторе, оставшиеся 3 В должны свалиться на резисторе.
И хотя сопротивление взятого нами в проект резистора Ом превосходит на теоретическом уровне рассчитанное значение Ом, но оно все же позво- ляет светодиоду светиться довольно ярко. Не считая того, резисторы этого номинала чрезвычайно всераспространены. Сейчас приступим к написанию программы скетча , которая обеспечит мигание светодиода, присоединенного к цифровому выводу Arduino D5. Для выполнения операции «подождать некое время» мы воспользуемся встро- енной в Arduino функцией delay.
Эта функция просто останавливает выполнение программы на данное в параметре количество миллисекунд напомню: в 1 секун- де миллисекунд. Допустим, вы желаете поменять вывод пин Arduino для подключения светодиода либо время паузы в функции delay о.
Можно просто внести конфигурации в каждую строчку скетча, содержащую изменяемые характеристики. Но это не совершенно комфортно, и в огромных програмках займет чрезвычайно много времени. Есть и иной вариант — употреблять константы и переменные. Константа и переменная — это места хра- нения данных. Они имеют имя, значение и тип. Таковым образом, в програмке возникает возможность обратиться к той либо другой переменной либо константе через ее имя с целью работы с ее значением.
Преимущество переменных и констант заключается в том, что определе- ние значения вывода осуществляется в один прекрасный момент, а позже можно употреблять его многократно. Константа, в отличие от переменной, не может изменять свое значение — оно пред- определено при декларации константы, а значение переменной можно поменять в програмке. Внесем конфигурации в предшествующий скетч см.
В чем его пре- имущество перед скетчем из листинга 6. Сопряжение Arduino со вспомогательными устройствами 6. Подключение к плате Arduino 8-ми светодиодов Разглядим сейчас наиболее непростой пример: подключим к плате Arduino 8 свето- диодов и сделаем из их «бегущий огонь». Монтажная схема этого проекта приведена на рис. Монтажная схема подключения светодиодов для проекта «бегущий огонь» Приступим к написанию скетча. Для выполнения операции «подождать некое время», как и в преды- дущем примере, мы воспользуемся интегрированной в Arduino функцией delay о.
Эта функция просто останавливает выполнение программы на данное в параметре количество миллисекунд. Основной недочет нашего скетча — он очень массивный. И даже объявле- ние каждого вывода с помощью переменных не исправит положения.
К счастью, есть метод существенно упростить этот скетч, воспользовавшись массивами. Мас- сив — это набор переменных, доступ к которым осуществляется через их индекс. Индексация в массивах начинается с нуля. То есть, 1-ый элемент массива будет иметь поряд- ковый номер 0. Чрезвычайно удачный способ работы с массивами — циклы.
При этом счетчик цикла употребляется для индексации каждого элемента массива. Сопряжение Arduino со вспомогательными устройствами Внесем надлежащие конфигурации в предшествующий скетч см. Загрузим этот скетч в плату Arduino и убедимся в его работоспособности. Способ расположения пинов в пределах массива чрезвычайно комфортен и дозволяет пере- ставлять их как угодно без переподключения светодиодов.
Вы сможете самостоя- тельно поэкспериментировать с расположением частей массива. Цифровые входы — управляем светодиодами с помощью клавиш Разглядим еще одну функцию цифровых выводов. В прошлом разделе мы ис- пользовали их в качестве выходов, генерируя цифровой сигнал для включения либо выключения светодиодов. На данный момент мы попробуем сконфигурировать выводы Arduino в качестве входов.
Это дозволит подключить к Arduino, к примеру, пере- ключатели и клавиши для взаимодействия с наружными устройствами в режиме настоящего времени. И в этом разделе вы научитесь определять программное дейст- вие по нажатию клавиши. Подключение клавиши к плате Arduino Чтоб подключить к Arduino нормально разомкнутую клавишу, можно пойти самым обычным путем: один вольный проводник клавиши соединить с питанием либо «землей», а иной — с цифровым выводом Arduino рис.
Но это неправиль- но — все то время, когда клавиша не замкнута, на цифровом выводе Arduino могут появляться электромагнитные наводки, и из-за этого возможны ложные срабаты- вания. Чтоб избежать наводок, цифровой вывод традиционно подключают через довольно большой резистор кОм или к питанию, или к «земле». В первом случае это именуется схемой с подтягивающим резистором рис. Резисторы в обеих схемах употребляются для Часть III.
Сопряжение Arduino со вспомогательными устройствами Рис. Монтажная сверху и принципиальная снизу схемы подключения клавиши к Arduino: схема с подтягивающим резистором Глава 6. Монтажная сверху и принципиальная снизу схемы подключения клавиши к Arduino:. Но вот любознательный момент. Ранее мы утверждали, что схема, показанная на рис. И эти резисторы можно программ- но подключать к выводам либо отключать от их. Сейчас напишем програмку листинг 6. Сопряжение Arduino со вспомогательными устройствами В процедуре setup устанавливаем режимы выводов, а в процедуре loop — счи- тываем состояние клавиши в переменную buttonstate и передаем его на светодиод.
Для схемы с подтягивающим резистором состояние переменной buttonstate инвер- тируем, т. Для схемы со стягивающим резистором состояние переменной buttonstate инвертировать не нужно. Загрузим этот скетч в плату Arduino — вы должны следить включение свето- диода на выводе 13 при нажатии клавиши и выключение его при ее отпускании. Как комфортно держать клавишу повсевременно нажатой для свечения светодиода? Еще удобнее иметь возможность надавить клавишу один раз, чтоб включить све- тодиод, и, нажав ее еще раз, — выключить.
Загрузим в плату Arduino скетч пере- ключения состояния светодиода при нажатии клавиши листинг 6. Для отладки воспользуемся выводом данных в поочередный порт. Жмем на клавишу и лицезреем, что в поочередном порту при однократном нажатии клавиши происходит несколько конфигураций ее состояния рис. Почему же так происходит? Дело в том, что клавиши представляют собой механиче- ские устройства с системой пружинного контакта, подверженной явлению, назы- ваемому дребезгом, — в процессе нажатия клавиши контакт, в особенности в начале на- жатия, несколько раз замыкается и размыкается.
То есть, когда вы нажимаете на клавишу, сигнал не просто изменяется от низкого до высокого— он в течение пары миллисекунд меняет значение от 1-го до другого, до этого чем уста- новится значение low. Графики, приведенные на рис. Нажатие клавиши происходит приблизительно за 25 мс. Вы могли бы представить, что сможете сходу выяснить о состоянии клавиши, считав значение со входа контакта, как показано на левом графике. Но клавиша практически движется вверх-вниз, пока значение не установится, как показано на правом графике.
Сейчас, зная как ведет Часть III. Дребезг при нажатии клавиши себя клавиша, вы сможете написать програмку, которая обеспечит обычное снятие показаний с клавиши, подверженной дребезгу, — она считывает состояние клавиши и ждет некое время, опосля что считывает состояние опять, чтоб убедиться, что первоначальное состояние не поменялось. Seite 70 USB 3. Seite 98 9. Emplacement PCIe 3. Support USB 3. Подключение к LAN отсутствует. Желтоватый треугольник показывает Контакт 1. Ключ совмещения Желтоватый треугольник показывает Контакт 1 Внимание!
Seite Установка CPU и вентилятора При установке удостоверьтесь, что на нем установлен вентилятор, предотвращающий перегрев процессора. Для правильной установки вентилятора и процессора выполните последующие деяния. Некорректная установка может привести к повреждению CPU и системной платы. Seite MS Системная плата 5. Опосля проверки корректности ориентации процессора относительно сокета, установите его в разъем.
Держать процессор рекомендуется лишь за края его основания. Проверьте корректность расположения ключей совмещения. Аккуратненько снимите пластиковую заглушку и опустите прижимающую пластинку. Ключи совмещения 7. Плавненько опустите активный рычаг и зафиксируйте его за защелку на сокете. Seite 9. Нанесите узкий ровненький слой термопасты либо термоленту на верхнюю часть CPU. Это сделает лучше теплоотвод и предотвратит перегрев CPU.
Разместите радиатор системы остывания на системной плате так, чтоб провода вентилятора были ориентированы в сторону разъема питания вентилятора Seite Отверстия Под Установочные Винты MS Системная плата Отверстия под установочные винты При установке материнской платы поначалу установите нужные для материнской платы ножки на шасси в системном блоке. Эта панель просто располагается в системном блоке Перед подключением источника питания удостоверьтесь, что его контакты и разъем на плате верно сориентированы.
Потом плотно вставьте его в разъем на системной плате. При правильном выполнении соединения, фиксатор на силовом кабеле должен Подробную информацию о совместимых компонентах см. Каждый разъем DIMM обеспечивает единый канал. Вставьте модуль памяти в разъем DIMM вертикально.
На модуле памяти имеется смещенная от центра выемка внизу, благодаря которой его можно вставить в гнездо DIMM лишь определенным образом. Вставьте модуль памяти в разъем DIMM до упора. При правильной установке модуля, пластмассовые Seite Слоты Расширения MS Системная плата Слоты расширения Данная материнская плата содержит несколько слотов для плат расширения, таковых как дискретные видео и аудио карты.
Ежели на системной плате имеется чипсет Монитора системного оборудования, вы должны употреблять специально разработанный вентилятор с датчиком скорости, чтоб употреблять управление вентилятором процессора. Seite Разъемы передней панели: JFP1, JFP2 Эти разъемы употребляются для подключения клавиш и светодиодных индикаторов, расположенных на передней панели системного блока. Вставьте все провода Seite Выносная планка USB 2. Она обеспечивает питание портов USB, достаточное для стремительной зарядки сотовых телефонов и иных устройств с питанием от интерефейса USB.
При поступлении заказа на склад Новой Пошты в вашем городе на Ваш телефон приходит СМС в вашем городе поступлении заказа. При получении заказа доставка заказа в Украины от нашего. После дизайна заказа практически все города с Вами и Ваш телефон приходит компании Нова Пошта.