Arduino:Примеры/Гайд по использованию уклономера с Arduino

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Pixel Art Mini Meow Animated.gif Черновик


Гайд по использованию уклономера с Arduino[1]

Эта статья рассказывает, как использовать уклономер (датчик, измеряющий угол наклона) вместе с платой Arduino. Этот датчик также называют уклонометром или инклинометром.

Описание

То, как выглядит уклономер, можно посмотреть на картинке ниже:

Tilt Sensor 1.jpg

Этот датчик умеет определять свое положение в пространстве. То есть, если он расположен прямо, то сообщит одно значение, а если будет в наклоненном состоянии, то другое. Благодаря этому он часто используется в игрушках, роботах и других продуктах, где функциональность зависит от измерения наклона.

Как это работает

Уклономер имеет цилиндрическую форму. Внутри у него находится шарик из проводникового материала, а снизу подсоединено два провода, тоже из проводникового материала.

Tilt-sensor-how-it-works.jpg
  • Когда датчик расположен прямо, шарик скатывается в нижнюю часть и замыкает провода, позволяя току проходить через них.
  • Когда датчик наклонен, шарик не касается проводов, поэтому ток через них не проходит.

Таким образом, датчик работает как переключатель, который включается/выключается в зависимости от того, наклонен он или нет. Следовательно, на Arduino будет передаваться либо сигнал HIGH, либо сигнал LOW.

Где купить

Уклономер – это очень простой и дешевый датчик. Его можно купить на eBay по цене менее 2 долларов.

Подключение контактов

В подключении уклономера к Arduino нет ничего сложного. Вам всего лишь нужно подключить один контакт датчика к цифровому контакту Arduino, а второй (GND) – к GND.

Кроме того, вам нужно будет активировать встроенный подтягивающий резистор на цифровом контакте Arduino, к которому подключен датчик. В противном случае к цепи нужно будет подключить подтягивающий резистор на 10 кОм.

Pin-Wiring bb 2.png

Скетч: Светодиод, реагирующий на наклон датчика

В этом скетче-примере используется светодиод, который будет индикатором того, наклонен датчик или нет. То есть, если датчик будет стоять прямо, светодиод будет в выключенном состоянии, но если датчик наклонить, то светодиод загорится.

Необходимое оборудование

Для этого проекта понадобятся следующие компоненты:

  • Одна плата Arduino Uno (см. на eBay)
  • Одна макетная плата (см. на eBay)
  • Один датчик наклона (см. на eBay)
  • Один светодиод
  • Один резистор на 220 Ом
  • Провода-перемычки

Схема

Для этого примера вам нужно лишь добавить один светодиод к схеме, показанной выше, в разделе «Подключение контактов».

Tilt-sensitive-LED bb-1 3.png

Код

Чтобы завершить проект, загрузите код, показанный ниже, на плату Arduino.

 1 /*
 2  * Автор – Руи Сантос (Rui Santos)
 3  * Более подробно о проекте на: http://randomnerdtutorials.com
 4  */
 5   
 6 int ledPin = 12;         
 7 int sensorPin = 4;
 8 int sensorValue;
 9 int lastTiltState = HIGH;  // значение, которое было считано 
10                            // с датчика наклона в прошлый раз 
11     
12 // переменная ниже имеет тип данных «long», потому что в ней 
13 // будут храниться данные о времени (в миллисекундах), и это 
14 // значение может стать настолько большим, что просто не уместится
15 // в типе данных «int»:
16 toggled
17 long debounceDelay = 50;    // задержка для дребезга контактов;
18                             // если дребезг по-прежнему есть,
19                             // увеличьте эту переменную
20  
21 void setup(){
22   pinMode(sensorPin, INPUT);
23   digitalWrite(sensorPin, HIGH);
24   pinMode(ledPin, OUTPUT);
25   Serial.begin(9600);
26 }
27  
28 void loop(){
29   sensorValue = digitalRead(sensorPin);
30   // если состояние контакта поменялось, 
31   // будь его причиной шум или реальное срабатывание...
32   if (sensorValue == lastTiltState) {
33     // ...сбрасываем таймер для устранения дребезга:
34     lastDebounceTime = millis();
35   } 
36   if ((millis() - lastDebounceTime) > debounceDelay) {
37     // каким бы ни было считанное значение, оно осталось
38     // даже после задержки для дребезга; следовательно,
39     // принимаем его за реальное значение:
40     lastTiltState = sensorValue;
41   }
42   digitalWrite(ledPin, lastTiltState);
43 
44   Serial.println(sensorValue);
45   delay(500);
46 }

Демонстрация

В конце концов у вас должно получиться следующее:

Tilt-sensor-GIF 4.gif

См.также

Внешние ссылки