1. 功能描述
本例演示使用带有INPUT_PULLUP的pinMode()函数。它通过利用USB在你的Arduino主板和计算机之间建立串行通信来检测开关的状态。此外,当输入为HIGH,Arduino主板上附着于13号针脚上的LED将会亮起;当输入为LOW时,将关闭LED。
2. 需要硬件
ü Arduino 板子
ü 按钮或者开关
ü 面包板
ü 安装线
3. 电路连接图
链接两条线到Arduino主板。黑色的线链接按钮的一条腿到地。第二条线链接针脚的另外一条腿到数字针脚2号。当你按下按钮或者关闭开关时,他们把两条腿链接到同一个电路内。当按钮没有按下时,按钮的两条腿之间没有链接。因为在针脚2号上的内部上拉电阻是有效的,且链接到5v电压,所以,当按钮没有按下时,我们读取到一个HIGH。当按下按钮时,Arduino读取到LOW,因为针脚2到地的一个链接是完整的。
4. 原理图
下面程序持续不断地读取按钮的状态。然后它通过主loop()循环不断地比较按钮的状态和上次的状态。如果当前状态不同于上一次的状态,且当前状态为HIGH,则按钮有关改为开。然后程序吧按钮的计算器加1。
本程序也可以检测按钮计数器的值,如果它是4的偶数倍,程序打开13号针脚的LED灯。否则,程序关闭这个LED灯。
5. 程序
/*
Input Pullup Serial
this example demonstrates the use of pinMode(INPUT_PULLUP).
It reads a digital input on pin 2 and prints the result to
the serial monitor.
*/
const int ledPin = 13;
const int buttonPin = 2;
int buttonState = LOW;
void setup(){
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
}
void loop(){
buttonState = digitalRead(buttonPin);
Serial.print("current button state :");
Serial.println(buttonState);
if(buttonState == HIGH)
digitalWrite(ledPin, LOW);
else if (buttonState == LOW)
digitalWrite(ledPin, HIGH);
else {
Serial.print("unknown button state :");
Serial.println(buttonState);
}
}
6. 实验照片
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/263104/viewspace-1255961/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/263104/viewspace-1255961/