树莓派控制开关,树莓派倾斜传感器
文章目录前言1。实验设备。实验原理2.1实验接线2.2物理接线图3。代码示例3.1部分代码直接用`==比较字符串解释去抖动操作3.2 Linux编译运行代码3.3运行效果结论前言昨天完成了树莓Pi发起的博客,本专栏的模块都是完整的!
欢迎将本专栏推荐给其他有兴趣学习草莓派的朋友!
从这个博客开始,Geany编译器的简单操作就不描述了,所有操作都由linux命令行解决。
关注本专栏,和我一起学习树莓派开发板30的经典实验!
c语言代码,0基础分析!
你还在等什么?心动不如行动!为什么我不关注本专栏的代码仓库?覆盆子-做法
1.实验设备:草莓派开发板、40p柔性排线、T型转接板、面包板倾斜传感器模块、双色LED模块、一堆跳线。
上部:倾斜传感器;下部:双色LED
2.实验原理在倾斜开关中,有一个金属球,用来检测小角度的倾斜。倾斜开关模块的结构是具有双向传输的球形倾斜开关。只要倾斜的力满足条件,开关就会通电,从而输出低电平信号。
2.1实验接线草莓派
t形适配器
倾斜开关
GPIO 0
GPIO 17
做
5V
5V
VCC
地线
地线
地线
树莓派
t形适配器
双色LED
GPIO 1
GPIO 18
r(中间)
地线
地线
GND(-)
GPIO 2
GPIO 27
一般事务人员
2.2物理接线图
连接电缆时,倾斜开关模块的PWR-LED指示灯亮起。
当检测到倾斜角变化时,Do-LED也将点亮,Do引脚将输出低电平,对应值为0。这个原理将在后续的编程中使用。
3.代码示例以下是C语言的示例代码。
//倾斜传感器实验
#包含wiringPi.h
#包含stdio.h
#define makerobo_TiltPin 0 //倾斜传感器引脚定义
#define makerobo_Rpin 1 //红色LED模块引脚定义
#define makerobo_Gpin 2 //绿色LED模块引脚定义
//双色LED控制功能
void double_colorLED(char* color)
{
pinMode(makerobo_Rpin,OUTPUT);//设置为输出模式
pinMode(makerobo_Gpin,输出);//设置为输出模式
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(void)
{
//当初始连接失败时,将消息打印到屏幕上。
if(wiringPiSetup()==-1){
printf(安装wiringPi失败!);
返回1;
}
//倾斜传感器引脚设置为输入模式
pinMode(makerobo_TiltPin,INPUT);
double _ colorLED( makeroboGREEN );
while(1){
//如果没有检测到倾斜,输出高电平1
//检测到后输出高电平0。
if(0==digital read(make robo _ tilt pin))
{//倾斜传感器倾斜。
延迟(10);//倾斜传感器消除抖动。
if(0==digital read(make robo _ tilt pin)){
double _ colorLED( makeroboRED );//点亮红色LED灯
printf(倾斜!\ n’);//打印出来有倾斜。
}
}
else if(1==digital read(make robo _ tilt pin))
{//倾斜传感器没有倾斜。
延迟(10);
if(1==digital read(make robo _ tilt pin)){
而(!digital read(make robo _ tilt pin));
double _ colorLED( makeroboGREEN );//点亮绿色LED灯
printf(不倾斜!\ n’);//打印没有歪斜。
}
}
}
返回0;
}3.1部分代码解释了去抖动操作。因为倾斜开关和触摸开关都是物理结构,所以去抖动操作需要一定的时间延迟。
用==(color==makeroboGREEN )直接比较字符串这里用的是==直接比较字符串。以前我觉得这样写不对,因为Linux-gcc报错了(但是可以编译可执行文件,正常运行)
其实这个在VS下可以正常工作,不会报错。
个人认为,这种直接传入字符串的操作,实际上是在函数中创建一个参数颜色,接收传入的常量字符串,然后==比较字符串在内存中的地址,而不是直接比较字符串本身。
这段代码中包含的wiringPi函数在之前的博客中已经解释过了。详见实验06?入口
有不明白的可以在评论区提出来!
3.2 Linux编译运行代码。输入下面的语句来编译这段代码并生成可执行文件TEST。
Gcc-wall07tiltswitch.c-o测试-lwiringpi。/测试运行此文件,并按CTRL+C终止程序。
3.3操作效果抬起倾斜开关,LED变为绿色。放下后就变成默认红灯了。
结论这个实验到此结束!感觉这个倾斜开关就是手机里的青春版陀螺仪。
目前我设想在以后的汽车实验中可以用来判断汽车是上坡还是平坡。如果是上坡,电机的输出会增加。嗯,应该是这样的!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。