这里会显示出您选择的修订版和当前版本之间的差别。
— | learing:examples:inputpullupserial [2023/06/07 04:23] (当前版本) – 创建 - 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Input Pullup Serial (读取输入口,启用上拉电阻)====== | ||
+ | 这个例子演示了pinmode()的INPUT_PULLUP参数。它通过OCROBOT控制器与电脑的USB串口通讯来检测开关的状态。 | ||
+ | |||
+ | 除此之外,当输入HIGH,板上13号脚连接的LED点亮,否则熄灭。 | ||
+ | |||
+ | ===== 硬件要求 ===== | ||
+ | |||
+ | |OCROBOT控制器| | ||
+ | |开关或按键| | ||
+ | |面包板| | ||
+ | |跳线| | ||
+ | |||
+ | ===== 电路图 ===== | ||
+ | |||
+ | 连接两条线到控制器,黑色的接到GND和按键的一个脚,第二根线接到数字脚2和按键的另一个脚。 | ||
+ | |||
+ | 按键被按下的时候,连接它们的两脚就联通了。当按键没按下去的时候,按键的两个脚间是断开的。因为2号脚的内部的上拉是激活状态的并且连接到了5V,按键按下的时候就能读取到HIGH,否则读取到LOW,因为连接到了GND。 | ||
+ | |||
+ | ===== 代码 ===== | ||
+ | |||
+ | 程序的第一件事就是要设置和电脑的通信速率为9600波特率 | ||
+ | <code cpp> | ||
+ | |||
+ | |||
+ | 接下来,设置数字口2位输入,并启用上拉电阻。 | ||
+ | |||
+ | <code cpp> | ||
+ | |||
+ | |||
+ | 设置13号脚为输出 | ||
+ | |||
+ | <code cpp> | ||
+ | |||
+ | 现在设置完成了。 | ||
+ | |||
+ | 为按键建立一个新的变量,可以用整型数据来存储0或者1。 | ||
+ | |||
+ | <code cpp>int sensorValue = digitalRead(2);</ | ||
+ | |||
+ | |||
+ | 十进制显示串口监视器上 | ||
+ | |||
+ | <code cpp> | ||
+ | |||
+ | <code cpp>/* | ||
+ | Input Pullup Serial | ||
+ | |||
+ | | ||
+ | | ||
+ | */ | ||
+ | |||
+ | void setup() { | ||
+ | // | ||
+ | Serial.begin(9600); | ||
+ | // | ||
+ | pinMode(2, INPUT_PULLUP); | ||
+ | pinMode(13, OUTPUT); | ||
+ | |||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // | ||
+ | int sensorVal = digitalRead(2); | ||
+ | // | ||
+ | Serial.println(sensorVal); | ||
+ | |||
+ | // 记住,上拉就意味着按键的逻辑反过来了。 | ||
+ | if (sensorVal == HIGH) { | ||
+ | digitalWrite(13, | ||
+ | } else { | ||
+ | digitalWrite(13, | ||
+ | } | ||
+ | }</ |