基于传感器开发套件玩转树莓派编程 pdf,树莓派控制传感器
文章目录前言1。实验设备。实验原理2.1电路图2.2接线图3。代码示例3.1 GCC 3 . 1 . 1实验效果结论前言中-Wall指令的作用好像没什么可说的。先开始今天的实验内容吧。
关注本专栏,和我一起学习树莓派开发板30的经典实验!
c语言代码,0基础分析!
你还在等什么?心动不如行动!为什么我不关注本专栏的代码仓库?覆盆子-做法
1.实验设备:草莓派开发板40p软排线T型转接板,面包板簧片开关传感器模块,若干双色LED跳线
顶部:簧片开关传感器;下部:双色LED
2.实验原理簧片开关传感器也是一种用来检测磁场的传感器。在常用的程控交换机、复印机、洗衣机、
冰箱、相机、消毒橱柜、门磁、窗磁、电磁继电器、电子衡器、液位计、煤气表、水
等产品得到了很好的应用。
个人理解:干簧管传感器的作用和霍尔元件类似,只是后者更小。
笔记本电脑里有一个霍尔元件,用来检测笔记本屏幕的开关,实现关闭和睡眠的功能。
是干簧管干簧管的缩写,是一种带触点的无源电子开关元件。它具有结构简单、体积小、易于控制的优点。
它的外壳通常是一个密封的玻璃管,里面装有两块铁质弹性簧片和一种叫做金属的惰性气体。通常,玻璃管中的两个簧片是分开的。
当一个磁性物质靠近玻璃管时,在磁力线的作用下,管内的两个簧片被磁化并相互吸引,簧片会被吸引在一起,从而使连接到节点的电路接通。外部磁力消失后,两个簧片因自身弹性而分离,电路断开。因此,干簧管作为一种受磁场信号控制的线路开关器件,可以作为计数、限位等场景的传感器(主要用于制作安防系统中的门磁、窗磁),也广泛应用于各种通讯设备中。在实际中,磁铁通常用来控制两个金属片是否连接,所以也叫“磁控管”。2.1电路图中的干簧管部分其实就是原理部分提到的密封玻璃管,里面有两个铁片。
当簧片开关部分接触到磁性物体时,两个铁片被吸引在一起,电路接通,DO引脚输出低电平。同时接通电路,D2 LED灯亮,检测不到磁性物体,两个铁片断开,电路断开,DO引脚直接接VCC,输出高电平。
2.2接线图类似于这个用一个传感器模块控制双色LED的实验,我们做过几次实验。它们基本上是以同样的方式连接的?
树莓派
t形适配器
簧片开关
GPIO 0
GPIO 17
防御命令(Defense Order)
5V
5V
VCC
地线
地线
地线
树莓派
t形适配器
双色LED
GPIO 1
GPIO 18
r(中间)
地线
地线
GND(-)
GPIO 2
GPIO 27
一般事务人员
接线完成后,PWM-LED指示灯会一直亮起。
即使没有打开控制程序,当簧片开关检测到磁性物体时,DO-LED指示灯也会亮起。
3.该代码示例与前面控制双色LED的代码相同。我们使用pinMode将簧片开关传感器设置为输入模式,并将红色和绿色led的引脚设置为输出模式。
当digitalRead检测到0(低电平)时,将双色LED设置为红色。当digitalRead检测到1(高电平)时,将双色LED设置为绿色。//干簧管控制双色LED实验。
#包含wiringPi.h
#包含stdio.h
#define makerobo_ReedPin 0 //簧片开关传感器引脚定义
#define makerobo_Rpin 1 //红色LED模块引脚定义
#define makerobo_Gpin 2 //绿色LED模块引脚定义
//双色LED控制功能
void double_colorLED(char* color)
{
pinMode(makerobo_Rpin,OUTPUT);//红色LED引脚设置为输出模式
pinMode(makerobo_Gpin,输出);//绿色LED引脚设置为输出模式
if(color== makerbored )//点亮红色LED灯
{
digitalWrite(makerobo_Rpin,高);
digitalWrite(makerobo_Gpin,低);
}
else if(color== makerobogreen )//打开绿色LED。
{
digitalWrite(makerobo_Rpin,低);
digitalWrite(makerobo_Gpin,高);
}
其他
printf(“双色LED错误”);
}
int main()
{
//当初始连接失败时,将消息打印到屏幕上。
if(wiringPiSetup()==-1){
printf(安装wiringPi失败!);
返回1;
}
//簧片开关传感器引脚设置为输入模式。
pinMode(makerobo_ReedPin,INPUT);
double _ colorLED( makeroboGREEN );//点亮绿色LED模块
while(1){
//簧片开关传感器抖动消除处理
if(0==digital read(make robo _ reed pin))
{//簧片开关传感器检测到磁性物质
延迟(10);//延迟去抖动
if(0==digital read(make robo _ reed pin)){
double _ colorLED( makeroboRED );//点亮红色LED灯
printf(检测到磁性物质!\ n’);//打印出检测到的磁性物质。
}
}
else if(1==digital read(make robo _ reed pin))
{//簧片开关传感器检测不到磁性物质。
延迟(10);//延迟去抖动
if(1==digital read(make robo _ reed pin)){
而(!digital read(make robo _ reed pin));
double _ colorLED( makeroboGREEN );//点亮绿色LED灯
printf(未检测到磁性物质!\ n’);//打印出没有检测到磁性物质
}
}
}
返回0;
}
关于函数更详细的解释,可以参考之前实验6~8的博客?列链接
3.1编译代码在linux控制台下输入以下语句,编译生成可执行文件TEST。
gcc -Wall 10簧片开关中-Wall指令的作用。c-o测试-lwiringpi 3.1.1在上一篇博客中,我在编译代码时没有使用-wall指令,但程序仍然编译成功。
实际上-Wall指令的作用是让GCC编译器显示程序的警告。
当编译器检测到程序中有错误时,它将终止编译。当编译器在程序中检测到警告时,它仍然可以编译并生成可执行文件。在windows系统的VS编译器下,也有两种报错方式:错误/警告。
之前在Linux中不明白两者的区别,导致我认为gcc编译器不支持用==直接比较常量字符串(然后改成strcmp,当然是对的)
如果我们在编译时删除-Wall指令,这两个警告将不会显示。
想了解更多关于-Wall指令的信息,你可以参考这个dalao博客来了解一二?入口
3.2实验结果。/TEST运行可执行文件以查看实验结果。
检测到磁性物质时,屏幕会打印检测到的磁性物质!
未检测到时,打印未检测到磁性材料!
结论这个实验到此结束。希望对你学习草莓派的操作有帮助。
高数和大物欠下的学校学习债终于补上了。你能摸到它吗?从高处或远处观看
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。