Orangepi Zero2使用外设驱动库wiringOP驱动蜂鸣器

news2024/11/18 1:42:04

 

目录

一、安装外设驱动库

1.1 wiringPi外设SDK安装:

二、使用wiringOP库驱动蜂鸣器

2.1 蜂鸣器的硬件连接:

2.2 使用wiringOP库实现蜂鸣器滴滴响:

2.3 设置vim代码显示格式:


一、安装外设驱动库

1.1 wiringPi外设SDK安装:

方式一:
git clone https://github.com/orangepi-xunlong/wiringOP 			//下载源码
cd wiringOP 													//进入文件夹
sudo ./build clean 												//清除编译信息
sudo ./build 													//编译
gpio readall													//查看外设库是否安装成功
    
方式二:
通过windows浏览器打开https://github.com/orangepi-xunlong/wiringOP
把压缩包通过xterm传到开发板解压 unzip xxx.zip
cd xxx
sudo ./build
gpio readall

验证指令: gpio readall 如下方所示,外设库就完成安装了

二、使用wiringOP库驱动蜂鸣器

2.1 蜂鸣器的硬件连接:

  • 蜂鸣器I/O口对应的物理引脚的3号,其实对应的wPi的第0号

2.2 使用wiringOP库实现蜂鸣器滴滴响:

#include <stdio.h>
#include <wiringPi.h>
#include <unistd.h>

#define BEEP 0							//设置针脚0为蜂鸣器控制引脚

int main (void)
{
	wiringPiSetup();					//初始化wiringPi库
	pinMode (BEEP, OUTPUT) ;			//设置蜂鸣器IO口为输出模式

	while(1){
		digitalWrite (BEEP, LOW);		//设置蜂鸣器IO口输出低电平蜂鸣器响	
		usleep(300000);					//延时300ms
		//sleep(1);
		digitalWrite (BEEP, HIGH);		//设置蜂鸣器IO口输出高电平蜂鸣器不响
		usleep(300000);					//延时300ms
		//sleep(1);
	}

	return 0;
}

 代码写完之后我们编译,我们直接用gcc编译会出错:

还需要链接库:-lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt,但是每次写这么一大串很麻烦,所以可以写一个脚本:build.sh

shell脚本应该适用于各种程序的名字:
    
$0		./build.sh
$1		beep.c
    
shell脚本处理参数可以通过$来处理,这里的$1就是要编译的文件
gcc $1 -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt

我们创建了一个脚本,往脚本里面写入了内容,但是发现脚本无法运行,原因是我们新创建的脚本是没有权限的

需要使用指令chmod +x build.sh来赋予它执行的权限

 此时按照对应的格式进行编译,就生成了可执行程序a.out

注意!生成的a.out可执行程序,需要使用sudo超级用户权限来运行,然后输入密码之后我们就听到了蜂鸣器滴滴响了

 我们可以看到蜂鸣器对应的GPIO的Mode就变成了OUT输出模式

2.3 设置vim代码显示格式:

手动对齐的Tab和自动对齐从8个空格设置成4个空格&自动显示行号的方法:

sudo vim /etc/vim/vimrc
    
set tabstop=4 		//设置tab键缩进4个空格
set shiftwidth=4 	//设置批量对齐时候的tab键空格数为4
set nu 				//这样用vi打开文件的时候会自动显示行号

我们可以看到修改之后的代码,我们在写代码的时候舒服多了

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

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

相关文章

讨论stl链表

讨论链表 list迭代器失效list的模拟实现创建结点类链表迭代器完成实现代码 list与vector 链表是一个序列容器&#xff0c;在任意位置都可以用常数时间插入或者删除&#xff0c;并且可以在两个方向进行迭代。 list迭代器失效 迭代器失效指迭代器所指向的结点无效&#xff0c;即该…

windows@局域网或蓝牙文件传输@共享文件夹@就近共享

文章目录 windows系统下的简单共享文件方案&#x1f47a;就近共享设置共享文件夹(推荐)方法1:使用shrpubw程序引导创建方法2:使用图形界面创建右键设置共享文件夹 查看所有已经共享的文件夹&#x1f47a;停止某个文件的共享 共享文件夹的访问控制补充匿名访问问题&#x1f60a;…

JFrame和JScrollPanel布局初步使用

还不是很了解&#xff0c;做了几个程序&#xff1b; import java.awt.Container; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.border.EmptyBorder;public class pa1 {public static void main(String[] agrs){JF…

一个多文件工程的例子

代码; main.c #include <stdio.h> #include "add.h" #include "sub.h"int main(void) {int a10,b12;float x1.23456,y9.87654321;printf("int ab IS :%d\n",add_int(a,b));printf("int a-b IS :%d\n",sub_int(a,b));printf(&q…

STM32 中断和事件的区别

原文 简述 上图蓝线为中断的处理过程&#xff0c;红线是事件处理过程。 区别 中断&#xff08;Interrupts&#xff09;&#xff1a; 简述&#xff1a;当发生中断请求后&#xff0c;CPU暂停当前任务&#xff0c;进入对应的中断服务函数&#xff0c;完成后再回到原来暂停的地方…

IP地址专用SSL证书申请指南

IP地址SSL证书是一种专门设计用于IP地址的SSL/TLS证书&#xff0c;部署IP地址SSL证书可以实现IP地址HTTPS加密。 一&#xff1a;前提条件 1&#xff1a;申请IP地址SSL证书,必须拥有这个IP地址的管理权限 2 &#xff1a;80、443、22、端口中任一个可以短暂开放 二&#xff1…

rtthread stm32h743的使用(十)i2c设备使用

我们要在rtthread studio 开发环境中建立stm32h743xih6芯片的工程。我们使用一块stm32h743及fpga的核心板完成相关实验&#xff0c;核心板如图&#xff1a; 1.建立新工程&#xff0c;选择相应的芯片型号及debug引脚及调试器 2.打开cubemux&#xff0c;设置外部时钟及串口外设…

Java文件操作小项目-带GUI界面统计文件夹内文件类型及大小

引言 在Java编程中&#xff0c;文件操作是一项基本且常见的任务。我们经常需要处理文件和文件夹&#xff0c;例如读取、写入、删除文件&#xff0c;或者遍历文件夹中的文件等。本文将介绍如何使用Java的File类和相关API来统计一个文件夹中不同类型文件的数量和大小。 准备工作…

气膜体育馆的使用年限有多少—轻空间

气膜体育馆作为一种新兴的建筑形式&#xff0c;因其独特的结构和功能而备受青睐。它不仅在建设速度、成本控制和环保方面具有显著优势&#xff0c;还在使用年限上展现出良好的性能。轻空间将探讨气膜体育馆的使用年限及其影响因素。 气膜体育馆的基本结构 气膜体育馆主要由膜材…

我教你做不花钱的SEO

我教你做不花钱的SEO **SEO&#xff08;搜索引擎优化&#xff09;投入不一定有产出**不花钱的SEO标题标签元描述标题标签URL结构图片优化内容优化内部链接外部链接结构化数据页面速度优化移动友好性社交媒体整合 结论 SEO&#xff08;搜索引擎优化&#xff09;投入不一定有产出…

Sql审核平台Archery的搭建和简单配置

Sql审核平台Archery的搭建和简单配置 Archery是一个开源的Web应用&#xff0c;基于Python开发&#xff0c;利用Flask作为后端框架&#xff0c;前端采用Vue.js&#xff0c;构建了一个现代化的数据操作界面。提供了SQL审核、数据查询、报表生成等功能&#xff0c;同时支持多种数据…

使用 frida hook Android app

Frida&#xff1a; 一种基于动态插装&#xff08;dynamic instrumentation&#xff09;技术的工具包&#xff0c;它主要是为测试人员、开发人员和逆向工程爱好者创建&#xff0c;在目标程序运行时&#xff0c;允许用户将 JavaScript代码注入其中&#xff0c;实现动态修改和调试…

if action和Switch之间该怎么选择?

1. Switch 2. If及If Action Subsystem 3.结论 元素很多&#xff0c;用switch 元素少&#xff0c;用if或switch 如果...很多&#xff0c;用if

Go语言之集合类型

个人网站&#xff1a; http://hardyfish.top/ 免费书籍分享&#xff1a; 资料链接&#xff1a;https://url81.ctfile.com/d/57345181-61545511-81795b?p3899 访问密码&#xff1a;3899 免费专栏分享&#xff1a; 资料链接&#xff1a;https://url81.ctfile.com/d/57345181-6…

姚期智、张亚勤、薛澜、Stuart Russell、Max Tegmark,DeepMind研究员等共话全球AI治理丨大会回顾...

为什么AI安全已迫在眉睫&#xff1f;如何构建全球范围内的合作&#xff1f;民众该如何参与到其中&#xff1f;未来的AI系统将是什么样的&#xff1f; 2024年6月15日&#xff0c;智源大会第二天&#xff0c;多位AI安全领域专家进行圆桌讨论&#xff0c;连接中国北京和美国加利福…

从概念到现实:数字孪生技术在智慧充电站的实践

在电动汽车蓬勃发展的今天&#xff0c;充电基础设施的智能化升级成为了推动新能源汽车产业跃进的关键一环。数字孪生技术&#xff0c;作为智能制造和工业4.0的核心&#xff0c;正在逐渐渗透到智慧充电站的每一个角落——从提高能源效率到增强用户体验&#xff0c;为智慧充电站的…

DockerDesktop中mysql容器无法使用Exec窗口解决

解决前 需要登陆&#xff1a; 登陆后需要升级才能启动调试模式 需要订阅才能使用 解决后&#xff1a; 正常使用 解决方法&#xff1a; 不要在DockerDesktop中启动mysql容器&#xff0c;使用命令行启动 启动命令 docker run --name mysql_docker -e MYSQL_ROOT_PASSWORD12345…

MySQL递归查询(with recursive)

背景 日常开发中经常会有那种 阶梯式 数据&#xff0c;比如做地图、菜单&#xff0c;裂变给上级、上上级分红等等这样的需求的时候 你需要找个一个对象的 上级&#xff0c;上上级&#xff0c;上上上级 建了一张很容易理解阶级的表&#xff0c;一目了然 很多时候我们的需求就是…

仓库管理系统09--修改用户密码

1、添加窗体 2、窗体布局控件 UI设计这块还是传统的表格布局&#xff0c;采用5行2列 3、创建viewmodel 4、前台UI绑定viewmodel 这里要注意属性绑定和命令绑定及命令绑定时传递的参数 <Window x:Class"West.StoreMgr.Windows.EditPasswordWindow"xmlns"http…

缓存问题二、缓存雪崩

缓存雪崩 缓存雪崩&#xff1a;是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 缓存雪崩的解决方案&#xff1a; 给不同的Key的TTL添加随机值利用Redis集群提高服务的可用性给缓存业务添加降级限流策略…