-
ЗНАКОМСТВО С TINKERCAD 2
-
Лекция1.1
-
Лекция1.2
-
-
ОСНОВЫ ЭЛЕКТРОНИКИ 10
-
Лекция2.1
-
Лекция2.2
-
Лекция2.3
-
Лекция2.4
-
Лекция2.5
-
Лекция2.6
-
Лекция2.7
-
Лекция2.8
-
Лекция2.9
-
Викторина2.1
-
-
ЗНАКОМСТВО С ARDUINO 7
-
Лекция3.1
-
Лекция3.2
-
Лекция3.3
-
Лекция3.4
-
Лекция3.5
-
Лекция3.6
-
Викторина3.1
-
Работа с датчиками
Сенсор, или датчик – это устройство для преобразования некоторой физической величины в электрический сигнал. Сенсоры являются, по сути, органами чувств робототехнических систем и служат для обеспечения обратной связи между контроллером и окружающим миром. Поскольку на поведение автоматической системы могут оказывать влияние многие физические факторы, существует множество различных сенсоров, способных эти факторы фиксировать: датчики измерения температуры, расстояния, звука, влажности и многие другие.
В зависимости от типа сигнала датчики для Arduino можно разделить на две группы:
- Аналоговые – показания датчика передаются в виде переменного напряжения на сигнальном проводе. Сигнальное напряжение может принимать значение от 0 В до 5 В.
- Цифровые – в любой момент времени выдают на сигнальный провод ограниченный набор значений (чаще всего либо 0 В, либо 5 В).
Большинство датчиков подключаются к управляющей электронике через 3 провода:
- Питание (Vcc) — красный провод. На него должно подаваться напряжение.
- Земля (GND) — чёрный провод. Должен быть соединён с землёй микроконтроллера.
- Сигнальный. С него считываются показания сенсора.
Работа с цифровыми датчиками
Простейшим примером цифрового датчика является кнопка.
Для чтения цифрового сигнала с датчика воспользуемся функцией digitalRead.
Функция имеет следующий вид:
digitalRead(пин) |
После вызова этой функции получим уровень цифрового сигнала на соответствующем контакте (HIGH или LOW (1 или 0)).
Пример. Управление включением светодиода
В качестве примера, создадим устройство, позволяющее управлять работой светодиода: если кнопка зажата – светодиод светится, если отпущена – светодиод не светится. Для этого:
- Зайдите в свое рабочее пространство TinkerCad.
- Создайте новое электронное устройство.
- На рабочее поле добавьте плату Arduino UNO, светодиод, резисторы и кнопку. С помощью проводников создайте замкнутую электрическую цепь.
Замечание. При работе с кнопками часто используют подтягивающий резистор. Без него цифровые входы «плавают» между 0 В и 5 В. Резистор «подтягивает» вход к земле (0 В), а нажатие кнопки – к 5 В. Следовательно, если кнопка нажата, получаем сигнал «HIGH», если отпущена – «LOW».
- Перейдите в режим написания программы в виде текстового кода и создайте следующую программу:
Исходный код | Комментарии |
int ledPin = 6; | Установить ножку светодиода в пин 6 |
int buttonPin = 4; | Установить ножку кнопки в пин 4 |
int result = 0; | Переменная result используется для считывания сигнала на кнопке |
void setup() { | |
pinMode(ledPin, OUTPUT); | Настраиваем пин 6 в режим вывода |
pinMode(buttonPin, INPUT); | Настраиваем пин 4 в режим ввода |
} | |
void loop(){ | |
result = digitalRead(buttonPin); | Считываем в переменную result состояние кнопки |
if (result == HIGH) { | Проверяем, если кнопка нажата (пришел сигнал HIGH) |
digitalWrite(ledPin, HIGH); | Включаем светодиод |
} | |
else | Иначе, если кнопка не нажата (пришел сигнал LOW) |
{ | |
digitalWrite(ledPin, LOW); | Выключаем светодиод |
} | |
} |
- Запустив симуляцию, мы сможем убедиться в правильности нашего кода.
Работа с аналоговыми датчиками
Простейшим примером аналогового датчика является потенциометр.
Для чтения аналогового сигнала с датчика воспользуемся функцией analogRead.
Функция имеет следующий вид:
analogRead(пин) |
После вызова этой функции получим уровень аналогового сигнала на соответствующем контакте (от 0 до 1023).
Пример. Управление яркостью светодиода
В качестве примера, создадим устройство, позволяющее управлять яркостью светодиода. Для этого:
- Зайдите в свое рабочее пространство TinkerCad.
- Создайте новое электронное устройство.
- На рабочее поле добавьте плату Arduino UNO, светодиод, резистор и потенциометр. С помощью проводников создайте замкнутую электрическую цепь.
- Перейдите в режим написания программы в виде текстового кода и создайте следующую программу:
Исходный код | Комментарии |
int ledPin = 6; | Установить ножку светодиода в пин 6 |
int potPin = A0; | Установить ножку потенциометра в пин А0 |
int result = 0; | Переменная result используется для считывания сигнала с потенциометра |
void setup() { | |
pinMode(ledPin, OUTPUT); | Настраиваем пин 6 в режим вывода |
pinMode(potPin, INPUT); | Настраиваем пин A0 в режим ввода |
} | |
void loop(){ | |
result = analogRead(potPin); | Считываем в переменную result сигнал с потенциометра |
result = map (result, 0, 1024, 0, 255); | Поскольку значения переменной resultпринадлежат промежутку [0 1023], а уровень сигнала (ШИМ) для светодиода должен принадлежать промежутку [0 255], то отобразим пропорционально один промежуток на другой с помощью функции map. |
analogWrite(ledPin, result); | Выдаем на светодиод соответствующий уровень сигнала |
} |
- Запустив симуляцию, мы сможем убедиться в правильности нашего кода.
Задания: |
Задание 14. Создайте виртуальное устройство, позволяющее регулировать скорость мигания светодиода.
Задание 15***. Создайте виртуальное устройство, имитирующее работу переключателя света: по нажатию на кнопку происходит включение света, выключить свет можно только при повторном нажатии на кнопку.
Предоставьте общий доступ к своим виртуальным устройствам и отправьте ссылки на решения с помощью формы.