Курс arduino – микросхемы

Содержание

Язык программирования Ардуино C++

Язык программирования Arduino ► является разновидностью языка C++. Смотрите на нашем сайте справочник с описанием основных функций языка Arduino с примерами.

В Arduino IDE все написанные скетчи компилируются в программу на языке C/C++ с минимальными изменениями. Компилятор Arduino IDE значительно упрощает написание программ для этой платформы и создание устройств на Ардуино становится намного доступней людям, не имеющих больших познаний в языке C/C++. Дадим далее небольшую справку с описанием основных функций языка Arduino с примерами.

Подробный справочник языка Ардуино

Язык можно разделить на четыре раздела: операторы, данные, функции и библиотеки.

Операторы

Типы данных

Язык ArduinoПримерОписание
setup()void setup ()
<
pinMode (3, INPUT );
>
Функция используется для инициализации переменных, определения режимов работы выводов на плате и т.д. Функция запускается только один раз, после каждой подачи питания на микроконтроллер.
► Пример использования
loop()void loop ()
<
digitalWrite (3, HIGH );
delay(1000);
digitalWrite (3, LOW );
delay(1000);
>
Функция loop крутится в цикле, позволяя программе совершать вычисления и реагировать на них. Функции setup() и loop() должны присутствовать в каждом скетче, даже если эти операторы в программе не используются.
► Пример использования

Управляющие операторы

if
if (x > 100) digitalWrite (3, HIGH );
if (x digitalWrite (3, LOW );
Оператор if используется в сочетании с операторами сравнения (==, !=, ) и проверяет, достигнута ли истинность условия. Например, если значение переменной x больше 100, то включается светодиод на выходе 13, если меньше — светодиод выключается.
► Пример использования
if..else
if (x > 100) digitalWrite (3, HIGH );
else digitalWrite (3, LOW );
Оператор else позволяет cделать проверку отличную от указанной в if, чтобы осуществлять несколько взаимо исключающих проверок. Если ни одна из проверок не получила результат ИСТИНА, то выполняется блок операторов в else.
► Пример использования
switch…case
switch (x)
<
case 1: digitalWrite (3, HIGH );
case 2: digitalWrite (3, LOW );
case 3: break ;
default : digitalWrite (4, HIGH );
>
Подобно if, оператор switch управляет программой, позволяя задавать действия, которые будут выполняться при разных условиях. Break является командой выхода из оператора, default выполняется, если не выбрана ни одна альтернатива.
forvoid setup ()
<
pinMode (3, OUTPUT );
>
void loop ()
<
for ( int i=0; i analogWrite (3, i);
delay(10);
>
>
Конструкция for используется для повторения операторов, заключенных в фигурные скобки. Например, плавное затемнение светодиода. Заголовок цикла for состоит из трех частей: for (initialization; condition; increment) — initialization выполняется один раз, далее проверяется условие condition, если условие верно, то выполняется приращение increment. Цикл повторяется пока не станет ложным condition.
► Пример использования
whilevoid loop ()
<
while (x Serial.println (x);
delay (200);
>
>
Оператор while используется, как цикл, который будет выполняться, пока условие в круглых скобках является истиной. В примере оператор цикла while будет повторять код в скобках бесконечно до тех пор, пока x будет меньше 10.
► Пример использования
do…whilevoid loop ()
<
do
<
x = x + 1;
delay (100);
Serial.println (x);
>
while (x delay (900);
>
Оператор цикла do…while работает так же, как и цикл while. Однако, при истинности выражения в круглых скобках происходит продолжение работы цикла, а не выход из цикла. В приведенном примере, при x больше 10 операция сложения будет продолжаться, но с паузой 1000 мс.
► Пример использования
break
continue
switch (x)
<
case 1: digitalWrite (3, HIGH );
case 2: digitalWrite (3, LOW );
case 3: break ;
case 4: continue ;
default : digitalWrite (4, HIGH );
>
Break используется для принудительного выхода из циклов switch, do, for и while, не дожидаясь завершения цикла.
Оператор continue пропускает оставшиеся операторы в текущем шаге цикла.
► Пример использования

Синтаксис

;
(точка с запятой)

digitalWrite (3, HIGH );
Точка с запятой используется для обозначения конца оператора. Забытая в конце строки точка с запятой приводит к ошибке при компиляции.
<>
(фигурные скобки)
void setup ()
<
pinMode (3, INPUT );
>
Открывающая скобка “<” должна сопровождаться закрывающей скобкой “>”. Непарные скобки могут приводить к скрытым и непонятным ошибкам при компиляции скетча.
//
(комментарий)
x = 5; // комментарийКомментарии используются для напоминания, как работает программа. Они игнорируются компилятором и не экспортируются в процессор, не занимая место в памяти микроконтроллера.
#define#define ledPin 3Директива #define позволяет дать имя константе. Директива служит исключительно для удобства и улучшения читаемости программы.
► Пример использования
#include// библиотека для серво
#include Servo .h>
Директива #include используется для включения сторонних библиотек в скетч. Помните, что директивы #include и #define, не требуют точки запятой.
► Пример использования
booleanboolean val = false ;Переменная boolean может принимать значение — true или false. Каждая переменная типа boolean занимает один байт в памяти микроконтроллера.
► Пример использования
char// оба значения эквивалентны
char val = ‘A’;
char val = ’65’;
Тип данных char хранит символьное значение и занимает в памяти 1 байт. Символы пишутся в одинарных кавычках, например: ‘A’, но в памяти символы хранятся в виде чисел.
► Пример использования
bytebyte val = 255;byte — без знаковый тип данных для хранения чисел в диапазоне от 0 до 255. Переменная занимает в памяти 1 байт.
► Пример использования
intint val = 32767;Тип данных для хранения целых чисел. Переменная типа int хранит целочисленные 16-битные значения в диапазоне от -32768 до 32767.
► Пример использования
unsigned intunsigned int val = 65535;Переменная типа unsigned int также может хранить двухбайтовые значения. Но вместо отрицательных чисел хранит только положительные значения в большом диапазоне от 0 до 65535.
► Пример использования
floatfloat val = 25.1547;Переменная типа float служит для хранения чисел с десятичным разделителем. Числа с плавающей точкой позволяют более точно описать аналоговые величины, чем целые числа. Точность дробных чисел составляет 6-7 знаков — это общее количество цифр, а не количество цифр после запятой.
► Пример использования

Подробно Arduino язык программирования для начинающих представлен в таблице. Микроконтроллер Arduino программируется на языке, основанном на C/C ++. Язык программирования Arduino является разновидностью C++, другими словами, не существует отдельного языка программирования Arduino. Скачать книгу PDF можно ниже. Отметим, что программирование Arduino намного проще , чем язык C++.

Например. На языке программирования Arduino включить в скетче последовательный порт на скорости 9600 бит в секунду можно всего лишь одной строчкой:

При использовании C/C++ нам бы пришлось долго разбираться с документацией на микроконтроллер и написать в скетче нечто подобное:

UBRR0H = ((F_CPU / 16 + 9600 / 2) / 9600 – 1) >> 8;
UBRR0L = ((F_CPU / 16 + 9600 / 2) / 9600 – 1);
sbi(UCSR0B, RXEN0);
sbi(UCSR0B, TXEN0);
sbi(UCSR0B, RXCIE0);

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри – структура, составляющие и их назначение. Микроконтроллер ATmega328P

И снова привет всем любителям и новичкам программирования Arduino!)

Это третье видео (статья) из серии «основы Arduino для начинающих» и сегодня мы поговорим о внутренностях платы Arduino Uno и их предназначении, а так же уделим немного внимания её микроконтроллеру Atmega328.

Предыдущие выпуски вы найдете здесь: 0,1,2

Традиционно для вас доступны два варианта представления материала – видео и текст, надеюсь, оба варианта будут интересными 🙂

В прошлом выпуске мы говорили о том, какую плату для дальнейшего обучения лучше выбрать и остановились на использовании Arduino Uno третьей ревизии. Давайте же поближе познакомимся с компонентами этой платы и их предназначением, а также попробуем составить некоторую упрощенную структурную схему ее функционирования. Думаю, она позволит вам лучше понимать основной принцип взаимодействия отдельных узлов схемы и работу всей платы в целом.

Итак, слева я буду показывать китайский аналог Arduino Uno и его компоненты, а справа, шаг за шагом, мы будем строить функциональную схему.

С чего начинается любая схема? Конечно же, это различные компоненты, отвечающие за ее питание. Поэтому первым в нашей функциональной схеме мы выделим именно это. Вообще, у Arduino есть три пути получить энергию для работы: это питание по шине USB, от специального разъема питания на плате или входа Vin. Давайте разберем их все по отдельности.

Подключая плату к компьютеру посредством USB-интерфейса, вы подаете питание на Arduino благодаря четырехпроводной структуре шины USB, где 2 провода отвечают за передачу команд, а два других провода за непосредственное питание устройств. Именно по этим проводам Arduino и получает рабочее напряжение величиной 5В как это видно на принципиальной схеме. Так же, это напряжение поступает на вход стабилизатора напряжения, который понижает его до +3.3В, что необходимо для питания некоторых отдельных компонентов, подключаемых к Arduino, рассчитанных на это напряжение. Кстати, в качестве защиты от большого потребления тока вашей платой, на самом входе питающей линии разработчики установили небольшой предохранитель на 500мА, который, в случае различных обстоятельств, защитит USB-порт компьютера и плату Arduino от возможного выхода из строя.

все картинки кликабельны 🙂

Итак, следующим на очереди идет разъем питания для подключения, например, сетевого AC/DC-адаптера, аккумулятора или батареи. В отличие от USB-порта, где предполагается стабильное наличие напряжения 5В (или около того), в случае разъема питания ситуация складывается несколько иная, поскольку он рассчитан на подключение к нему источников питания различных напряжений. Диапазон этих значений колеблется в пределах от 6 до 20В и, при прямом подключении, это совсем не годится для компонентов нашей схемы. Поэтому разработчики поставили на входе питания стабилизаторы напряжения – один на 5В, другой на 3.3В. А так же парочку конденсаторов и диод, в качестве элементов борьбы с помехами и защиты от перепутывания полярности питания. Стоит отметить, что для стабилизатора напряжения всегда нужно напряжение, несколько выше того уровня, до которого он будет его понижать, и специфика стабилизатора такова, что уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. Именно поэтому, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.

И, наконец, вывод Vin на плате Arduino. Если посмотреть на схему питания, то можно увидеть, что, при подключенном источнике питания к разъему, с этого вывода можно будет получить это же самое напряжение, правда, чуть меньшее из-за небольшого падения на диоде.

Ну а если теперь подключить источник питания к этому выводу, то напряжение так же попадет на стабилизатор 5В и плата будет запитана. Это удобно в случае использования различных батарей или аккумуляторов без специальных разъемов питания.

Стоит отметить, что Arduino сама выбирает источник питания с самым большим напряжением, и в этом ей помогает специальный элемент, называющийся компаратором. Если в двух словах, то компаратор, это такое устройство, которое сравнивает подаваемый на него сигнал с каким-либо опорным значением, и, если этот сигнал превышает опорное значение, то компаратор выдает на своем выходе логическую единицу (в нашем случае +5В).

Итак, с блоком питания разобрались, идем дальше.

На очереди у нас связующее звено между компьютером и программируемым нами микроконтроллером. Это еще один микроконтроллер ATmega8U2, либо, в более новых версиях ATmega16U2, который практически не заметен на плате.

Этот микроконтроллер представляет собой USART, что в переводе означает «Универсальный синхронно-асинхронный приемо-передатчик». Именно он осуществляет передачу данных по самому распространенному на сегодняшний день протоколу RS-232, c помощью которого связывает COM-порт вашего компьютера и программируемый микроконтроллер.

Помните, мы говорили, что USB-кабель имеет 4 провода, два из которых питающие, а два других – сигнальные? Так вот, именно по сигнальным проводам и происходит передача данных от ПК к микроконтроллеру и обратно, а свидетельствуют о приеме, либо передаче, специальные светодиоды на плате, имеющие названия Rx и Tx, где R это сокращение слова Receive, то есть прием, а T – transmit – то есть отправление. Причем выводы Rx и Tx всегда подключаются разноименно, то есть Rx принимающего устройства соединяется с Tx передающего, и наоборот. Это видно из схемы подключения двух микроконтроллеров на плате Arduino. Для тех, кто желает знать о том, как передаются данные по USB при помощи UART, я рекомендую ознакомиться с этой ссылкой.

Ну вот, наконец, мы и подошли с вами к главному компоненту платы Arduino – микроконтроллеру Atmega328P, который, собственно, и является основным вычислительным центром этой платформы. Давайте разберемся, из каких основных частей он состоит.

В обобщенном виде, любой микроконтроллер можно разбить на три составляющие части:

1. Вычислительный блок, иначе именуемый как арифметико-логическое устройство или процессор. Также, наверняка многие из вас слышали или видели такую аббревиатуру как CPU (Central Processing Unit) что в переводе на русский значит “центральное процессорное устройство”. Именно этот блок является самой главной частью системы и предназначен он для выполнения различных операций с числами. А вот уже последовательность этих операций называется программой. Каждая операция кодируется в виде числа и записывается в память микроконтроллера, но об этом, в другой раз..

2. Собственно, второй основной частью микроконтроллера и является модуль памяти. Это специализированное электронное устройство, которое представляет собой набор ячеек, в каждой из которых может храниться одно число. Именно здесь хранится написанная вами программа и другие команды микроконтроллера. Память делится на оперативную – ОЗУ (оперативное запоминающее устройство) и постоянную – ПЗУ (постоянное запоминающее устройство. Принципиальная разница между этими видами памяти в том, что в случае с оперативной памятью, при выключении питания микроконтроллера, записанные значения не сохраняются и существуют только до тех пор, пока это питание присутствует. Например, такая память используется для хранения каких-либо промежуточных результатов вычислений. А вот данные, хранимые в постоянной памяти, наоборот, никак не зависят от наличия питания и могут быть использованы микроконтроллером сразу же после включения. В такую память, например, записывается вся разработанная вами программа, и она никуда не пропадет при повторной подаче напряжения на микроконтроллер.

3. Наконец, третьей составляющей частью микроконтроллера являются так называемые порты ввода-вывода. Если процессор и память находятся где-то в глубине корпуса микроконтроллера и мы их не видим, то порты ввода-вывода всегда на виду – вот они, в виде небольших металлических ножек.

Конечно же, не стоит забывать, что некоторые ножки отвечают за питание и прочие компоненты, подключаемые к микроконтроллеру, но большинство из них все-таки являются портами ввода-вывода, отвечающими за непосредственное управление микроконтроллером различными датчиками, модулями, светодиодами, транзисторами и так далее. Подавляющее большинство этих портов были выведены разработчиками Arduino по краям платы и, для удобства работы, подписаны.

Именно с этими портами нам и предстоит работать в дальнейшем, ведь суть любой микропроцессорной системы сводится к управлению чем-то извне, а иначе, зачем нам микроконтроллеры? 🙂

Как уже было сказано ранее, центральный процессор является основным мозгом микроконтроллера и именно он управляет модулем памяти и портами ввода-вывода. Более подробно о работе с портами ввода-вывода мы поговорим уже через один выпуск, когда будем работать со светодиодом и кнопкой, ну а сейчас я бы хотел заострить внимание на еще одном компоненте на плате, который мы не назвали – это генератор тактовых импульсов или кварцевый резонатор.

Не пугайтесь таких сложных названий, на самом деле, все просто – для работы любого микроконтроллера нужен некий генератор импульсов, благодаря которому он сможет осуществлять свою деятельность по последовательному выполнению команд. Например, мы написали с вами программу мигания светодиодом 10 раз в секунду. Но как микроконтроллер узнает, не имея никакого представления о длительности одной секунды, когда ему пора включить светодиод, а когда пора выключить? Именно благодаря кварцевому резонатору, который, в зависимости от его номинала, генерирует определенное число импульсов за одну секунду, это число имеет единицы измерения – герцы и называется частотой. Например, частота, равная 5Гц означает 5 импульсов в секунду, 10Гц – десять импульсов и так далее.

На плате Arduino Uno для двух микроконтроллеров установлены, соответственно, два кварцевых резонатора с частотой 16МГц, что означает работу резонатора с частотой 16 миллионов(!) импульсов в секунду – только представьте, какая это огромная скорость! Именно эти импульсы и считает наш микроконтроллер, а впоследствии, по их количеству, делает вывод о том, сколько времени прошло с запуска какой-либо процедуры. За весь этот счет отвечают различные счетчики и таймеры, о которых мы обязательно поговорим в следующих выпусках, но пока вам достаточно знать, отчего зависит скорость работы микроконтроллера и как он ориентируется во времени.

Так же на плате Arduino вы могли заметить небольшую кнопку – она называется кнопкой сброса или RESET, и при нажатии на нее переводит наш микроконтроллер в исходную позицию, с которой он начинал свою работу.

Итак, мы познакомились с вами с основными составляющими платы Arduino и совсем немного поговорили о микроконтроллере ATmega. Хочу заметить, что изучению структуры и принципам работы микроконтроллеров можно посвятить большой отдельный курс, поэтому я не стал углубляться в эту тему и рассчитываю на вашу дальнейшую любознательность и стремление изучить и понять как можно большее в этой интересной сфере. В качестве дальнейшего учебного пособия по изучению микроконтроллеров AVR, не сочтите за рекламу, я советую вам книгу Белова А.В., в которой, на мой взгляд, достаточно доступным языком описаны все нюансы работы с микроконтроллерами.

Ну а на этом обзорный пост платы Arduino подходит к концу и в следующем выпуске мы познакомимся со средой программирования Arduino IDE – то есть её установкой, настройкой и пользовательским интерфейсом. Надеюсь, что данный материал был полезным и интересным для вас, спасибо за внимание и до встречи в новом выпуске! 🙂

Ардуино для начинающих – ТОП-3 проекта, схемы, фото, видео

  1. Датчик движения
  2. Управление устройствами со смартфона
  3. Мини-пианино — схемы и видео

Сегодня рассмотрим ТОП-3 интересных Ардуино проекта для начинающих. Сначала подробно рассмотрим инструкцию по сборке датчика движения. Второй проект — управление устройствами с помощью смартфона через Bluetooth — детально поговорим о подборе комплектующих и схеме подключения. Третий проект на Ардуино для начинающих — мини-пианино. Прилагаем не только пошаговую инструкцию по сборке, но и алгоритм программирования, фото и видео. Научимся играть на собранном пианино песенку «С днем Рождения».

Датчик движения с Ардуино — проект для начинающих

Для начала рассмотрим, как можно сделать датчик движения с помощью ультразвукового датчика (HC-SR04), который будет включать каждый раз светодиод. Это устройство легко смогут повторить новички, но при этом он будет интересен и более опытным инженерам.

Необходимые детали

Чтобы создать датчик движения с Arduino, HC-SR04 и светодиодом (LED) нам понадобятся следующие комплектующие:

  • Плата Arduino (мы использовали Arduino Uno).
  • Светодиод (LED, цвет не имеет значения).
  • Резистор/сопротивление 220 Ом.
  • Макетная плата.
  • USB-кабель Arduino.
  • Батарейка 9В с зажимом (опционально).
  • 6 проводов.

Позиционирование деталей

Сначала подключите ультразвуковой датчик и светодиод на макетной плате. Подключите короткий кабель светодиода (катод) к контакту GND (земля) датчика. Затем установите резистор в том же ряду, что и более длинный провод светодиода (анод), чтобы они были соединены.

Подключение частей

Теперь нужно подключить несколько проводов на задней панели датчика. Есть четыре контакта — VCC, TRIG, ECHO и GND. После вставки проводов необходимо выполнить следующие подключения:

  1. Датчик — Arduino.
  2. VCC — 5V (питание).
  3. TRIG — 5 с пометкой.
  4. ECHO — 4 с пометкой.
  5. GND — GND (земля).
  6. Конец резистора на цифровой вывод по вашему выбору, просто не забудьте изменить его позже в коде.

Пометки обозначают, что контакт может быть подключен к любым двум цифровым выводам Arduino, просто убедитесь, что вы изменили их в коде позже.

Загрузка кода

Теперь вы можете подключить Arduino к компьютеру с помощью USB-кабеля. Откройте программное обеспечение Arduino и загрузите код, который вы можете найти ниже. Константы прокомментированы, поэтому вы точно знаете, что они делают и, возможно, поменяете их.

const int ledPin = 6; // Цифровой выход светодиода
const int trigPin = 5; // Цифровой выход для подключения TRIG
const int echoPin = 4; // Цифровой выход для подключения ECHO
const int ledOnTime = 1000; // Время, в течение которого светодиод остается включенным, после обнаружения движения (в миллисекундах, 1000 мс = 1 с)
const int trigDistance = 20; // Расстояние (и меньшее значение) при котором срабатывает датчик (в сантиметрах)

int duration;
int distance;

void setup() <
pinMode(ledPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
>

void loop() <
digitalWrite(trigPin, LOW);
digitalWrite(trigPin, HIGH);
delay(1);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;

if (distance 0) // Send data only when you receive dаta:
<
data = Serial.read(); //Read the incoming data and store it into variable data
Serial.print(data); //Print Value inside data in Serial monitor
Serial.print(“n”); //New line
if(data == ‘1’) // Checks whether value of data is equal to 1
digitalWrite(13, HIGH); //If value is 1 then LED turns ON
else if(data == ‘0’) // Checks whether value of data is equal to 0
digitalWrite(13, LOW); //If value is 0 then LED turns OFF
>
>

Принцип работы

Модуль HC 05/06 работает по последовательному каналу связи. Андроид-приложение последовательно отправляет данные на модуль Bluetooth, когда вы нажимаете определенную клавишу. Bluetooth на другом конце получает данные и отправить на Arduino через TX-соединение модуля Bluetooth (RX-соединение Arduino).

Код загруженный в Arduino проверяет полученные данные и сравнивает их. Если получена «1» — светодиод включается и выключается при получении «0». Откройте монитор последовательного порта и наблюдайте полученные данные.

Приложение для Андроид-устройств

В этом уроке мы не будем касаться создания приложений для устройств на основе Андроида. Вы можете скачать приложение на GitHub.

После того, как мы подключились через Bluetooth, нужно скачать и установить приложение, которое будет управлять нашим светодиодом на расстоянии. Подсоединяем смартфон к модулю Bluetooth HC 05/06:

  • Включаем модуль HC 05/0.
  • Ищем устройство
  • Соединяемся с HC 05/06 введя дефолтный пароль «1234» или «0000» (четыре нуля).

После этого мы устанавливаем приложение на наш смартфон. Открываем его. Выбираем устройство — модуль Bluetooth из списка (HC 05/06). После успешного подключения нажимаем кнопку ON для включения светодиода и кнопку OFF, чтобы выключить его. Потом уже можно нажать кнопку «Отключить», чтобы отключиться от модуля Bluetooth.

  • Возможно, вам также будет интересна инструкция по созданию сигнализатора поклевки своими руками

Этот проект можно улучшить и поднять на более высокий уровень для, например, автоматизация дома через управление смартфоном, управляемый робот и многое другое.

Видео с пошаговой сборкой устройства для управления со смартфона:

Делаем мини-пианино с помощью Ардуино — схемы и видео

Сделаем пианино с помощью Arduino и сыграем на нем свою первую мелодию.

Ардуино — платформа с открытым исходным кодом, используемая для создания проектов в электронике. Она состоит из программируемой платы (часто называемой микроконтроллером) и части программного обеспечения или интегрированной среды разработки Arduino IDE для ПК, которая используется для написания и загрузки компьютерного кода на плату.

Компоненты

Платформа Arduino стала довольно популярной среди начинающих в электронике и не зря. В отличие от большинства предыдущих программируемых печатных плат, Arduino не нуждается в отдельном аппаратном обеспечении для загрузки нового кода на плату — вы можете просто использовать USB-кабель.

Кроме того, в Arduino IDE используется упрощенная версия C ++, что упрощает обучение программе. Наконец, Ардуино предоставляет стандартный форм-фактор, который разбивает функции микроконтроллера на более доступные пакеты.

Необходимые компоненты для нашего проекта:

  • Arduino UNO — 1 шт.
  • Провода-переходники папа-папа — 104×4.
  • Клавиатура — 14 Ом.
  • Динамики — 1A.
  • ПК или ноутбук.

Соединяем компоненты

Подключаем клавиатуру строки к 3 2 8 0 контактам Arduino, а столбцы к 7 6 5 4 выводам Arduino.

Подключаем провода динамика к клеммам 11 и Земля (GND).

Настройка

Кнопки клавиатуры (наше пианино) были подключены с помощью перемычек. Основной эскиз (скетч) определяет, какие частоты музыкальных нот связаны с каждой клавишей пианино.

Для этого проекта мы использовали C4, D4, E4, F4, G4, A4, B4, C5, D5, E5, F5, G5, A5 и B5, причем C4 был переключателем «0», D4 — переключателем «1» и так далее. Измените значения частот или добавьте дополнительные переключатели, чтобы полностью настроить собственный проект. Динамик просто подключен одним концом к контакту 11 Arduino, а другой — к земле.

Функция «тон» (tone) в коде будет искать этот вывод для воспроизведения вызываемой ноты.

Рабочий код

Вставьте код ниже в Arduino IDE и затем загрузите его в микроконтроллер. Нажмите кнопку сброса, если что-то пойдет не так. Вам также необходимо загрузить и установить библиотеку Arduino Keypad, которая доступна для скачивания ниже:

Эскиз (скетч) начинается с импорта библиотек «Keypad.h» и «pitches.h», поэтому мы сможем ссылаться на различные элементы из них позже в коде. Далее код настраивается путем определения количества ROWS и COLUMNS, определяющих, какие контакты входы и выходы, а также устанавливаем контакт динамика как 11-й вывод Arduino.

Затем мы определяем значение каждой ноты в форме Матрицы и назначаем, какой вывод нам нужно связать со строками и столбцами (в этом проекте мы использовали 3, 2, 8, 0 выводы как ROWS — строк, и 7, 6, 5, 4 в качестве COLUMNS — столбцов).

Основной цикл. Мы сохраняем каждое значение ноты в переменную «customkey», а также печатаем значение в серийном мониторе Arduino IDE. Далее мы сравниваем каждую пользовательскую ноту и отправляем вывод SPEAKER NOTE (нота динамика) и DURATION (длительность) на функцию «тона».

На предыдущем шаге мы скачали библиотеку Arduino Keypad. Разархивируйте её в папку Arduino в Arduino IDE и далее пройдите:

Играем песню «С Днем Рождения»

Динамик должен быть подключен только к любым штыревым (PWM) разъемам ARDUINO, иначе настройка не будет работать.

Как играть песню «С Днем Рождения» на клавиатуре:

Мультитестер на Arduino своими руками

За универсальным тестером будущее. Всего лишь при подсоединении щупов, универсальный пробник определяет сопротивление, ёмкость, ЭПС, диодную проводимость, распиновку и коэффициенты усиления транзисторов, прозванивает лампочки и светодиоды, сообщает на дисплее о повреждении электронного элемента. Работает подобный тестер автоматически, без переключения селектора или кнопок.

Для работы мультитестера нужен микроконтроллер минимум с 8 кБ флеш-памяти, такой как ATmega8, ATmega168, ATmega328.

Электрическая схема мультитестера на Arduino

Характеристики тестера электроэлементов на Arduino:

  1. Сопротивление: 0…50 МОм, точность до 0.01 Ом (на ATmega8 точность 0.1 Ом).
  2. Ёмкость: 25 пФ…100 мФ, точность 0,1 пФ.
  3. ЭПС (эквивалентное последовательное сопротивление) определяется для емкостей 90нФ…100 мФ.
  4. Биполярные транзисторы: нахождение базы, коллектора, эммитера (BCE) при проводимости NPN, PNP.
  5. Полевые транзисторы: N-канальные, P-канальные.
  6. Диоды, диодные сборки: кремниевые, германиевые, Шотки, определение анода катода.
  7. Стабилитроны: обратное напряжение пробоя менее 4,5 В.
  8. Тиристоры, семисторы: только маломощные.

Подобный пробник полупроводниковых деталей можно купить под заказ из Китая или собрать самому. Все необходимые для самоделки детали можно купить через интернет у производителей из Китая, Малайзии, Сингапура, Италии.

Список комплектующих

  1. Плата Arduino nano V 3.0, можно Pro mini.
  2. LCD дисплей графический WH1602A на контроллере HD44780. Используйте только дисплей, поддерживающий кириллицу(сообщения на русском языке на экране). Прошивки на английском языке для примененной схемы подключения и задействованных функций не существует.
  3. Стабилизатор (на схеме IC1) — прецизионный LM336-Z2.5, MCP1702-5002, можно обычный 7805L.
  4. Кнопка с фиксацией SW1.
  5. Кнопка без фиксации SW2.
  6. Резистор переменный R7 — 10 кОм, 0.5 Вт.
  7. Резисторы R1, R3, R5 — 680 Ом, 0.25 Вт.
  8. Резисторы R2, R4, R6 — 470 кОм, 0.125 Вт.
  9. Резистор R8 — 100 Ом, 0.25 Вт.
  10. Резистор R9 — 22 кОм, 0.125 Вт.
  11. Резистор R10 — 10 кОм, 0.125 Вт.
  12. Резистор R11 — 3.3 кОм, 0.125 Вт.

Подключение питания

Для точности измерений тестера рекомендуется, но не обязательно, запитать его от прецизионного стабилизатора напряжения 5.00 В, например от MCP1702-5002.

При невыполнении этого условия, в случае использования менее точного стабилизатора типа 7805, настоятельно советуем подключить источник опорного напряжения (ИОН).

Стабилизированный ИОН на 2.5 В надо подсоединять к выводу А4 микроконтроллера. На приведенной электрической схеме это подключение не показано. Благодаря подключенному ИОН, мультиметр будет более точно измерять напряжение на батарейках VBAT, наибольший положительный потенциал на полупроводниках VСС.

В программе самодиагностики микроконтроллера ATmega заложено определение отсутствия ИОН. Эта функция самодиагностики активна только при подключении ножки А4 к напряжению 5 В через резистор 47 кОм.

Можно таки случайно закоротить ножки микросхемы А4 и А5. После этого начнутся проблемы с точностью измерения VBAT и VСС. Поэтому удаляйте несанкционированные мостики между выводами, смывайте сгоревший флюс с платы.

Что касается портативности, то в качестве первичного источника для мультиметра рекомендуется использовать батарейку типа Крона или два последовательно соединенных литийионных аккумулятора. Правильно собранный прибор будет работать от любого источника питания, напряжением от 7 до 15 В.

При организации питания прибора от сетевого адаптера 220/9–12 В, следует позаботиться об экранировании микроконтроллера, устранить пульсации на входе с помощью конденсатора. Нельзя близко располагать, как в одной плоскости, так и сверху снизу, входные цепи питания к плате Arduino.

Сборка измерительной схемы

Правильнее будет собрать пробную схему мультитестера на беспаечной макетной плате для проверки совместимости найденного дисплея с микропроцессором Arduino, а также других комплектующих.

Встроенный светодиод на выходе D13 обязательно выпаять! Этот выход будет использоваться как источник образцового напряжения при прозвонке диодов, транзисторов, тиристоров, и нагрузка, садящая на нем напряжение, не нужна.

Подключение к аналоговым выходам Arduino:

  • A0 — «минусовой» черный щуп.
  • A1 — «плюсовой» красный щуп.
  • A2 — «прозвоночный» желтый щуп.

Подключение к цифровым выходам Arduino:

  • D0 — получение RX на Arduino nano или mini.
  • D1 — передача TX на Arduino nano или mini.

Прошивка микроконтроллера

Загрузить прошивку в Arduino можно как с помощью программатора USB, так и применив другой Arduino nano для перепрограммирования. Мы же воспользуемся программатором USBasp и приложением SinaProg, о чем расскажем подробно.

  • Скачиваем и устанавливаем на ПК приложение SinaProg 2.1.
  • В поле Programmer находим свой программатор USBasp и нажимаем кнопку Search для поиска подключенного контроллера.
  • После определения контроллера, скачиваем Aрхив с прошивкой для мультитестера на Arduino и распаковываем.
  • В архиве две прошивки: TransistorTester.eep для работы памяти EEPROM микроконтроллера, TransistorTester.hex непосредственно для микроконтроллера. Сначала загружаем TransistorTester.eep в память EEPROM микроконтроллера.

Иконка выбора пути к прошивке

  • Загружаем аналогично TransistorTester.hex в микроконтроллер и запускаем Program.

Об успешном завершении прошивки дается сообщение в описании процесса установки

  • Загружаем TransistorTester.hex в микроконтроллер,аналогично как делали ранее.

  • После удачно осуществленной прошивки, отключаем программатор.

Дабы не было проблем с полным отсутствием отображения на дисплее, заливать в память EEPROM следует файл с расширением HEX, а не BIN.

Начинать работу с тестером надо после сброса на кнопке SW2 Reset.

Есть куча приборов, куда можно поместить собираемый универсальный пробник: старые мультиметры, токовые клещи, большие калькуляторы, даже ночные часы.

Как пример свой мультитестер на Arduino можно засунуть в корпус испорченного модема.

Автор: Виталий Петрович. Украина

Курс arduino – микросхемы

Ядром платформы Arduino является микросхема-микроконтроллер известная как ATmega328.

ATmega328 на самом деле по всем параметрам является 8 битным компьютером: после включения, его процессор загружает байт из заданной ячейки памяти и интерпретирует это как команда. То что пойдет дальше зависит от значения этого байта. Только в отличие от известных нам компьютеров, ATmega328 не запускает никакую операционную систему: использование ресурсов находится под полным контролем программиста. Мы не можем полагаться на операционую систему, которая может коряво распределить память, переполнить её или привести к другим нежелательным для четкой автоматической системы последствиям. Кроме того, процессор может работать только с одной задачей одновременно (вы наверняка знаете, что так работают все процессоры, однако операционная система распределяет время работы различных задач таким образом, что складывается впечатление, что несколько програм на вашем компьютере работают одновременно).

У нового Arduino память совершенно пустая, следовательно, первый байт обрабатываемый процессором имеет нулевое значение: “Нет операции”. Перед использованием Arduino вы должны загрузить в его память исполняемую программу, т.е. последовательность битов, первый из которых интерпретируется как команда и выполняется. Если команде нужны параметры для выполнения, они берутся из следующих байтов памяти. После выполнения команды, процессор загружает полученный байт в память и интерпретирует его как команду. Если выключить Arduino, память не стирается. Последовательность байтов, загруженных в него, хранится в энергонезависимой памяти, поэтому когда вы включите его снова, программа запускается опять с самого начала.

Частота выполнения операций процессора задается тактовым генератором 16 МГц. Питание можно подавать через разъем USB. Для работы без USB-питания Arduino требуется отдельный источник питания напряжением от 7 до 12 V (это напряжение нормализуется до необходимых уровней регулятором расположенным на борту, так что вам просто нужен недорогой источник питания для этого). На борту, оба уровня напряжения 5 В и 3,3 В доступны пользователю, из которых можно выжать максимум 50 мА тока.

Память Arduino состоит из трех типов: флэш-память, где хранится программа 32 Кб; оперативная память (SRAM) 2 КБ, где процессор хранит и перезаписывает переменные, используемые в программе; и постоянная память (EEP-ROM) 1 КБ, где программист может хранить данные, которые должны остаться при перезапуске контроллера (как флэш-память, где хранится программа). По сравнению с современными компьютерами, которые оперируют как минимум несколькими гигабайтами, 35 кбайт кажется смешным, но на самом деле этого достаточно для большинства целей. Из-за отсутствия операционной системы, использование памяти переносится под полную вашу ответственность: если случится переполнение памяти или будет обращение к несуществующей ячейке памяти, ваша программа может повести себя непредсказуемо, и это довольно трудно отследить во время отладки. Вы всегда должны держать количество переменных под контролем в вашей программе.

Процессор ATmega328 подключен к 14 дискретным портам ввода / вывода (пронумерованных от 0 до 13), 6 аналоговым входам и порту USB. Дискретный вход / выход это электрическое соединение, которое может иметь два логических состояния: 1 и 0, или TRUE и FALSE, или, как в синтаксисе Arduino, LOW и HIGH. Если сигнал в значении LOW, соответствующий вывод имеет нулевой потенциал 0 В – тоесть подключен к общему проводу. Если сигнал HIGH, то уровень напряжения между данным выводом и землей 5 В.

Контакты 0 и 1 используются для последовательного приема и передачи данных: через них плата Arduino может общаться с присоединенными к ней модулями (шилдами), используя последовательный протокол. Последовательные протоколы это коммуникационные протоколы, в которых каждый бит передается / принимается по очереди один за другим. Контакты 2 и 3 могут быть также использованы в качестве прерываний. Прерывание это электрический сигнал на дискретном входе, который прерывает текущую программу процессора при наступлении заданного логического состояния. Прерывания также существуют и у процессоров обычных компьютеров. После наступления прерывания, процессор сохраняет свое состояние в памяти и откладывает выполнение программы, перескакивает на выполнение обработчика прерывания: короткий кусок программного кода, необходимый для обслуживания прерывания. После завершения, процессор возобновляет статус, который он имел перед приходом прерывания, и возобновляет выполнение программы.

Контакты 3, 5, 6, 9, 10 и 11 могут использоваться как выходы ШИМ (широтно-импульсной модуляции PWM) и имеют некоторые аналоговые настройки. Соответственно, их ячейки памяти содержат значения между 0 и 255.

Рис.1 Arduino UNO, как он выглядит сверху и снизу. Обратите внимание на карту Италии на задней стороне.

Контакт 13 также подключен к светодиоду на борту. Когда сигнал LOW, светодиод выключен, а если сигнал HIGH светодиод светится.

Кроме стандартного использования в качестве дискретных входов / выходов, контакты 10, 11, 12 и 13 обеспечивают возможность коммуникации с внешними периферийными устройствами.

Аналоговые входы помечены A0 . A5: каждый из них имеет цифровое разрешение 10 бит,

то есть они преобразовывают любое напряжение от 0 до 5 В в число между 0 и 1023, которое может быть доступно в памяти.

Все платформы смонтированы на плате, размером 60,6 мм × 53,4 мм и весом не больше 25 г (рис. 1).

На платах также имеются разъемы USB A / B, с помощью которых вы можете подключить их к компьютеру для коммуникации. Подключение USB-также обеспечивает питание для Arduino при подключении к компьютеру, так что для начала вам не нужен внешний источник питания.

Программа

Программа для Arduino, как и любая другая программа для процессора, является последовательностью битов на машинном языке. Для того, чтобы облегчить жизнь программистам, команда Arduino разработала язык программирования высокого уровня, компилятор и инструмент прошивки для заливки машинного кода в память Arduino.

Все эти инструменты входят в одну программу IDE (Integrated Development Environment), свободную

для скачивания на веб-сайте Arduino: выберите необходимую операционную систему вашего компьютера и скачайте программу. Она выглядит так же как и большинство обычных компьютерных программ. Она имеет несколько закладок на разные окна. Одно из таких окон используется для редактирования программы. Оно называется sketch на жаргоне Arduino. Скетчи пишутся в упрощенном C ++.

Рис.2 Программа Arduino появляется как окно, в котором можно ввести текст программы, которую попросту называют скетч.

Вы можете скомпилировать свой скетч в программе Arduino (рис. 2) нажав на кнопку Verify в верхнем левом углу окна: процесс компиляции транслирует C ++ программу в соответствующие машинные коды процессора ATmega328. После компиляции исполняемый скетч может быть загружен в память Arduino через USB кабель, при нажатии на кнопку Upload. Вам может понадобиться выбрать соответствующий COM-порт в меню, если есть более чем один доступный. Загрузка скетча всегда вызывает запуск компилятора, в первую очередь. Запуск скетча происходит сразу после окончания загрузки.

Дополнительные возможности добавлены к основному языку с помощью внешних библиотек, разработанных командой Arduino или сторонними разработчиками. Библиотеки могут быть включены в исполняемый код, выбрав соответствующий пункт меню. При необходимости, добавление библиотеки, автоматически добавит строки к скетчу сообщая компилятору о новом синтаксисе.

Запрограммировать Arduino просто, как 1,2,3

Вы задумывались облегчить себе жизнь в быту? Чтобы были вещи, которые решали бы за вас повседневные, рутинные задачи. Умное устройство, которое бы осуществляло полезную функцию, например поливало огород, убирало комнату, переносило груз. Эти задачи может решать электронная плата Arduino . Но просто купить её будет недостаточно. Любому промышленному логическому контроллеру или микросхеме нужен “мозг”, чтобы выполнять определённую последовательность действий. Для свершений операций в нашем случае подойдёт язык программирования ардуино.

Из этой статьи вы узнаете:

Приветствую вас, друзья! Для тех, кто меня не знает — меня зовут Гридин Семён. Вы можете прочитать обо мне здесь . Сегодняшняя статья будет посвящена двум основным программам, без которых не будет у нас дальнейшего движения и взаимопонимания.

Общее описание языков программирования

Как я и писал выше, рассматривать мы с вами будем две популярные среды разработки. По аналогии с CoDeSyS 2.3 , можно разделить на графический редактор и “умный блокнот”. Это программы Arduino IDE и FLprog.

Основой среды разработки является Processing/Wiring — это обычный C++, дополненный функциями и различными библиотеками. Существует несколько версий для операционных систем windows, Mac OS и Linux.

В чём их принципиальное различие?? Arduino IDE — это среда разработки, в которой описывается код программы. А FLprog похож на CFC CoDeSyS, позволяющий рисовать диаграммы. Какая среда лучше? Обе хороши и удобны по своему, но если хотите заниматься контроллерами серьёзно, лучше всего изучить языки, похожие на СИ. Их главный плюс в гибкости и неограниченности алгоритма. Мне очень нравится Arduino IDE.

Описание Arduino IDE

Дистрибутив можно скачать на официальном сайте . Скачиваем архив, он занимает чуть более 100 мб. Установка стандартная, как и все приложения для Windows. Драйвера для всех типов плат должны быть установлены в пакете. И вот каким образом выглядит рабочее окно программы.

Среда разработки Arduino состоит из:

  • редактора программного кода;
  • области сообщений;
  • окна вывода текста;
  • панели инструментов с кнопками часто используемых команд;
  • нескольких меню

Настройки Arduino IDE

Программа, написанная в среде разработки Arduino, называется скетчем . Скетч пишется в текстовом редакторе , который имеет цветовую подсветку создаваемого программного кода. Пример простенькой программы на картинке ниже.

Дополнительная функциональность может быть добавлена с помощью библиотек, представляющих собой оформленный специальным образом код. В основном он находится в закрытом от разработчика доступе. Среда обычно поставляется со стандартным набором, который можно постепенно пополнять. Они находятся в подкаталоге libraries каталога Arduino.

Многие библиотеки снабжаются примерами, расположенными в папке example. Выбор библиотеки в меню приведет к добавлению в исходный код строчки:

Это директива — некая инструкция, заголовочный файл с описанием объектов, функций, и констант библиотеки. Многие функции уже разработаны для большинства типовых задач. Поверьте, это облегчает жизнь программисту.

После того как мы подключили электронную плату к компьютеру. Мы осуществляем следующие настройки — выбираем плату Arduino и Com-порт по которому будем соединяться.

Далее пишем простенькую программу для мигания 13-ого светодиода на плате. (есть в примерах example ) и загружаем в контроллер.

Так, кстати говоря, удобно проверять работоспособность платы, пришедшей с магазина. Быстро и легко.

Есть ещё одна удобная вещь. Называется она Монитор последовательного порта ( Serial Monitor ). Отображает данные, посылаемые в платформу Arduino. Я обычно смотрю, какие сигналы выдают мне различные датчики, подключённые к плате.

Подключение библиотек

Существуют разные способы для добавления пользовательских функции. Подключить библиотеки можно тремя способами:

  1. С помощью Library Manager
  2. С помощью импорта в виде файла .zip
  3. Установка вручную.

1. С помощью Library Manager. В рабочем окне программы выбираем вкладку Скетч . После этого нажимаем на кнопку Подключить библиотеку . Перед нами откроется менеджер библиотек. В окне будут отображаться уже установленные файлы с подписью installed, и те, которые можно установить.

2.С помощью импорта в виде файла .zip. Часто в просторах интернета можно встретить запакованные в архивы файлы библиотек с расширением zip. В нём содержится заголовочный файл .h и файл кода .cpp. При установке не нужно распаковывать архив. Достаточно в меню Скетч — Подключить библиотеку — Add .ZIP library

3.Установка вручную. Сначала закрываем программу Arduino IDE. Наш архив мы сначала распаковываем. И файлы с расширением .h и .cpp переносим в папку с тем же названием, как и архив. Закидываем папку в корневой каталог.

Описание FLPprog

FLprog — это бесплатный проект независимых разработчиков, позволяющий работать с функциональными блоками, либо с релейными диаграммами. Эта среда удобна для людей — не программистов. Она позволяет визуально и наглядно видеть алгоритм при помощи диаграмм и функциональных блоков. Скачать дистрибутив можно на официальном сайте .

Я наблюдаю за проектом достаточно давно. Ребята развиваются, постоянно добавляют новый функционал и изменяют старый. Я вижу в этой среде перспективы. Так как она выполняет две важные функции: простоту и удобство использования .

Попробуем с вами создать простенький проект. Будем переключать 13 выход на светодиод.

Создаём новый проект. В верхнем окне добавляем нужное количество входов и выходов, задаём имя и присваиваем физический вход или выход платы.

Вытаскиваем нужные нам элементы из дерева объектов нужные нам элементы на холст редактирования. В нашем случае можно использовать простой RS-триггер для включения и выключения.

После создания алгоритма, кликнем на кнопочку компилировать , программа даёт готовый скетч на IDE.

Мы с вами рассмотрели возможности и удобства программ для разработки алгоритмов на контроллере серии Arduino. Есть ещё программы, которые позволяют создавать структурные диаграммы и визуальные картинки. Но я рекомендую использовать текстовый редактор, потому что потом вам будет проще. Скажите, а какая среда вам удобнее всего и почему??

22 сентября я участвовал в Краснодаре на семинаре “Сенсорные панельные контроллеры ОВЕН СПК”. Проводили конференцию в фешенебельном и красивом отеле “Бристоль”. Было очень интересно и круто.

В первой части семинара нам рассказывали о возможностях и преимуществах продукции компании ОВЕН. После был кофе-брейк с пончиками. Я понабрал кучу всего, и пончиков, и печенья, и конфет, так как был очень голодным.=)

Во второй части семинара после обеда нам презентовали среду разработки CoDeSyS 3.5. Много чего рассказали про Web — визуализацию. Эта тенденция начинает набирать обороты. Ну конечно, управлять оборудованием через любой интернет — браузер. Это реально круто. Вот кстати говоря само оборудование в чемоданчике.

Я в ближайшем будущем опубликую серию статей по CoDeSyS 3.5. Так что, если кому интересно подписывайтесь или просто заходите в гости. Буду всегда рад.

Кстати чуть не забыл, следующая статья будет о подключении шагового двигателя к электронной плате Arduino. Будет интересно, не пропустите.

Читайте также:  Монтаж проводки в доме из газобетона
Рейтинг
( Пока оценок нет )
Загрузка ...
Adblock
detector