Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

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

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Гайд по использованию уклономера с 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

См.также

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

  1. randomnerdtutorials.com - Guide for the Tilt Sensor (inclinometer) with Arduino