Обучающие лекции по Arduino

Иванов Константин Игоревич

Уроки по Arduino: Урок 23

Урок 23: Вход по пропускам

План:

1. RFID модуль

2. Работа с библиотекой rfid.h.

 


 

Теоретическая часть

дизайн

 

1. RFID модуль

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

 

 Комплект RFID

Комплект RFID

 

Иванов Константин Игоревич

Уроки по Arduino: Урок 22

Урок 22: Удержание горизонтального уровня

План:

1. Инфракрасная связь

2. Работа с библиотекой IRRemote

 


 

Теоретическая часть

дизайн

 

1. Инфракрасная связь

На данный момент очень широко используется удаленное управление устройствами с помощью инфракрасного излучения. Таким образом, управляются кондиционеры, телевизоры, музыкальные центры и другая техника. Человеческий глаз не может видеть ИК излучение, т.к. оно находится выше видимого спектра, т.е. имеет слишком большую длину волны более 700нм (человек видит цвета в диапазоне от 400нм до 700нм). Это свойство ИК излучения было одной из причин, по которой был выбран именно он: очень важно не видеть свет, которым управляем различными объектами. Еще одна причина – это то, что такой вид связи достаточно легко реализовать и производить.

 

 Инфракрасный свет

Инфракрасный свет

 

Иванов Константин Игоревич

Уроки по Arduino: Урок 21

Урок 21: Удержание горизонтального уровня

План:

1. Датчик наклона

 


 

Теоретическая часть

дизайн

 

1. Датчик наклона

Датчик наклона SW-520D очень похож по внешнему виду на электролитический конденсатор, но это до того момента, пока его не взяли в руки. Сразу ощущается, что вес больше чем у конденсатора и при переворачивании слышатся звуки от шариков, которые находятся внутри.

 

 Датчик наклона

Датчик наклона

 

Иванов Константин Игоревич

Уроки по Arduino: Урок 20

Урок 20: Контроль влажности и температуры

План:

1. Датчик DHT11

2. Программная работа с датчиком DHT11

3. Отсчет времени с начала выполнения программы

 

 


 

Теоретическая часть

дизайн

 

1. Датчик DHT11

Для измерения температуры и влажности мы будем использовать цифровой датчик DHT11. Этот датчик позволяет измерять температуру с точностью 2 градуса, и влажность (20-95%) с точностью 5%. Состоит из емкостного датчика влажности и термистора, на рисунке показано его внутреннее устройство. Для удобства работы с датчиком, в него встроили еще АЦП (аналого-цифровой преобразователь) и элементы логики, необходимые для последовательного обмена информацией с Arduino.
Для удобства, часто используется модуль с датчиком влажности, который имеет резистор и три вывода, назначение которых подписано непосредственно возле них.

 

 Модуль с датчиком влажности

Модуль с датчиком влажности

 

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

 

 

Иванов Константин Игоревич

Уроки по Arduino: Урок 19

Урок 19: Создание калькулятора

План:

1. Математические операции языка С++

 

 


 

Теоретическая часть

дизайн

 

1. Математические операции языка С++

Математические операции:
* - Умножение
/ - Деление и целочисленное деление нацело
% - Деление по модулю и остаток от деления
+ - Сложение
-- Вычитание
/ - деление. Если с обеих сторон от этого знака стоят целые величины, он означает целочисленное деление. Если в результате такого деления получается остаток, он отбрасывается от результата. Для того чтобы после целочисленного деления получить вещественное значение, необходимо в скобках перед одним из операндов указать вещественный тип.

Например:
Serial.println(20/5); //4 (остатка нет)
Serial.println(5/2); // 2 (остаток отброшен)
Serial.println((float) 5/2); // 2.5 (вещественный результат)

% - выделение остатка при целочисленном делении. Эта операция требует, чтобы с обеих сторон от ее знака стояли целые величины.

Например:
Serial.println(10%3); // 1 (остаток)

= - присваивание. Переменной слева присваивается значение, стоящее справа.
A = 5; //переменной A присваивается значение 5.
В одной строке может стоять несколько операторов присваивания = .
Пример.
a = b = c = d = 3;
Операция выполняется справа налево, поэтому первой значение 3 получает переменная d, затем с, b и а.
a = a+5; - Текущему значению переменной a добавляется 5 и результат присваивается этой же переменной а. Иначе это действие можно записать как а+ = 5.
Для увеличения или уменьшения на 1 можно использовать запись a ++ (инкремент) и а -- (декремент) соответственно.

Операции отношения:
= = - равно;
> - больше;
< - меньше;
> = - больше или равно;
<= - меньше или равно;
!= - не равно.

Обратите внимание, знак = не используется как знак сравнения! Это знак присвоить значение.

 

 

Иванов Константин Игоревич

Уроки по Arduino: Урок 18

Урок 18: Набор номера телефона с использованием матричной клавиатуры

План:

1. Матричная клавиатура

2. Оператор выбора switch

 

 


 

Теоретическая часть

дизайн

 

1. Матричная клавиатура

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

 

 Матричная клавиатура

Матричная клавиатура

 

Иванов Константин Игоревич

Уроки по Arduino: Урок 17

Урок 17: Игра «Змейка»

План:

1. Двумерные массивы

2. Светодиодная матрица

3. Джойстик

 

 


 

Теоретическая часть

дизайн

 

1. Двумерные массивы

Двумерный массив - это одномерный массив, элементами которого являются одномерные массивы.
Как и одномерные массивы, двумерные массивы содержат элементы одного типа, но доступ к ним осуществляется по двум индексам. Двумерный массив int a[n, m] можно представить в виде таблицы, состоящей из n строк и m столбцов. К каждому элементу можно обратиться, указав в квадратных скобках номер строки и столбца, в которых он находится:
a[0, 0] a[0, 1] a[0, 2]...a[0, m]
a[1, 0] a[1, 1] a[1, 2]...a[1, m]
….......................................
a[n, 0] a[n, 1] a[n, 2]...a[n, m]
Алгоритм заполнения двумерного массива изображен на рисунке.

 

 Алгоритм заполнения двумерного массива

Алгоритм заполнения двумерного массива

 

Реализация алгоритма заполнения в программе.

for (int i 0; i < n; i ++)
for (int j = 0; j < n; j ++)
a[i][j] = 1;

 

Иванов Константин Игоревич

Уроки по Arduino: Итоговое занятие №2

Итоговое занятие №2

 

Теоретическая часть

дизайн

 

  1. Опишите принцип работы УЗ и ИК дальномеров.
  2. Какие операторы циклов вы знаете?
  3. Как программно осуществляется работа с серводвигателем?
  4. Как программно осуществляется работа с COM-портом?
  5. Опишите принцип работы LCD дисплея.
  6. Как программно осуществляется работа с LCD дисплеем?
  7. Опишите подключение семисегментного индикатора.
  8. В чем отличие одномерных массивов от структур?
  9. Как программно реализуется работа с модулем реального времени?

 


 

 

Практическая часть

дизайн

 

Соберите автоматическую кормушку для аквариума. У вас есть сосуд для сухого корма и затвор, который отодвигается серводвигателем. Реализуйте подачу сухого корма в аквариум раз в день во время, которое может устанавливаться пользователем. Время подачи и текущее время отображается на LCD дисплее.

Иванов Константин Игоревич

Уроки по Arduino: Урок 16

Урок 16: Будильник

План:

1. Структуры

2. Часы реального времени

3. Работа с библиотекой DS1302

 

 


 

Теоретическая часть

дизайн

 

1. Структуры

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

Пример.
struct human // имя структуры
{
//названия полей
char name[25];
int age;
char gender[7];
};

human D; //объявление переменной типа структура.

Обращение к полю структуры происходит с помощью операции “.”.

В общем виде: имя_переменной.имя_поля
Пример: D.name -обращение к полю name.

Методы инициализации структуры:
При объявлении.
Значения задаются после имени переменной в фигурных скобках через запятую.

human D = { “Даша”, 16, “женский” };

В программе:
D.name = “Даша”;
D.age = 16;
D.gender = “женский”;
Переменная D содержит информацию об одном человеке. Для задания информации о нескольких людях можно использовать массив структур.

 

 

 

Иванов Константин Игоревич

Уроки по Arduino: Урок 15

Урок 15: Игра «угадай число»

План:

1. Семисегментный индикатор

2. Одномерные массивы

 

 


 

Теоретическая часть

дизайн

 

1. Семисегментный индикатор

Одним из старейших устройств вывода информации является светодиодный семисегментный индикатор. Он позволяет выводить числа от 0 до 9, точку, и некоторые специальные символы.

 

Семисегментный индикатор

Семисегментный индикатор

 

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

 

Страницы:
1
2
3 4