Освой Arduino играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Датчик удара

Датчик встречается в виде модуля KY-031. Датчик чувствует удары по корпусу объекта в котором он смонтирован. Устанавливается в охранные системы автомобилей, применяется в охранной сигнализации дверей и ворот.

Hit sensor module KY-031

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

У модуля три вывода: земля, питание, цифровой вывод.


KY-031 | Arduino 
----------------
     - | GND 
     + | 5V 
     S | D

Скетч для датчика. Навеяно фильмом "Матрица".


//KY-031 Knock Sensor

int knockPin = 4;
int knockValue = HIGH; // this is where we record our shock measurement
boolean bAlarm = false;
unsigned long lastKnockTime; // record the time that we measured a shock
int knockAlarmTime = 500; // number of milliseconds to keep the knock alarm high

void setup ()
{
  Serial.begin(9600);
  pinMode (knockPin, INPUT);
}
void loop ()
{
  knockValue = digitalRead (knockPin); // read value

  if (knockValue == LOW) // If we see a knock
  {

    lastKnockTime = millis(); // record the time of the shock
    if (!bAlarm) {
      Serial.println("Knock Knock, Neo");
      bAlarm = true;
    }
  }
  else
  {
    if ( (millis() - lastKnockTime) > knockAlarmTime  &&  bAlarm) {
      Serial.println("no knocks");
      bAlarm = false;
    }
  }
}

Hit sensor

Дополнительные материалы

Реклама