用户工具

站点工具


learing:examples:digitalreadserial

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
learing:examples:digitalreadserial [2017/04/07 10:03] – 外部编辑 127.0.0.1learing:examples:digitalreadserial [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +====== Digital Read Serial(读取数字口开关状态) ======
  
 +<WRAP left round info 65%>
 +这个例子教你怎样用控制器的USB端口,通过串口通讯监视开关状态。
 +</WRAP>
 +
 +<WRAP left round box 100%>
 +===== ALPHA MEGA328-U核心 =====
 +==== 硬件 ====
 +  * [[ocrobot:alpha:parallelexpansion:index|ALPHA 并行扩展板]]
 +  * [[ocrobot:alpha:mega328-u:main|ALPHA MEGA328-U]]
 +  * [[[ocrobot:alpha:microswitch:index|ALPHA 微动开关模块]]
 +==== 搭建电路 ====
 +
 +  - ALPHA MEGA328-U模块插入并行扩展版1号槽位。
 +  - ALPHA 微动开关模块插入并行扩展板2号槽位。
 +  - USB线连接计算机与ALPHA MEGA328-U。
 +
 +==== 代码 ====
 +<code cpp>
 +    
 +/*
 +  DigitalReadSerial
 +  读取数字接口D15的输入,并将结果显示在串口监视器 
 + */
 +
 +// 数字口15 连接一个按钮开关,给它命名.
 +int pushButton = 15;
 +
 +void setup() {
 +  // 初始化串口通讯为9600波特率
 +  Serial.begin(9600);
 +  // 按键脚作为输入
 +  pinMode(pushButton, INPUT);
 +}
 +
 +
 +void loop() {
 +  // 读取按钮状态:
 +  int buttonState = digitalRead(pushButton);
 +  // 显示到串口:
 +  Serial.println(buttonState);
 +  delay(1);        // 为了稳定输入状态,使两次读数之间延时1毫秒
 +}
 +</code>
 +
 +<WRAP left round tip 100%>
 +这个例子中我们使用了两个新的函数:[[reference:language:serial_begin|Serial.begin()]]、[[reference:language:serial_println|Serial.println()]]
 +
 +[[reference:language:serial_begin|Serial.begin()]]用于初始化串口,[[reference:language:serial_println|Serial.println()]]用来输出数据到串口,并且以换行符结尾。
 +
 +输出数据如果结尾不需要换行符,可以使用[[reference:language:serial_print|Serial.print()]]
 +</WRAP>
 +
 +<WRAP left round help 100%>
 +微动开关模块中,接开关的3个引脚分别为D15,D16,D17。如何把三个按钮的状态,都通过串口输出?
 +</WRAP>
 +
 +
 +</WRAP>
 +
 +
 +
 +<WRAP left round box 100%>
 +===== ALPHA 8F328D-U核心 =====
 +==== 硬件 ====
 +  * [[ocrobot:alpha:parallelexpansion:index|ALPHA 并行扩展板]]
 +  * [[ocrobot:alpha:8f328d-u:index|ALPHA 8F328D-U]]
 +  * [[[ocrobot:alpha:microswitch:index|ALPHA 微动开关模块]]
 +==== 搭建电路 ====
 +
 +  - ALPHA 8F328D-U模块插入并行扩展版1号槽位。
 +  - ALPHA MICROSWITCH模块插入并行扩展板2号槽位。
 +  - USB线连接计算机与ALPHA 8F328D-U。
 +
 +==== 代码 ====
 +<code cpp>
 +    
 +/*
 +  DigitalReadSerial
 +  读取数字接口D4的输入,并将结果显示在串口监视器 
 + */
 +
 +// 数字口4 连接一个按钮开关,给它命名.
 +int pushButton = 4;
 +
 +void setup() {
 +  // 初始化串口通讯为9600比特率 
 +  Serial.begin(9600);
 +  // 按键脚作为输入
 +  pinMode(pushButton, INPUT);
 +}
 +
 +
 +void loop() {
 +  // 读取按钮状态:
 +  int buttonState = digitalRead(pushButton);
 +  // 显示到串口:
 +  Serial.println(buttonState);
 +  delay(1);        // 为了稳定使两次读数之间延时
 +}
 +</code>
 +</WRAP>
 + 
 +
 +
 +<WRAP left round box 100%>
 +===== MangoII =====
 +
 +
 +==== 硬件要求 ====
 +
 +  * OCROBOT控制器
 +  * 微动开关或者其他开关
 +  * 10K电阻
 +  * 面包板
 +  * 导线
 +
 +将3根导线连接到控制器上,红色和黑色的导线分别连接到面包板的5V和接地(GND)。第三根线连接PIN2和开关按钮的一个脚,这个脚也同时连在10K欧姆下拉电阻上。开关的另一脚接5V电源。
 +
 +当你按下按钮时会连接电路的2个点。当按钮没有被按下时,2根引脚没有被接通,所以PIN2是接地的(通过下拉电阻),状态是低电平或0。当按钮按下时,2根引脚连接,PIN2接通5V,所以PIN2读到高电平或者1。
 +
 +当你在数字I/O接口不连接任何东西时,LED灯会不规则地闪烁。这是因为输入端是悬空着的,没有一个固定的电压或者接地,会随机的显示高低电平,所以需要在电路上装一个下拉电阻来避免产生这种现象。
 +
 +==== 代码 ====
 +
 +在下面的程序中,你首先需要使用以下代码在setup()函数中设置控制器和计算机之间的串口通讯波特率9600:
 +<code cpp>
 +Serial.begin(9600);
 +</code>
 +然后初始化数字接口PIN2,这个接口会将按钮的输出作为它的输入:
 +<code cpp>
 + pinMode(2,INPUT); 
 +</code>
 +完成设置后开始处理代码的主循环。当按钮按下时,5V电源接通,当松开时输入接口PIN2会通过10K欧姆电阻接地。这是一个数字输入,意思是开关要么是ON状态(控制器视为“1”或“HIGH”),要么是OFF状态(被控制器视为“0”或“LOW”),而没有其他的状态。
 +
 +在主循环中首先要做的就是建立一个变量保存来自于按钮开关的信息。由于开关的信息不是1就是0,你可以使用int数据类型,将这个变量命名为sensorValue,将他设置为等于从PIN2读到的任何值。用一行代码就可以完成所有的工作:
 +
 +<code cpp>
 +int sensorValue = digitalRead(2);
 +</code>
 +
 +当控制器读取到输入后,把它打印到电脑。这可以在最后一行使用命令Serial.println()实现:
 +
 +<code cpp>
 +Serial.println(sensorValue);
 +</code>
 +现在,当你打开IDE的串口监视器,如果开关是断开的的,就会看到“0”的数据流,如果开关是闭合的,则是“1”的数据流。
 +
 +<code cpp>
 +
 +    
 +/*
 +  DigitalReadSerial
 +  读取数字接口D2的输入,并将结果显示在串口监视器 
 + */
 +
 +// 数字口2 连接一个按钮开关,给它命名.
 +int pushButton = 2;
 +
 +void setup() {
 +  // 初始化串口通讯为9600比特率 
 +  Serial.begin(9600);
 +  // 按键脚作为输入
 +  pinMode(pushButton, INPUT);
 +}
 +
 +
 +void loop() {
 +  // 读取按钮状态:
 +  int buttonState = digitalRead(pushButton);
 +  // 显示到串口:
 +  Serial.println(buttonState);
 +  delay(1);        // 为了稳定使两次读数之间延时
 +}
 +    
 + </code>
 +</WRAP>
 + 
 +    
learing/examples/digitalreadserial.txt · 最后更改: 2023/06/07 04:23 由 127.0.0.1