Урок показывает как можно управлять Ардуино через нарисованные на бумаге контроллеры в виде кнопок и слайдера.
В данном случае будут использоваться емкостные датчики и проводящие свойства графита для отправки данных на плату Arduino.
Шаг 1. Комплектующие
В этом уроке нам понадобятся ряд комплектующих, которые не сложно отыскать у себя дома или в ближайшем магазине:
- "Аллигаторы" (зажимы)
- Arduino
- Макетная плата
- Перемычки
- Резисторы 10M Ом (x3)
- Карандаш
- Бумага
- Серводвигатель
- Светодиод (x2)
- Резисторы для светодиодов (обычно 220 Ом) (x2)
Шаг 2. Рисуем контроллеры
Вы буквально рисуете свой контроллер на листе бумаги:
- Обязательно используйте карандаш (графит является проводящим);
- Сделайте несколько кнопок и, возможно, ползунок (слайдер) или два;
- Обязательно нарисуйте линию, ведущую к краю бумаги, чтобы получилось место для зажимов "аллигаторов";
- Сделайте все как можно более темным.
Шаг 3. Схема соединения
Мы забыли включить два светодиодных резистора (они должны быть между землей и анодом обоих светодиодов). Три черных прямоугольника справа предназначены для зажимов, ведущих к бумаге. Верхний - слайдер или ползунок, а два других - кнопки.
Получиться в итоге должно примерно так:
Шаг 4. Установка библиотеки
Для этого проекта требуется библиотека, предназначенная для использования емкостных датчиков. Скачать ее можно по ссылке:
https://playground.arduino.cc/Main/CapacitiveSensor?from=Main.CapSense
Согласно информации с официальной страницы Arduino для этой библиотеки:
"Библиотека превращает два или более контактов Arduino в емкостный датчик, который может воспринимать электрическую емкость человеческого тела. Для всех настроек датчика требуется резистор с сопротивлением от среднего до высокого, кусок проволоки и небольшой (до большого) кусок алюминиевой фольги на конце. При самом чувствительном варианте, датчик начнет ощущать руку или тело человека вдалеке от датчика".
Шаг 5. Код
Скопировать или скачать код вы можете ниже:
#include <Servo.h> #include <CapacitiveSensor.h> Servo myservo; CapacitiveSensor button1 = CapacitiveSensor(4, 2); CapacitiveSensor button2 = CapacitiveSensor(4, 3); CapacitiveSensor slider = CapacitiveSensor(4, 5); int total1val = 1000; // РЕДАКТИРОВАТЬ ЗДЕСЬ int total2val = 1000; int total3val1 = 100; int total3val2 = 1000; void setup() { //button1.set_CS_AutocaL_Millis(0xFFFFFFFF); Serial.begin(9600); pinMode(10, OUTPUT); pinMode(13, OUTPUT); myservo.attach(6); } void loop() { long start = millis(); long total1 = button1.capacitiveSensor(1000); long total2 = button2.capacitiveSensor(1000); long total = 0; long total3 = 0; for (int i = 1; i <= 10; i++) {//averages the value for the slide to make the servo smoother total3 = slider.capacitiveSensor(10000); total = total + total3; delay(1); } long avg = total / 10; int angle; Serial.print(millis() - start); Serial.print("\t"); Serial.print(avg); Serial.print("\t"); Serial.print(total2); Serial.print("\t"); Serial.println(total3); if (total1 > total1val) { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } if (total2 > total2val) { digitalWrite(10, HIGH); } else { digitalWrite(10, LOW); } angle = map(avg, total3val1, total3val2, 180, 0); myservo.write(angle); delay(10); }
Скорее всего, вам нужно будет скорректировать значения в верхней части, где вы увидите комментарий "РЕДАКТИРОВАТЬ ЗДЕСЬ":
- Откройте последовательный монитор, чтобы посмотреть, какие значения входят;
- Посмотрите на значение «низкий» и «высокий» (когда вы не касаетесь кнопки);
- Регулируйте значения в коде до тех пор, пока все не будет работать правильно (светодиоды должны включаться, когда вы нажимаете кнопки, и сервопривод должен поворачиваться когда используете слайдер на бумаге).
Шаг 6. Результат
Выше видео показывает по какому принципу всё работает, когда слайдер, нарисованный на бумаге, управляет сервоприводом через Ардуино.
На этом пока всё. Желаем вам отличных изобретений и проектов.