|
读取数字信号(Digital Read Serial) 本示例展示了如何通过在Arduino或Genuino与计算机之间建立基于USB的串行通信来监测开关的状态。
所需硬件 - Arduino或者Genuino开发板 - 一个瞬时开关、按键或拨动开关 - 10k欧电阻 - 导线 - 实验电路板
电路连接方式
将三根导线连接到开发板。前两根线(红色和黑色)连接到实验电路板侧面的两个竖长的行排列,以接入5V电源和地。第三根导线从数字引脚2连接到按键的一个引脚。该按钮的同一个引脚通过下拉电阻(这里使用的是10k欧)连接到地。按键的另一个引脚连接到5V电源。
按键或开关在按下时连接电路中的两个点。当按钮处于开路状态(未按下)时,按键的两个引脚之间没有连接,所以该引脚连接到地(通过下拉电阻),并且读取时为低电平,或者0。当按键关闭(按下)时,两个引脚短接,使得该引脚连接到5V,因此读取时为高电平,或者1。
如果您断开数字I/O引脚的所有连接时,LED会无规律的闪烁。这是因为输入引脚处于悬浮状态,也就是说该引脚与电源或地之间没有固定的连接,并且会随机返回高电平或低电平。这就是为什么在电路中需要下拉电阻。
原理图
代码 在下面的示例程序中,你需要在Setup()函数中做的第一件事是在开发板和计算机之间建立串行通信,波特率为9600,使用以下代码:
接下来,初始化数字引脚2,该引脚将会读取按键的输出状态,作为输入信号。
现在,已经完成设置,转到代码的主循环。当按键按下时,5V将会顺利的流过电路;当按键未按下时,输入引脚通过10k电阻连接到地。该引脚是数字输入信号,也就是说按键只能处于关闭状态(在Arduino可以看做是1,或高电平)或者是开路状态(在Arduino可以看做是0,或低电平),并且没有任何中间状态。
在程序的主循环中要做的首件事是创建一个变量,来保存从按键读取的状态。由于按键读取的信号只能是1或是0,可以定义一个int数据类型。将该变量称为sensorValue,并将其设置成等于从数字引脚2读取的值。可以使用以下代码实现这些: - int sensorValue = digitalRead(2);
复制代码
当开发板读取输入信号完成后,将该信号以十进制的格式输出到计算机。可以使用代码中的最后一行Serial.println()函数来实现。 - Serial.println(sensorValue);
复制代码
现在,当打开Arduino IDE上的串口监视器时,如果开关处于开路,你就会看到一串的0;如果开关处于闭合时,你就会看到一串的1。 - /*
- DigitalReadSerial
- Reads a digital input on pin 2, prints the result to the serial monitor
- This example code is in the public domain.
- */
- // digital pin 2 has a pushbutton attached to it. Give it a name:
- int pushButton = 2;
- // the setup routine runs once when you press reset:
- void setup() {
- // initialize serial communication at 9600 bits per second:
- Serial.begin(9600);
- // make the pushbutton's pin an input:
- pinMode(pushButton, INPUT);
- }
- // the loop routine runs over and over again forever:
- void loop() {
- // read the input pin:
- int buttonState = digitalRead(pushButton);
- // print out the state of the button:
- Serial.println(buttonState);
- delay(1); // delay in between reads for stability
- }
复制代码
|