Освой Arduino играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Геркон (герметизированный контакт) – датчик магнитного поля. Внутри зелёной стеклянной колбы находятся подвижные контакты из особого сплава. При воздействии магнитного поля контакты геркона замыкаются, при этом на выходе модуля появляется низкий уровень напряжения.
KY-021 - популярная модель модуля с датчиком магнитного поля.
На плате установлен резистор 10 кОм между контактами +5 и S.
Датчик крепится на неподвижном элементе конструкции. На подвижной детали устанавливают постоянный магнит, например, неодимовый. При сближении геркона и магнита замыкаются контакты геркона. Используется для определения закрытия двери или окна и других аналогичных ситуаций.
Имеет три вывода: сигнальный вывод 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 | 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);
}