【Arduino官方教程第一辑】示例程序 2-4 数字引脚上拉电阻

来源:互联网 发布:php分类信息 编辑:程序博客网 时间:2024/06/10 03:23

数字引脚上拉电阻

本例向你展示pinMode函数中INPUT_PULLUP常量的使用。本例通过Arduino板和电脑间的串口连接来监视按键的状态。当按键输入值为HIGH时,板载LED将被打开。当按键输入值为LOW时,板载LED将被关闭。

完成本例所需的硬件设备

  • Arduino板
  • 记忆开关,按键或拨动开关
  • 面包板
  • 面包板跳线
  • 杜邦线/面包板连接线

电路搭建

将两根线连到板子上:黑色线连接按键和GND。另一根线从2号引脚链接到按键的另外一脚。

按键或者开关将在被按下时连通两侧。当按键处于开路时(未按下),按键两侧并不会有连接。因为2号引脚上的上拉电阻被激活并连接到了5V,所以当按键被松开时我们读到HIGH。而当按键按下时我们读到LOW,因为此时线路被完全连接到GND。

图片来自官网

电路原理图

图片来自官网

例程代码

在下列程序中,setup函数用以下代码初始化串口连接(波特率9600):

Serial.begin(9600);

接着,初始化2号引脚为输入模式,并且使用内部上拉电阻:

pinMode(2,INPUT_PULLUP);

接下来的代码初始化13号引脚为输出模式 :

pinMode(13, OUTPUT);

好的,setup函数已经写完,开始写loop函数了。当按键没有被按下时,内部上拉电阻连接到5V,这使得Arduino读出HIGH(数值1)。而当按键被按下的时候,Arduino的引脚被”拉向”GND,因而Arduino读出LOW(数值0)。

在主循环你所要做的第一件事情就是声明一个变量来存储按键的状态。由于按键返回的值只可能是0或1,因而用Int类型正合适。将变量命名为sensorValue,并且让它和按键状态保持一致。以下代码可以轻松做到:

int sensorValue = digitalRead(2);

一旦Arduino读取到了输入,就将值(应是一个十进制数)输出到电脑。你可以在最后一行添加Serial.println()函数:

Serial.println(sensorValue, DEC);

现在,打开Arduino IDE上的串口监视器。按键按下,你可以看到一列稳定的“0”。如果按键被松开,则应看到“1”。

与13引脚连接的板载LED将在按键返回HIGH时打开,在返回LOW时关闭。

/* 数字引脚上拉电阻本例向你展示pinMode函数中INPUT_PULLUP常量的使用。本例将会读取2号引脚上的数字输入,然后输出到串口监视器。 电路连接: * 记忆开关连接2号到GND * 13引脚连LED不像pinMode(INPUT), 这里不需要下拉电阻。20kΩ电阻将电压上拉到5V。这种配置使得按键被松开时返回HIGH,按键被按下时返回LOW。代码是公开的 */void setup() {  //打开串口连接  Serial.begin(9600);  //配置2号引脚为输入引脚,并且开启上拉电阻  pinMode(2, INPUT_PULLUP);  pinMode(13, OUTPUT);}void loop() {  //读取按键的值并存入变量  int sensorVal = digitalRead(2);  //输出按键的值  Serial.println(sensorVal);  // 记住,使用了上拉电阻就意味着按键的使用逻辑反过来了。  // 在松开时返回HIGH,按下时返回LOW。  //在按键按下点亮13号引脚上的LED,在松开时熄灭:  if (sensorVal == HIGH) {    digitalWrite(13, LOW);  } else {    digitalWrite(13, HIGH);  }}

相关资料

setup()
loop()
pinMode()
digitalRead()
delay()
int
serial
DigitalPins
LED闪烁进阶:不用delay()函数的LED闪烁工程。
按钮:用按钮控制LED。
按键去抖:读取一个按钮状态,并且滤去干扰。
数字引脚上拉电阻:展示pinMode()函数INPUT_PULLUP 常量的使用。
按钮状态改变的探测:记录按钮被按下的次数。
音乐键盘:使用压力传感器和压电扬声器制作三键电子琴。
曲调1:使用压电扬声器播放一段曲调。
曲调2:使用tone()函数操作多个扬声器播放曲调。
曲调3:根据模拟信号通过压电扬声器播放一个音调。


更新进程

日期 日志 译者 2016年4月24日 创建并翻译文档 唐家勋

译者:唐家勋
邮箱:mrsteventang@gmail.com
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
我的微信公众号欢迎关注,2016年6月开始更新

0 0