Подключение датчика наклона (Quatro-модуль).

Датчик наклона (Quatro-модуль) отличается от аналогов тем, что на плате установлено сразу два датчика SW-520D. Причем так, что один измеряет продольную ось, а второй поперечную. И в этой статье мы постараемся разобраться, как он работает.

Для начала соберем схему и зальем скетч для проверки работы датчика.

#define SW_PIN1 A1
#define SW_PIN2 A2
 
void setup(){
Serial.begin(9600);
}

void loop(){
int val1 = analogRead(SW_PIN1); // считываем данные с аналогового пина А1
int val2 = analogRead(SW_PIN2); // считываем данные с аналогового пина А2
Serial.print("CH1:");
Serial.println(val1);
Serial.print("CH2:");
Serial.println(val2);
delay(500);
}

После этого в программе Arduino IDE открываем монитор порта и смотрим как передаются значения в зависимости от изменения положения датчика наклона.

Мы видим, что наклоняя датчик к золотистым ножкам, значения стремятся к цифре 0, а наклоняя датчик в от золотистых ножек, значения стремятся к цифре 1023. Основываясь на этих показаниях, давайте задействуем четыре разных светодиода в нашей схеме и перепишем код программы так, чтобы в зависимости от того в какую сторону наклоняется датчик загорался определенный светодиод, а противоположный светодиод затухал.

#define SW_PIN1 A1 //Поперечная ось
#define SW_PIN2 A2 //Продольная ось
#define LED_PIN1 9 // CH1 наклон влево (синий)
#define LED_PIN2 5 // CH1 наклон вправо (зеленый)
#define LED_PIN3 10 // CH2 наклон вперед (белый)
#define LED_PIN4 6// CH2 наклон назад (красный)

int value1 = 0;
int value2 = 0;

void setup() {
  pinMode(SW_PIN1, INPUT);
  pinMode(SW_PIN2, INPUT);
  pinMode(LED_PIN1, OUTPUT);
  pinMode(LED_PIN2, OUTPUT);
  pinMode(LED_PIN3, OUTPUT);
  pinMode(LED_PIN4, OUTPUT);
}

void loop() {
  value1 = analogRead(SW_PIN1);
  value2 = analogRead(SW_PIN2);

//Если наклонить влево, то загорится синий,
//а если наклонить вправо, то загорится зеленый
  if (value1 > 1000) {
    digitalWrite(LED_PIN1, HIGH);
    digitalWrite(LED_PIN2, LOW);
  }
  else {
    digitalWrite(LED_PIN2, HIGH);
  digitalWrite(LED_PIN1, LOW);
  }
  delay(100);

//Если наклонить назад, то загорится красный,
//а если наклонить вперед, то загорится белый
  if (value2 > 1000) {
    digitalWrite(LED_PIN4, HIGH);
    digitalWrite(LED_PIN3, LOW);
  }
  else {
    digitalWrite(LED_PIN3, HIGH);
    digitalWrite(LED_PIN4, LOW);
  }
delay(100);
}

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