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

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

Шкодим

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

Датчик магнитного поля (геркон)

Модуль KY-021
Модуль KY-025

Геркон (герметизированный контакт) – датчик магнитного поля. Внутри зелёной стеклянной колбы находятся подвижные контакты из особого сплава. При воздействии магнитного поля контакты геркона замыкаются, при этом на выходе модуля появляется низкий уровень напряжения.

Модуль KY-021

KY-021 - популярная модель модуля с датчиком магнитного поля.

KY-021

На плате установлен резистор 10 кОм между контактами +5 и S.

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

Технические характеристики

  • Напряжение питания, В: 3,3 – 5
  • Дальность срабатывания геркона, мм: 10

Имеет три вывода: сигнальный вывод S подключается к цифровому выводу платы, средний к питанию, а крайний левый к земле.


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

При поднесении магнита будет включаться светодиод на выводе 13. В реальности скорее всего логика будет обратной - когда магнит будет удалён от датчика, то нужно подать сигнал.


int ledPin = 13;
int reedPin = 2;
int val;

void setup()
{
  pinMode (ledPin, OUTPUT);
  pinMode (reedPin, INPUT);
}

void loop()
{
  val = digitalRead(reedPin);

  if (val == HIGH)
  {
    digitalWrite(ledPin, LOW);
  }
  else
  {
    digitalWrite(ledPin, HIGH);
  }
}

Модуль KY-025

KY-025

Модуль KY-025 позволяет получать аналоговые и цифровые данные. Подстроечный резистор позволяет калибровать показания.


KY-025 | Arduino 
----------------
    A0 | A
   GND | GND
     + | 5V 		 
    D0 | D 

int led = 13; // LED pin
int digitalPin = 3; // KY-025 digital pin
int analogPin = A0; // KY-025 analog pin
int digitalVal;
int analogVal;

void setup()
{
  pinMode(led, OUTPUT);
  pinMode(digitalPin, INPUT);
  Serial.begin(9600);
}

void loop()
{
  digitalVal = digitalRead(digitalPin);
  if (digitalVal == HIGH) // if magnetic field is detected
  {
    digitalWrite(led, HIGH); // turn on LED
  }
  else
  {
    digitalWrite(led, LOW); // turn off LED
  }

  analogVal = analogRead(analogPin);
  Serial.println(analogVal); // print analog value to serial

  delay(100);
}

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

Реклама