Arduino的基本读入操作及获取开关状态(这里以触摸传感器为例)
基本输出操作可以参考我之前的博文http://blog.csdn.net/qq_23937195/article/details/68944403
通过前面的文章学习,我们了解了Arduino的基本输出操作、如何通过Serial与PC串口工具通信、监听脉冲长度以记时间。并通过操作声波传感器的操作帮助加深理解。
那么你是否有想过我要如何读入一个基本的位数据呢?也就是说,如何通过引脚读入0或1。在这里我们以电容式点动触摸开关为例(你当然也可以使用其他的开关元件或只输出0或1的数据的元件或模块),讲解Arduino的基本读入操作。
这也是本文的主题,但是在这之前我先要强调以下几个问题。
一、首先了解几个点
数据类型:
boolean 布尔型:这个数据类型不是标准C的数据类型,C++里面有这个类型,它只占1bit空间,也就是仅0和1两个值
Serial.print();:
通过USB转串口向PC的串口工具发送数据,类似Serial.println(),但是Serial.println()会在每一次输出后再输出一个换行符,而Serial.print不会。因此,如果使用Serial.print(),你应该在需要的时候自己手动换行
二、电容式点动型触摸开关
我们要了解基本输入,我们首先要有一个能输出1bit数据的元件,这个可以是各类开关,也可以是其他元件模块,甚至你可以什么都不用买,仅仅用板载的3.3V引脚接13号口来模拟开关操作。
那么我们先对电容式点动型触摸开关做个了解,如下图
可以看到这上面有三个引脚,SIG\VCC\GND。与其他电路一样,VCC是电源,你可以接Arduino的3.3V或5V引脚,SIG是信号线,普通状态下,输出低电平(也就是0),当你用手去触摸它的圆圈区域时候,SIG会输出高电平(也就是1)。因此你可以将他看作一个开关。
但是需要注意:触摸圆圈区域的背面也是有效的,因此,如果你手没碰它,SIG依然输出高电平的话,你要考虑是否由于他的背面触碰到了什么能影响它的东西
三、实验代码
实验前,首先将VCC接Arduino的3.3V或5V引脚,SIG接13号引脚。r
然后打开ArduinoIDE,写入下列程序,保存后上传,再打开串口工具(串口工具的使用可以参考我前面的文章http://blog.csdn.net/qq_23937195/article/details/68945219)
#define TOUCH_SIG 13 //获取状态
boolean get_touch(){boolean touch_stat=0;touch_stat=digitalRead(TOUCH_SIG);//读入状态return touch_stat;
}void setup() {// put your setup code here, to run once:pinMode(TOUCH_SIG,INPUT); //设置13号端口为输入模式Serial.begin(115200);
}void loop() {boolean touch_stat;// put your main code here, to run repeatedly:Serial.print("\nrunning\nTouch Stat - ");touch_stat=get_touch();Serial.print(touch_stat);delay(1000);
}
如果你begin函数设置的波特率和串口工具右下角的波特率一致的话你应该能收到数据,这时,你可以触摸一下传感器的圆圈区域,你会发现原本输出的0变成了1,再松开手,他又会继续输出0. 注意:触摸圆圈区域的背面也是有效的,因此,如果你手没碰它,SIG依然输出高电平的话,你要考虑是否由于他的背面触碰到了什么能影响它的东西
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
