Arduino使用迷你磁簧

来源:互联网 发布:淘宝关于dns劫持的教程 编辑:程序博客网 时间:2024/05/01 20:59
本文介绍37款传感器套件中的迷你磁簧,实物图如下:
Arduino使用迷你磁簧 - gc_2299 - gc_2299的博客
 它总共有三个引脚,上面是GUN引脚,中间是信号输出引脚,下面是VCC引脚。首先是照着商家给的示例代码进行测试。示例代码如下:

const int buttonPin = 8;

const int ledPin = 9;
int buttonState = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin,LOW);
}

void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}

测试的时候使用的磁铁是我在网上买的扬声器,图形如下所示,它里面有磁铁。开始测试时LED灯一直是亮的,无论磁铁靠近还是离开迷你磁簧,LED灯都没有熄灭,这意味着上面的示例代码中从引脚8读入的值一直都是HIGH,把我整糊涂了。
Arduino使用迷你磁簧 - gc_2299 - gc_2299的博客
 然后多测试了几次,发现磁铁靠近迷你磁簧时LED等变暗,离开迷你磁簧时,LED等亮度恢复正常。这个又是什么原因造成的呢,于是就想到将迷你磁簧的输出引脚连接到模拟口,再用串口将模拟口的读数打印出来。代码如下:

const int buttonPin = A0;
int inputValue = 0;

void setup() {
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin,LOW);

Serial.begin(9600);

}

void loop() {
inputValue = analogRead(buttonPin);
Serial.println(inputValue);
}

将串口中的读数集合放到matlab中画一个示意图,如下图所示。从左往右介绍一下读数的意义。首先是磁铁距离迷你磁簧很远,这时迷你磁簧的输出值为1023,随着磁铁接近迷你磁簧,迷你磁簧的输出值垂直下降,然后磁铁再原理迷你磁簧,它的输出值又恢复到1023,整个图形类似于方波的图形。
Arduino使用迷你磁簧 - gc_2299 - gc_2299的博客
于是将最初的代码改了一下,代码如下:

const int buttonPin = A0;
const int ledPin = 9;
int buttonState = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin,LOW);
}

void loop() {
inputValue = analogRead(buttonPin);


if (inputValue <900) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}

实物连接图如下:
Arduino使用迷你磁簧 - gc_2299 - gc_2299的博客
 
最后是一个演示视频:

 

参考文献:
[1]http://robots-store.com/index.php?tpl=content_app_history&id=140&hid=101
原创粉丝点击