Arduino内置教程-基本原理-数字读取串口
数字读取串口
这个例子展示怎样通过创建开发板和电脑的串口通讯监视开关状态
硬件要求
- Arduino 或 Genuino 开发板
- 瞬时开关, 按钮, 或者切换开关
- 10k ohm 电阻
- 连接线
- 面包板
电路
这个图是用Fritzing制作。更多的电路例子请参考Fritzing project page
连接3根线到开发板。最开始两根,红和黑,连接到面包板上的两个长垂直行来提供5V电源电压和地。第三根线从数字引脚pin2连接到按钮的一个引脚。按钮的同一个引脚连接下拉电阻(10k ohm)到地。按钮的另一个引脚连接到5V电源。
按钮或者开关连接电路的两点。按钮是断开的(未按),按钮两个引脚是没有接通的,所以这个引脚连接到地(通过一个下拉电阻),读取为低电平或者0。当如果按钮是闭合的(未按),按钮两个引脚是接通的,所以这个引脚连接到5V,读取为高电平,或者1。
如果你没有连接到数字I/O口到任何地方,LED灯可能会不规则闪烁。这是因为输入引脚处于悬浮状态——它没有固定连接到电源或者地,并且它会随机在高电平和低电平之间切换。这是你需要下拉电阻的原因。
原理图
样例代码
- 在下面程序里,最先做的事是在你的开发板和电脑之间建立串口通讯,波特率为9600 bits:
Serial.begin(9600);
- 然后,初始化数字引脚pin2,因为你要读取按钮的输出,所以这个作为输入引脚:
pinMode(2,INPUT);
现在初始化完成了,移入你代码的主循环里。当按钮被按下,5V电压会流过你的电路,而当它没有被按下,这个输入引脚就会链接到通过10k ohm电阻连接到地。这是数字输入,意味着开关只有开(1,或者高电平)和关(0,或者低电平)的状态,中间什么都没有。
在主循环里最先做的事创建一个变量来保存来自开关的信息。因为这部分的信息是“1”或者“0”,所以你可以用int数据类型。调用变量的感应值,然后使它赋值给数字引脚pin2。你可以用下面一句代码来完成上面步骤:
int sensorValue = digitalRead(2);
- 一旦开发板读取输入引脚,把其信息作为一个值打印到电脑。你可以用command 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
}
更多
- setup()
- loop()
- pinMode()
- digitalRead()
- delay()
- int
- serial
- DigitalPins
- AnalogReadSerial - 读取电位计,并打印它的状态到Arduino串口监视器
- BareMinimum - 需要开始一个新的程序的最简框架
- Blink - 使LED灯开和关
- DigitalReadSerial - 读取一个开关,打印其状态到Arduino串口监视器
- Fade - 示范怎么用模拟输出来使LED灯的亮度变淡
- ReadAnalogVoltage - 读取一个模拟输入,并打印电压值到串口监视器