树莓派的外设开发---树莓派中的wiringPi库

news2025/1/10 11:26:53

在树莓派中安装wiringPi库

wiringPi库其实已经很熟悉了,在香橙派中大量使用过,这个库中集成了很多使用的功能性函数。

现在在树莓派上也安装wiringPi库:

1. wget https://project-downloads.drogon.net/wiringpi-latest.deb
2. sudo dpkg -i wiringpi-latest.deb

安装完成后,使用“gpio readall” 来测试是否安装完成:

wiringPi库安装完成 !

wiringPi的使用

对于wiringPi的使用,其实和香橙派中是一样一样的,简单总结一下:

  • 要记得包含库“#include <wiringPi.h>
  • 使用前要初始化“wiringPiSetup () 
  • 使用“pinMode (XXX, OUTPUT/INPUT)”设置IO口输入输出模式
  • 使用“digitalWrite (XXX, LOW/HIGH) ”写高低电平
  • 使用“digitalRead(XXX) ”读电平
  • 编译时加上“-lwiringPi ”链库

写一个简单的距离接近报警的demo:

将蜂鸣器的IO连接到物理引脚7;HC-SR04的Trig和Echo分别连到物理引脚11和13

dist_test.c:
#include <stdio.h>
#include <wiringPi.h>
#include <sys/time.h>

#define BEEP 7
#define Trig 0
#define Echo 2

void startHC() //先要给Trig一个至少10us/ms的高电平方波
{
	digitalWrite (Trig, LOW) ;
	delay(5); 
	digitalWrite (Trig, HIGH) ;
	delay(5);
	delay(5);
	digitalWrite (Trig, LOW) ;
}

int main (void)
{
	double diffTime;
	double dist;
	struct timeval startTime;
	struct timeval stopTime;

	wiringPiSetup () ; //初始化wiringPi库
	pinMode (Trig, OUTPUT); //设置输入输出模式
	pinMode (Echo, INPUT);
	pinMode (BEEP, OUTPUT);

	digitalWrite (Trig, LOW) ; //IO口写数据
	digitalWrite (Echo, LOW) ;

	while(1){
		startHC();
		while(digitalRead(Echo) == 0);//程序会卡在这里直到Echo变高的一瞬间
		gettimeofday(&startTime,NULL);
		while(digitalRead(Echo) == 1); //程序会卡在这里直到Echo变低的一瞬间
		gettimeofday(&stopTime,NULL);

		diffTime = 1000000*(stopTime.tv_sec - startTime.tv_sec) + (stopTime.tv_usec - startTime.tv_usec);
		dist = 0.034 * diffTime * 0.5;

//		printf("time = %f us\n",diffTime);
//		printf("dist = %f\n",dist);

		if(dist < 10){
			digitalWrite (BEEP, LOW) ;
			delay(100);
			digitalWrite (BEEP, HIGH) ;
		}else{
			digitalWrite (BEEP, HIGH) ;
		}

	}


	return 0;
}
编译语句:
gcc dist_test.c -lwiringPi

之前香橙派的时候好像要链好多库来着: 

gcc XXX.c -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt

代码成功运行!

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

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

相关文章

VLAN综合实验

目录 一、实验拓扑 二、实验要求 三、实验步骤 1、交换机配置vlan 1&#xff09;SW1配置 2&#xff09;SW2配置 3&#xff09;SW3配置 2、路由器配置子接口、DHCP 配置结果&#xff1a; PC1-6IP地址 测试 一、实验拓扑 二、实验要求 1、pc1和pc3所在接口为access&a…

STM32 Flash

FLASH简介 Flash是常用的用于存储数据的半导体器件&#xff0c;它具有容量大&#xff0c;可重复擦写&#xff0c;按“扇区/块”擦除、掉电后数据可继续保存的特性。 常见的FLASH主要有NOR FLASH和NAND FLASH两种类型。NOR和NAND是两种数字门电路&#xff0c;可以简单地认为FL…

10个好用的Mac数据恢复软件推荐—恢复率高达99%

如果您正在寻找最好的 Mac 数据恢复软件来检索意外删除或丢失的文件&#xff0c;那么这里就是您的最佳选择。 我们理解&#xff0c;当您找不到 Mac 计算机或外部驱动器上保存的一些重要文件时&#xff0c;会感到多么沮丧和绝望。这些文件非常珍贵&#xff0c;无论出于何种原因…

基于springboot实现医院信管系统项目【项目源码+论文说明】

基于springboot实现医院信管系统演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#x…

验证码常见安全问题与测试方法汇总

系统使用验证码主要是意图一般有两个个目的&#xff0c;即辅助身份验证&#xff08;短信或邮箱验证码&#xff09;和防止攻击者利用自动化脚本恶意攻击网站&#xff08;数字&#xff0c;图片&#xff0c;视频&#xff0c;行为式等验证码&#xff09;。 验证码的生命周期 验证码…

会议剪影 | 思腾合力受邀出席第四届长三角文博会并作主题演讲

以“担当新使命:长三角文化产业的力量”为主题的「第四届长三角国际文化产业博览会」于2023年11月16日-19日在国家会展中心&#xff08;上海&#xff09;成功举办。思腾合力作为行业领先的人工智能基础架构解决方案商出席本次盛会。 此次展会的面积首次超过10万平米&#xff0c…

Flask Web开发:数据库

目录 在虚拟环境中安装Flask-SQLAlchemy&#xff1a; 一、配置 数据库配置示例&#xff1a; 二、定义模型 Role 和 User 模型代码&#xff1a; &#xff08;1&#xff09;常用的 SQLAlchemy 列类型&#xff1a;​编辑 &#xff08;2&#xff09;常用的 SQLAlchemy 列选项…

AD9361寄存器功能笔记之本振频率设定

LO的产生过程如图&#xff1a; 各个模块都有高灵活性。 1、参考时钟即是AD9361全局参考时钟&#xff0c;可以是外接晶振的片上DCXO&#xff0c;或是外部输入的有驱动能力的时钟信号。根据FM-COMMS5的设计&#xff0c;参考时钟可以使用时钟Buffer 40MHz晶振构成的参考频率源。 …

基于springboot实现智能热度分析和自媒体推送平台系统项目【项目源码】计算机毕业设计

基于springboot实现智能热度分析和自媒体推送平台演示 系统开发平台 在该自媒体分享网站中&#xff0c;Eclipse能给用户提供更多的方便&#xff0c;其特点一是方便学习&#xff0c;方便快捷&#xff1b;二是有非常大的信息储存量&#xff0c;主要功能是用在对数据库中查询和编…

【Java基础】Java导Excel攻略

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

BUUCTF [BJDCTF2020]鸡你太美 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。来源&#xff1a; https://github.com/BjdsecCA/BJDCTF2020 密文&#xff1a; 下载附件&#xff0c;解压得到两个.gif图片。 第一个gif图片&#xff1a; 第二个gif图片无法打开。…

Linux常用命令——builtin命令

在线Linux命令查询工具 builtin 执行shell内部命令 补充说明 builtin命令用于执行指定的shell内部命令&#xff0c;并返回内部命令的返回值。builtin命令在使用时&#xff0c;将不能够再使用Linux中的外部命令。当系统中定义了与shell内部命令相同的函数时&#xff0c;使用…

禁止linux shell 终端显示完整工作路径,如何让linux bash终端不显示当前工作路径

在操作linux时&#xff0c;默认安装的linux终端会显示当前完整的工作目录&#xff0c;如果目录比较短还是可以接收&#xff0c;如果目录比较长&#xff0c;就显得比较别扭&#xff0c;操作起来不方便&#xff0c;因此需要关闭这种功能。 要关闭这个功能&#xff0c;请按如下步骤…

Conditional GAN

Text-to-Image 对于根据文字生成图像的问题&#xff0c;传统的做法就是训练一个NN&#xff0c;然后输入一段文字&#xff0c;输出对应一个图片&#xff0c;输出图片与目标图片越接近越好。存在的问题就是&#xff0c;比如火车对应的图片有很多张&#xff0c;如果用传统的NN来训…

NX二次开发UF_CAM_ask_lower_limit_plane_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;里海NX二次开发3000例专栏 UF_CAM_ask_lower_limit_plane_data Defined in: uf_cam_planes.h int UF_CAM_ask_lower_limit_plane_data(tag_t object_tag, double origin [ 3 ] , double normal [ 3 ] ) overview 概述 Query …

人工智能的广泛应用与影响

目录 前言1 智能手机与个人助手2 医疗保健3 自动驾驶技术4 金融领域5 教育与学习6 智能家居与物联网7 娱乐与媒体8 环境保护结语 前言 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是当今科技领域的璀璨明星&#xff0c;它不仅在技术创新方面掀起了…

适合小白的超详细yolov8环境配置+实例运行教程,从零开始教你如何使用yolov8训练自己的数据集(Windows+conda+pycharm)

目录 一、前期准备所需环境配置 1.1. 虚拟环境创建 1.2 下载yolov8源码&#xff0c;在pycharm中进行配置 1.2.1 下载源码 1.2.2 在pycharm终端中配置conda 1.3 在pycharm的terminal中激活虚拟环境 1.4 安装requirements.txt中的相关包 1.5 pip安装其他包 1.6 预训练…

如果在手机没有root的情况下完成安卓手机数据恢复

您是否不小心从安卓设备中删除了重要数据&#xff1f; 担心如何取回您的照片、视频和文档&#xff1f; 有时您可能会不小心删除重要数据并使用安卓 root方法取回文件。 许多用户不喜欢根植他们的安卓设备&#xff0c;因为这是一种复杂的方法。 在本指南中&#xff0c;我们将向您…

[Spring Cloud] Nacos 实战 + Aws云服务器

文章目录 前言一、拥有一台Aws Linux服务器1.1、选择Ubuntu版本Linux系统1.2、创建新密钥对1.3、网络设置1.4、配置成功&#xff0c;启动实例1.5、回到实例区域1.6、进入具体的实例1.7、设置安全组 二、在Mac上连接Aws云服务&#xff0c;并安装配置JDK112.1、解决离奇的错误2.2…

ROS navigation栅格地图原点位置如何确定?

背景 利用ros进行导航时&#xff0c;生成一张栅格地图&#xff0c;包含gridMap.pgm和gridMap.yaml。现在想要将栅格地图及轨迹在其他应用上显示&#xff0c;需要确定地图的坐标系原点。 gridMap.yaml格式 image: gridMap.pgm  #文件名 resolution: 0.20000  #地图分辨率 …