测试的时候使用的磁铁是我在网上买的扬声器,图形如下所示,它里面有磁铁。开始测试时LED灯一直是亮的,无论磁铁靠近还是离开迷你磁簧,LED灯都没有熄灭,这意味着上面的示例代码中从引脚8读入的值一直都是HIGH,把我整糊涂了。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);
}
}
将串口中的读数集合放到matlab中画一个示意图,如下图所示。从左往右介绍一下读数的意义。首先是磁铁距离迷你磁簧很远,这时迷你磁簧的输出值为1023,随着磁铁接近迷你磁簧,迷你磁簧的输出值垂直下降,然后磁铁再原理迷你磁簧,它的输出值又恢复到1023,整个图形类似于方波的图形。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);
}
实物连接图如下: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);
}
}