Arduino:Примеры/Гайд по использованию уклономера с Arduino
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Гайд по использованию уклономера с Arduino[1]
Эта статья рассказывает, как использовать уклономер (датчик, измеряющий угол наклона) вместе с платой Arduino. Этот датчик также называют уклонометром или инклинометром.
Описание
То, как выглядит уклономер, можно посмотреть на картинке ниже:
Этот датчик умеет определять свое положение в пространстве. То есть, если он расположен прямо, то сообщит одно значение, а если будет в наклоненном состоянии, то другое. Благодаря этому он часто используется в игрушках, роботах и других продуктах, где функциональность зависит от измерения наклона.
Как это работает
Уклономер имеет цилиндрическую форму. Внутри у него находится шарик из проводникового материала, а снизу подсоединено два провода, тоже из проводникового материала.
- Когда датчик расположен прямо, шарик скатывается в нижнюю часть и замыкает провода, позволяя току проходить через них.
- Когда датчик наклонен, шарик не касается проводов, поэтому ток через них не проходит.
Таким образом, датчик работает как переключатель, который включается/выключается в зависимости от того, наклонен он или нет. Следовательно, на Arduino будет передаваться либо сигнал HIGH, либо сигнал LOW.
Где купить
Уклономер – это очень простой и дешевый датчик. Его можно купить на eBay по цене менее 2 долларов.
Подключение контактов
В подключении уклономера к Arduino нет ничего сложного. Вам всего лишь нужно подключить один контакт датчика к цифровому контакту Arduino, а второй (GND) – к GND.
Кроме того, вам нужно будет активировать встроенный подтягивающий резистор на цифровом контакте Arduino, к которому подключен датчик. В противном случае к цепи нужно будет подключить подтягивающий резистор на 10 кОм.
Скетч: Светодиод, реагирующий на наклон датчика
В этом скетче-примере используется светодиод, который будет индикатором того, наклонен датчик или нет. То есть, если датчик будет стоять прямо, светодиод будет в выключенном состоянии, но если датчик наклонить, то светодиод загорится.
Необходимое оборудование
Для этого проекта понадобятся следующие компоненты:
- Одна плата Arduino Uno (см. на eBay)
- Одна макетная плата (см. на eBay)
- Один датчик наклона (см. на eBay)
- Один светодиод
- Один резистор на 220 Ом
- Провода-перемычки
Схема
Для этого примера вам нужно лишь добавить один светодиод к схеме, показанной выше, в разделе «Подключение контактов».
Код
Чтобы завершить проект, загрузите код, показанный ниже, на плату Arduino.
/*
* Автор – Руи Сантос (Rui Santos)
* Более подробно о проекте на: http://randomnerdtutorials.com
*/
int ledPin = 12;
int sensorPin = 4;
int sensorValue;
int lastTiltState = HIGH; // значение, которое было считано
// с датчика наклона в прошлый раз
// переменная ниже имеет тип данных «long», потому что в ней
// будут храниться данные о времени (в миллисекундах), и это
// значение может стать настолько большим, что просто не уместится
// в типе данных «int»:
toggled
long debounceDelay = 50; // задержка для дребезга контактов;
// если дребезг по-прежнему есть,
// увеличьте эту переменную
void setup(){
pinMode(sensorPin, INPUT);
digitalWrite(sensorPin, HIGH);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
sensorValue = digitalRead(sensorPin);
// если состояние контакта поменялось,
// будь его причиной шум или реальное срабатывание...
if (sensorValue == lastTiltState) {
// ...сбрасываем таймер для устранения дребезга:
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// каким бы ни было считанное значение, оно осталось
// даже после задержки для дребезга; следовательно,
// принимаем его за реальное значение:
lastTiltState = sensorValue;
}
digitalWrite(ledPin, lastTiltState);
Serial.println(sensorValue);
delay(500);
}
Демонстрация
В конце концов у вас должно получиться следующее:
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino