数字部分-数字上拉通信

这个示例用到了pinMode()里面的INPUT_PULLUP,它通过电脑和主控板之前的串口通信监控开关的状态。
此外,当输入状态是HIGH的时候,13号引脚的板载LED会点亮;当LOW的时候,板载LED会关闭。

硬件需求
—Arduino控制板
—按键开关
—杜邦线或面保线
—面包板

电路

clip_image002
用两根面包线连接主控板和面包板,黑色面包线连接控制板GND和按键一脚,另一根连接2号引脚和按键另一个脚。
当你按下按键的时候,这两个脚就会连起来。当你松开按键的时候,这两个脚就会断开。因为2号引脚的内部上拉被激活且连接着5V,当按键松开时候,我们读取到HIGH。当按键关闭时候,我们读取到哦LOW,因为电路接地了。

原理图
clip_image004

代码

在下面的代码中,最先需要的是设置你控制板和电脑通信之间串口通信频率。

Serial.begin(9600);

第二步,定义数字引脚2的模式,internal pull-up。

pinMode(2,INPUT_PULLUP);

现在你的设置过程已经结束了,我们进入循环环节。当开关没按下的时候,上拉电阻连接着5V,这个使得Arduino读取到1或者HIGH。当你按下按键的时候,arduino的引脚拉到地,导致Arduino读取到0或者LOW。

在loop函数里面你要做的第一件事就是准备一个变量来存储你开关的状态。因为读取到的信息不是1就是0,所以可以用整形int来做为数据格式。我们叫这个变量叫sensorValue,然后无论2号引脚读取到什么都赋值给它,我们用一行代码就可以完成。

int sensorValue = digitalRead(2);

一旦Arduino读取到这个输入,就把它以十进制的方式输出在电脑的串口监视器上。你可以在最后的代码里用到Serial.println()函数。

Serial.println(sensorValue, DEC);

现在,当你打开Arduino的串口监视器的时候,就可以看到一长串的-,如果你按下开关,就能看到1。

连接13号引脚的LED会在1的时候点亮,0 的时候关闭。

void setup() {
//设置串口通信频率

Serial.begin(9600);
//设置2号引脚为输入模式并且激活内部上拉功能

pinMode(2, INPUT_PULLUP);

pinMode(13, OUTPUT);

}

void loop() {

//读取2号引脚的值

int sensorVal = digitalRead(2);

//输出值

Serial.println(sensorVal);

// 记住内部上拉是的按键状态在逻辑上是相反的,当

// 没有按下的时候是HIGH, 被按下的时候是LOW。 设置LED的状态的时候也需要相反。

if (sensorVal == HIGH) {

digitalWrite(13, LOW);

} else {

digitalWrite(13, HIGH);

}

}
0
分享到:

评论0

请先

本站资料配套硬件销售店铺:天猫店ultirobot.tmall.com 、三冠淘宝店zhongbest.taobao.com
没有账号? 忘记密码?