Sensor shield v5.0
Описание
Sensor shield предназначен для удобного подключения к контроллеру плат, модулей и другой различной электроники. Шилд позволяет обойтись без пайки и/или использования макетной платы. Шилд удобен тем, что подключается к контроллеру напрямую, образуя «бутерброд». Будет полезен для проектов создания роботов, умного дома, и прочих проектов, где требуется подключать несколько устройств одновременно.
Физические размеры
- Шилд (Д х Ш х В): 57 х 57 х 19 мм
Плюсы использования
- Удобное подключение устройств
- Имеет отдельные вывода для подключения по интерфейсам I²C и COM
- Разъём для внешнего питания
Пример подключения и использования
Пример: В примере демонстрируется работа с шилдом. Для начала шилд необходимо подключить к контроллеру: шилд помещается сверху на выводы контроллера. Далее к шилду подключается сервопривод и ультразвуковой дальномер. Дальномер определяет расстояние до объекта, и в зависимости от этого контроллер принимает решение о повороте сервопривода. Такой пример можно использовать в проектах охранной сигнализации, например, для поворота камеры наблюдения.
Для этого нам понадобится:
Что нужно: | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Sensor Shield v5.0 | 1 |
Сервопривод TowerPro SG90 | 1 |
Ультразвуковой дальномер HC-SR04 | 1 |
Набор проводов 20 шт, 20см, "мама - мама" | 4 |
Схема подключения:
Скетч для загрузки:
//подключение библиотеки для работы с сервоприводом #include <Servo.h> //определение переменных #define coef 5 //коэффициент #define min_zone 6 // минимальная длина #define max_zone 44 // максимальная длина #define Trig 5 // пин подключения контакта Trig дальномера #define Echo 6 // пин подключения контакта Echo дальномера #define servoPin 11 // пин подключения сервопривода Servo myservo; // создание объекта сервопривода void setup() { pinMode (Trig, OUTPUT); //инициализация порта как выход pinMode (Echo, INPUT); //инициализация порта как вход myservo.attach (servoPin); //инициализация сервопривода myservo.write (0); //поворот сервопривода на исходное положение } unsigned int impulseTime=0; //переменная для хранения длины импульса unsigned int distance_cm=0; //переменная для хранения длины дистанции в см void loop() { digitalWrite (Trig, HIGH); // подача импульса на вход trig дальномера delayMicroseconds (10); // равная 10 микросекундам digitalWrite (Trig, LOW); // отключение подачи импульса impulseTime = pulseIn(Echo, HIGH); // замер длины импульса distance_cm = impulseTime/58; // пересчет в сантиметры //если произошло зависание, попытаться сбросить пин подключения Echo if(distance_cm == 0) { pinMode(Echo, OUTPUT); digitalWrite(Echo, LOW); pinMode(Echo, INPUT); return; } if (distance_cm >= min_zone && distance_cm <= max_zone) //если замеряемая длинна больше 6 см и меньше 22 см { myservo.write (coef * (distance_cm - min_zone)); // поворот сервопривода на значение: 5*(замеряемая длина - 6см ) } else if (distance_cm < min_zone) //иначе, если дистанция менее 6 см, сервопривод в положении ноль градусов { myservo.write(0); } else //иначе { myservo.write(180); //сервопривод в положении 180 градусов } delay (100); // задержка на 0.1 секунды }