树莓派 开关控制,树莓派按钮控制程序

  树莓派 开关控制,树莓派按钮控制程序

  文章前言1。实验设备。实验原理2.1电路图2.2接线图3。代码示例3.1代码思想解释参数 clb _ tmp 问题3.2linux运行代码尾声今天折腾vim编辑器很久了。我只是想实现在vim编辑器里可以把代码复制到windows电脑上,方便我写博客,但是我根本做不到。我放弃了,还是用树莓Pi系统复制吧。

  关注本专栏,和我一起学习树莓派开发板30的经典实验!

  c语言代码,0基础分析!

  你还在等什么?心动不如行动!为什么我不关注本专栏的代码仓库?覆盆子-做法

  1.实验设备:草莓派开发板、40p柔性排线、T型转接板、面包板振动传感器模块、双色LED模块、一堆跳线。

  顶部:双色LED模块;下部:振动传感器模块

  振动传感器模块与倾斜传感器模块非常相似,通过物理结构来判断当前状态。它也有PWR-LED和DO-LED。

  2.实验原理振动开关传感器中采用常闭式振动传感器,可用于跟踪振动触发效果,如防盗报警、地震报警、智能汽车等。与常开型振动传感器相比,常闭型振动传感器的触发时间更长,可用于驱动继电器模块。

  该模块采用常开型高灵敏度振动开关。当开关静止时,它处于开路断开状态。当受到外力触动,达到相应的地震力时,或者移动速度达到适当的离心力时,导电针就会瞬间导通,处于瞬间导通状态。当外力消失时,开关返回到开路断开状态。可用于各种振动触发、防盗报警、智能汽车、电子积木等。传感器M3专门配有固定安装孔,方便调整方向和固定。它采用宽电压LM393比较器,信号干净,波形好,驱动能力强,超过15mA。它配有一个可调节的精密电位计来调节灵敏度。

  在这个实验中,双色LED模块连接到Raspberry Pi作为指示。或者当振动传感器被轻敲时,它将打开,双色LED将闪烁红色。再次点击它,LED就会变成绿色——每次轻按或轻按,两种颜色交替闪烁。

  2.1电路图

  2.2接线图Raspberry Pi

  t形适配器

  振动开关

  GPIO 0

  GPIO 17

  做

  5V

  5V

  VCC

  地线

  地线

  地线

  树莓派

  t形适配器

  双色LED

  GPIO 1

  GPIO 18

  r(中间)

  地线

  地线

  GND(-)

  GPIO 2

  GPIO 27

  一般事务人员

  因为接口和倾斜开关一模一样,接线方式也一样。

  物理接线图就不在这里留了。与倾斜开关不同,连接振动开关后,两个指示灯都会亮起。当传感器振动时,DO-LED将闪烁。

  3.代码示例相同,给出C语言的代码示例。

  这里的wiringPi库函数已经在最近两次实验中使用过了。详见实验六的解释。

  #包含wiringPi.h

  #包含stdio.h

  #定义makerobo_VibratePin 0 //振动传感器

  #定义makerobo_Rpin 1 //红色LED引脚

  #定义makerobo_Gpin 2 //绿色LED引脚

  int clb _ tmp=0;//全局变量用于比较

  //双色LED控制功能

  void double_colorLED(int color)

  {

  pinMode(makerobo_Rpin,OUTPUT);//设置为输出模式

  pinMode(makerobo_Gpin,输出);//设置为输出模式

  If (0==color) //点亮红色LED灯

  {

  digitalWrite(makerobo_Rpin,高);

  digitalWrite(makerobo_Gpin,低);

  }

  Else if (1==color) //打开绿色LED。

  {

  digitalWrite(makerobo_Rpin,低);

  digitalWrite(makerobo_Gpin,高);

  }

  其他

  printf(Makerobo双色LED错误\ n );//双色LED错误

  }

  //打印信息,打印出振动传感器的状态。

  void makerobo_Print(int x)

  {

  如果(x!=clb_tmp)

  {

  如果(x==0)

  printf(.make robo ON \ n );

  如果(x==1)

  printf(关闭机器人.\ n’);

  clb _ tmp=x;//重置x

  }

  }

  int main()

  {

  int clb _ status=0;//状态值

  int clb _ tmp=0;//比较值

  int clb _ value=1;//当前值

  //当//wiringPi无法初始化连接时,将消息打印到屏幕上。

  if(wiringPiSetup()==-1){

  printf(安装wiringPi失败!);

  返回1;

  }

  //振动传感器引脚设置为输入模式

  pinMode(makerobo_VibratePin,INPUT);

  while(1){

  clb _ value=digital read(make robo _ vibrate pin);//获取振动感应值

  if (clb_tmp!=clb _值)

  {//振动传感器的输出值改变。

  clb _ status//振动传感器状态加1。

  if (clb_status 1)

  {

  clb _ status=0;//判断状态发生变化,如果变为2,则重置为0。

  }

  double _ color led(clb _ status);//控制双色LED模块

  make robo _ Print(clb _ status);//打印出状态

  延时(1000);//延迟1s

  }

  }

  返回0;

  }3.1代码思想解释clb_value接收振动传感器的返回值,每次振动返回值都会发生变化。

  value的初始值为1。振动时接收到的返回值为0,与tmp不同,所以双色LED的状态、颜色发生变化。如果没有检测到振动,返回值为1,与tmp相同。双色LED的颜色不变。clb_tmp问题。void makerobo_Print(int x)函数中调用的其实是全局变量下的clb_tmp。

  而在main函数中调用int clb _ tmp=0;//比较值,一个单独定义的局部变量,与全局tmp无关,所以makerobo_Print函数中clb_tmp函数的操作不影响main和status代码的比较。

  为了不混淆全局变量和局部变量,建议在主函数clb_tmp1中重命名tmp。

  3.2linux运行代码gcc-wall 08振动开关。c-o测试-lwiringpi

  每次晃动传感器,双色LED就会变色,屏幕上会打印出开和关(每次晃动一次,打印一次)。

  按CTRL+C终止程序

  与倾斜开关的实时变化不同,振动开关的变化不是实时的,而是需要新的振动来触发它(就像一个按钮)。

  假设我们想把它用作报警装置。假设振动状态在一定时间内变化多次,我们可以发出信号报警,说明你的门(或者什么东西)被移动了。

  结论与之前的倾斜开关相比,本次实验的代码更加复杂。希望我的解释对你有帮助!

  谢谢你看到了结局!如果对你有帮助,请点一个?非常感谢!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 树莓派pip3换源,树莓派pi3b+
  • 树莓派网络配置文件,树莓派上网设置
  • 基于树莓派人脸识别,基于树莓派的人脸识别技术
  • 树莓派安装系统,树莓派 电视系统
  • 树莓派4b温控风扇安装方法,树莓派4散热风扇安装
  • 树莓派数据采集卡,以树莓派为例的数据采集过程介绍
  • 树莓派4 b,玩转树莓派4B新手入门手册pdf
  • 树莓派安装拼音输入法,树莓派中文输入法安装
  • 树莓派tcp通信,树莓派多线程编程
  • 树莓派4b刷ubuntu,树莓派4b ubuntu18.04
  • 树莓派i2s接口,树莓派增加i2c
  • 树莓派检测不到i2c设备,树莓派温度监控
  • 树莓派4b 软路由,树莓派4b做软路由能发挥多少宽带
  • 树莓派打开wifi的命令,树莓派命令行连接wifi
  • can总线 树莓派,树莓派和单片机串口通信
  • 留言与评论(共有 条评论)
       
    验证码: