Датчик наклона KY-027. Датчики. Ардуино

Датчик наклона KY-027.
Датчик наклона KY-027.
Датчик KY-027

Привет! Сегодня сделаем обзор на датчик наклона KY-027. И соберем простую схему для реализации сообщающихся сосудов для света. Звучит интригующе не так ли? На самом деле, все очень просто и для такой схемы в Ардуино есть специальные датчики.

На самом дела все просто. Датчик наклона KY-027 это сразу два модуля состоящих из светодиода и ртутного ключа. И, если светодиод горит, то на контакт вывода будет отправлен сигнал. Второй светодиод, соответственно будет выключен этим управляющим сигналом.

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

  • Ардуино UNO
  • Макетная плата
  • Перемычки
  • Модуль KY-027
  • Кабель USB

Датчик наклона KY-027

Датчик наклона KY-027
Датчик наклона KY-027

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

Принципиальная схема подключения KY-027
Принципиальная схема подключения KY-027
Результат работы датчика наклона
Результат работы датчика наклона

В программе будем проверять состояние контакта вывода состояния с первого датчика. И, если он равен 1, то будем увеличивать яркость светодиода. То же самое проделаем для второго датчика. Если колбы с ртутью будут установлены параллельно столу или земле, то датчики должны работать синхронно.

Сначала заведем все необходимые переменные для программы.

int ledPinA = 9;
int switchPinA = 8;
int switchStateA = 0;
int ledPinB = 6;
int switchPinB = 7;
int switchStateB = 0;
int brightness   = 0;

В функции setup() настроим пины на вход и выход.

void setup(){
  pinMode(ledPinA, OUTPUT); 
  pinMode(ledPinB, OUTPUT);  
  pinMode(switchPinA, INPUT); 
  pinMode(switchPinB, INPUT);
}

А в цикле loop() считываем значение с контакта датчика и, если контакт первого датчика замкнут, увеличиваем яркость. А если контакт второго замкнут, уменьшаем.

После этого записываем яркость на первый и второй светодиоды. Но на второй запишем значение максимальной яркости — текущая яркость.

void loop(){
  switchStateA = digitalRead(switchPinA);
  if (switchStateA == HIGH && brightness != 255)
  { 
   brightness ++;
  } 
  switchStateB = digitalRead(switchPinB);
  if (switchStateB == HIGH && brightness != 0)
  { 
   brightness --;
  } 
  analogWrite(ledPinA, brightness);
  analogWrite(ledPinB, 255 - brightness);
  delay(20);
}

Полный текст программы

int ledPinA = 9;
int switchPinA = 8;
int switchStateA = 0;
int ledPinB = 6;
int switchPinB = 7;
int switchStateB = 0;
int brightness   = 0;

void setup(){
  pinMode(ledPinA, OUTPUT); 
  pinMode(ledPinB, OUTPUT);  
  pinMode(switchPinA, INPUT); 
  pinMode(switchPinB, INPUT);
}
void loop(){
  switchStateA = digitalRead(switchPinA);
  if (switchStateA == HIGH && brightness != 255)
  { 
   brightness ++;
  } 
  switchStateB = digitalRead(switchPinB);
  if (switchStateB == HIGH && brightness != 0)
  { 
   brightness --;
  } 
  analogWrite(ledPinA, brightness);
  analogWrite(ledPinB, 255 - brightness);
  delay(20);
}

Заключение

Мы рассмотрели датчик наклона KY-027 и его подключение к Ардуино. Такой датчик может служить для индикации наклона на дронах или других устройствах. Для большей наглядности, мы можем подключить серводвигатель к контактам датчика и наклонять поверхность автоматически. Тогда при максимальной яркости на первом датчике, серводвигатель будет наклонять поверхность ко второму датчику и наоборот. Попробуем использовать его в наших проектах в будущем.

Где купить

Добавить комментарий

Ваш адрес email не будет опубликован.