树莓派外设开发之玩传感器

参考:用树莓派玩传感器
作者:LEO-max
发布时间: 2021-02-24 16:30:46
网址:https://blog.csdn.net/zouchengzhi1021/article/details/114026649?spm=1001.2014.3001.5502

目录

  • 接线
  • 红外避障传感器
  • 声音传感器
  • 火焰传感器
  • 烟雾传感器
  • 超声波测距传感器

接线

VCC -> 1针脚
OUT -> 40针脚
GND -> 6针脚

红外避障传感器

C语言代码:

#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>#define AVOID    29int main(void)
{if (wiringPiSetup() == -1){printf("setup wiringPi failed !");return 1;}pinMode(AVOID, INPUT);while (1){if (digitalRead(AVOID) == 0){printf("阻挡\n");delay(500);}}return 0;
}

Python代码:

import RPi.GPIO as GPIO
import os
import timeGPIO.setmode(GPIO.BCM) #使用BCM编码方式GPIO_OUT = 21GPIO.setup(GPIO_OUT,GPIO.IN)while True:if GPIO.input(GPIO_OUT)==0: #当有障碍物时,传感器输出低电平,所以检测低电平print("There has a barrier")time.sleep(1)# exit(-1)#else:#print("OK")#time.usleep(1000)GPIO.cleanup()

声音传感器

声音传感器需要调一下电阻来调节传感器对声音的灵敏度

C语言:

#include <stdio.h>
#include <wiringPi.h>#define PCF       29int main (void)
{int value;int count = 0;wiringPiSetup ();pinMode(PCF,INPUT);while(1) {if (digitalRead(PCF) != 0){printf("Voice In!! \n");delay(500);}else{printf("ok\n");delay(500);} } return 0;
}        

Python:

#!/usr/bin/python
# encoding:utf-8
import RPi.GPIO as GPIO
import timeGPIO.setmode(GPIO.BCM)
pin_voice=21
GPIO.setup(pin_voice, GPIO.IN)
try:while True:status = GPIO.input(pin_voice)if status == True:print('检测到声音')else:print('正常')time.sleep(0.5)
except KeyboradInterrupt:GPIO.cleanup()

配合电灯程序来实现吹灭LED灯操作:

#include <stdio.h>
#include <wiringPi.h>#define PCF       29
#define LED       9int main (void)
{int value;int count = 0;wiringPiSetup ();// Setup pcf8591 on base pin 120, and address 0x48pinMode(PCF,INPUT);while(1) // loop forever{if (digitalRead(PCF) != 0){printf("Voice In!! \n");digitalWrite(LED,LOW);  //低电平灭return 0;}else{printf("ok\n");digitalWrite(8,HIGH);           //高电平亮delay(500);}}return 0;
}

火焰传感器

Python代码:

#!/usr/bin/python
# encoding:utf-8
import RPi.GPIO as GPIO
import timepin_fire=21
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin_fire, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:while True:status = GPIO.input(pin_fire)if status == True:print('检测到火')else:print('未检测到火')time.sleep(0.5)
except KeyboradInterrupt:GPIO.cleanup()        

C语言:

#include <stdio.h>
#include <wiringPi.h>#define PCF     29int main (void)
{wiringPiSetup ();// Setup pcf8591 on base pin 120, and address 0x48pinMode(PCF,INPUT);while(1) // loop forever{if (digitalRead(PCF) != 0){printf("检测到火\n");delay(500);}else{printf("无火\n");delay(500);}}return 0;
}

烟雾传感器

#!/usr/bin/python
# encoding:utf-8
import RPi.GPIO as GPIO
import timepin_fire=21
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin_fire, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:while True:status = GPIO.input(pin_fire)if status == True:print('没有检测到烟雾')else:print('检测到有烟雾')time.sleep(0.5)
except KeyboradInterrupt:GPIO.cleanup()

超声波测距传感器

#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>#define Trig    29
#define Echo    28void ultraInit(void)
{pinMode(Echo, INPUT);pinMode(Trig, OUTPUT);
}float disMeasure(void)
{struct timeval tv1;struct timeval tv2;long time1, time2;float dis;digitalWrite(Trig, LOW);delayMicroseconds(2);digitalWrite(Trig, HIGH);delayMicroseconds(10);      //发出超声波脉冲digitalWrite(Trig, LOW);while(!(digitalRead(Echo) == 1));gettimeofday(&tv1, NULL);           //获取当前时间while(!(digitalRead(Echo) == 0));gettimeofday(&tv2, NULL);           //获取当前时间time1 = tv1.tv_sec * 1000000 + tv1.tv_usec;   //微秒级的时间time2  = tv2.tv_sec * 1000000 + tv2.tv_usec;dis = (float)(time2 - time1) / 1000000 * 34000 / 2;  //求出距离

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xxx.jar 中没有主清单属性

xxx.jar 中没有主清单属性 springboot 中是可以通过 jar 将整个项目打包成一个fat jar 的, 这个大家都知道. <!-- 打包jar文件时&#xff0c;配置manifest文件&#xff0c;加入lib包的jar依赖 --><plugin><groupId>org.apache.maven.plugins</groupId>…

面试软件设计人员的方法,附面试题。我的面试注重实效

前段时间招聘。因为我一直在我的部门推行一些有效却被绝大多数中国公司忽视的开发理念&#xff0c;比如平级人事结构、测试驱动开发、制度化绩效、设计先行、迭发等等&#xff0c;所以招软件设计师非常困难。最终问题还算解决了吧。以下是我的面试总结。  一般来说&#xff0…

rtc校准算法_STM32实时时钟RTC日历算法

本帖最后由 shipeng1989 于 2019-5-16 08:32 编辑最近工作上需要利用STM32的自带RTC编写日历功能。其实对于公历万年历并不是很复杂&#xff0c;但是由于自带RTC断电后只能做32位二进制秒计数不能更新日期信息&#xff0c;要从根本上解决这个问题就需要编写一个算法可以根据计数…

全国计算机等级考试题库二级C操作题100套(第90套)

第90套&#xff1a; 函数fun的功能是&#xff1a;统计所有小于等于n(n>2)的素数的个数&#xff0c;素数的个数作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除&#xff0c;使程序得出正确的结果。 注意&#xff1a;源程序存放在考生文件夹下的BLANK1.C中…

智能合约从入门到精通:完整范例

简介&#xff1a;前几篇文章我们一直在讨论Solidity语言的相关语法&#xff0c;从本文开始&#xff0c;我们将介绍智能合约开发。今天我们将介绍一个完整范例。 此章节将介绍一个完整案例来帮助开发者快速了解合约的开发规范及流程。 注意&#xff1a; 在进行案例编写前&#x…

高考英语口语测试软件,练习英语口语的app有哪些

随着国际化的发展&#xff0c;英语越来越普遍。英语中口语也是很重要的成分之一。也是跟老外交流或者英语考试的重要考点之一。我们有很多方法锻炼口语。什么方法最快捷最有效方便&#xff1f;下面我们看看几款最受欢迎的英语口语练习app。练习口语的app1、口语侠一款非常实用的…

chkconfig命令会立即生效吗_UG绘制波纹管,整体变形命令你会用吗?

最近又有小伙伴问我波纹管怎么画了&#xff0c;这个以前教过大家&#xff0c;文章名字叫饮料吸管和排水管&#xff0c;看来这个名字不够专业&#xff0c;大家找不到啊&#xff0c;今天就来重新绘制一个&#xff0c;用一个新的方法&#xff0c;大家来额外学习一下&#xff0c;了…

Windows Phone 8 开发资源汇总

1) 提前下载安装包&#xff0c;离线安装https://dev.windowsphone.com/en-us/downloadsdk 2&#xff09;在线安装地址http://www.microsoft.com/en-us/download/details.aspx?id354713) 案例代码&#xff1a;Windows Phone Samples: learn through code http://code.msdn.micr…

vue中mixin 感觉很牛逼(父子组件融合成一个新组件)

vue中提供了一种混合机制--mixins&#xff0c;用来更高效的实现组件内容的复用。最开始我一度认为这个和组件好像没啥区别。。后来发现错了。下面我们来看看mixins和普通情况下引入组件有什么区别&#xff1f; 组件在引用之后相当于在父组件内开辟了一块单独的空间&#xff0c;…

C语言入门日记

参考&#xff1a;C语言入门日记 作者&#xff1a;9art0 发布时间&#xff1a;2020-08-30 16:37:46 网址&#xff1a;https://blog.csdn.net/GatoWong/article/details/108307915?spm1001.2014.3001.5501 C语言入门日记1.1.C语言搭建及system函数1.2.C语言的基础框架解释1.3.C程…

测试电视是不是4k的软件,怎么判断4K电视真假?教你快速检测的方法!

原标题&#xff1a;怎么判断4K电视真假?教你快速检测的方法!4K电视从进入市场之后一直都受到企业的力捧&#xff0c;随着电视企业对4K电视的大力度宣传和消费环境的逐渐成熟&#xff0c;越来越多的消费者开始认可4K电视&#xff0c;并在购机时表明首选4K电视。4K电视顾名思义就…

等压线上怎么画风向_战场上骑兵应该怎么拔刀?从清人佩刀为何总是刀柄向后说起...

在以前的文章《兵器谱|挂错地方死得快&#xff01;图说骑兵马刀的佩带与悬挂》&#xff0c;有读者问&#xff1a;清代的武将大多数都是刀柄朝右边&#xff0c;挂在屁股后面&#xff0c;算不算双附耳式悬挂法的一个变种呢&#xff1f;这样到底是不是真的有助于马上拔刀&#xff…

整合axis2到web项目中

1.将axis2.war发布到%TOMCAT_HOME%\webapps中&#xff0c;发布后的目录为%TOMCAT_HOME%\webapps\axis2 &#xff0c;该目录定义为%AXIS2_HOME%. 2.拷贝%AXIS2_HOME%\WEB-INF目录下所有内容到%项目App%\WEB-INF目录下。 3.修改%项目APP%\WEB-INF目录下的web.xml文件&#xff0c…

win10计算机跑分,鲁大师如何跑分_鲁大师跑分详细教程

很多小伙伴都知道鲁大师可以测试电脑的性能&#xff0c;就是大家称为的跑分&#xff0c;跑分的大小跟电脑的性能成正比&#xff0c;跑的越高性能越好。那么该如何在鲁大师里面进行跑分测试呢?其实只要打开性能测试就可以了&#xff0c;具体的教程下面一起来看看吧。鲁大师跑分…

第二十二篇 玩转数据结构——构建动态数组

1.. 数组基础数组就是把数据码成一排进行存放。Java中&#xff0c;数组的每个元素类型必须相同&#xff0c;可以都为int类型&#xff0c;string类型&#xff0c;甚至是自定义类型。数组的命名要语义化&#xff0c;例如&#xff0c;如果数组用来存放学生的成绩&#xff0c;那么命…

C语言函数日记

参考&#xff1a;C语言-函数-日记 作者&#xff1a;9art0 发布时间&#xff1a;2020-08-31 00:57:06 网址&#xff1a;https://blog.csdn.net/GatoWong/article/details/108314011?spm1001.2014.3001.5501 C语言-函数-日记2.1.函数概述一2.2.函数概述二2.3.函数无返回参数&…

python运行调出控制台_python.exe 和 pythonw.exe 的区别

(区分.py、.pyw、.pyc 文件)最近也在学习python&#xff0c;针对python中的一些问题做下记录&#xff0c;希望大家共同成长&#xff1b; Windows系统搭建好Python的环境后&#xff0c;进入Python的安装目录&#xff0c;大家会发现目录中有python.exe和pythonw.exe两个程序。 …

Vim的6种模式

Vim的6种模式|微刊 - 悦读喜欢Vim的6种模式大多数人都知道 Vim的两种模式, 正常模式和 插入模式,实际上 Vim有六种模式.- 正常模式 (Normal mode): 用户输入命令的模式- 可视化模式 (Visual mode): 可视化区块被高亮的时候- 选择模式 (Select mode): 类似可视模式 但是用用户输…

修复计算机u盘,u盘损坏怎么修复 u盘损坏修复方法

造成u盘损坏的原因有很多&#xff0c;比如我们在拔出u盘前&#xff0c;如果没有先将u盘弹出或者弹出的不彻底&#xff0c;就很可能造成u盘的损坏。u盘损坏就会导致计算机无法识别出u盘。那u盘损坏了能不能修复?如果能修复&#xff0c;那要怎么操作?下面就让我们一起来看看u盘…

.net 技术类网址

本人在工作学习中遇到的一些技术的网站&#xff0c;讲的也很详细&#xff0c;与各位共享&#xff0c;希望对您有帮助EF实体类&#xff1a; https://msdn.microsoft.com/zh-cn/library/gg696172(vvs.103).aspx数据库&#xff1a; https://docs.microsoft.com/zh-cn/sql/ssms/dow…