当前位置: 首页 > news >正文

手机网站制作 尺寸qq推广平台

手机网站制作 尺寸,qq推广平台,网站提示域名重定向怎么做,郑州正规的网站制作WiringPi 是一个为树莓派提供的 C 语言库 ,让用户能简单便捷地访问树莓派的 GPIO(通用目的输入输出)引脚,实现与外部设备的交互 1.下载WiringPi库 命令安装 sudo apt - get install wiringpi验证安装 gpio -v 或 gpio readall …

WiringPi 是一个为树莓派提供的 C 语言库 ,让用户能简单便捷地访问树莓派的 GPIO(通用目的输入输出)引脚,实现与外部设备的交互

1.下载WiringPi库

命令安装

sudo apt - get install wiringpi

验证安装

gpio -v

 gpio readall

手动安装

如果无法通过软件源正常安装,可从 WiringPi 的 GitHub 仓库The Drogon Network | Crow下载安装包。下载后,解压文件,进入解压后的目录,执行以下的命令进行编译安装;

./build

2.基本使用步骤

1.包含头文件:在代码开头添加 #include <wiringPi.h> 引入 WiringPi 库函数声明。

2.初始化:调用 wiringPiSetup() 初始化

3.设置引脚模式:利用 pinMode(int pin, int mode) 函数设置引脚输入输出模式,如 pinMode(XXX, OUTPUT) 设置为输出模式,pinMode(XXX, INPUT) 设置为输入模式 。

4.读写引脚:用 digitalWrite(int pin, int value) 向引脚写高低电平,digitalRead(int pin) 读取引脚电平状态。

5.编译运行:编译时加上 -lwiringPi 链接库,例如 gcc your_code.c -lwiringPi 

3.常用API介绍

功能分类函数原型功能描述参数说明返回值
初始化int wiringPiSetup(void)使用 WiringPi 引脚编号方案初始化 WiringPi 库0(成功),-1(失败)
int wiringPiSetupGpio(void)使用 BCM GPIO 引脚编号方案初始化 WiringPi 库0(成功),-1(失败)
int wiringPiSetupPhys(void)使用物理引脚编号方案初始化 WiringPi 库0(成功),-1(失败)
GPIO 操作void pinMode(int pin, int mode)设置指定引脚的模式(输入 / 输出 / PWM 输出)pin:引脚编号;
modeINPUT(输入)、OUTPUT(输出)、PWM_OUTPUT(PWM 输出,仅适用于特定引脚)
void digitalWrite(int pin, int value)向指定输出引脚写入高低电平pin:引脚编号;
valueHIGH(高电平,通常为 1)或LOW(低电平,通常为 0)
int digitalRead(int pin)读取指定输入引脚的电平状态pin:引脚编号HIGH(1)或LOW(0)
void pullUpDnControl(int pin, int pud)设置指定输入引脚的上拉 / 下拉电阻状态pin:引脚编号;
pudPUD_OFF(无上拉 / 下拉电阻)、PUD_DOWN(下拉电阻)、PUD_UP(上拉电阻)
PWM 相关void pwmWrite(int pin, int value)在支持 PWM 的引脚上设置 PWM 输出值(控制占空比)pin:支持 PWM 的引脚(如 GPIO18);
value:取值范围 0 - 1024,0 表示占空比 0%,1024 表示占空比 100%
中断处理int wiringPiISR(int pin, int edge, void (*function)(void))为指定引脚设置中断服务程序pin:引脚编号;
edge:触发方式,INT_EDGE_FALLING(下降沿触发)、INT_EDGE_RISING(上升沿触发)、INT_EDGE_BOTH(双边沿触发);
function:中断回调函数指针
0(成功),-1(失败)
延时void delay(unsigned int ms)使程序延时指定的毫秒数ms:延时的毫秒数
void delayMicroseconds(unsigned int us)使程序延时指定的微秒数us:延时的微秒数
串口通信int serialOpen(const char *device, int baud)打开并初始化指定的串口设备device:串口设备路径(如/dev/ttyAMA0);
baud:波特率
成功返回文件描述符(非负整数),失败返回 - 1
void serialClose(int fd)关闭指定的串口设备fd:串口文件描述符(由serialOpen返回)
void serialPutchar(int fd, unsigned char c)向指定串口发送一个字符fd:串口文件描述符;
c:要发送的字符
void serialPuts(int fd, const char *s)向指定串口发送一个字符串fd:串口文件描述符;
s:字符串指针
void serialPrintf(int fd, const char *message, ...)向指定串口发送格式化字符串(类似printffd:串口文件描述符;
message:格式化字符串,后续为可变参数
int serialDataAvail(int fd)检查指定串口缓冲区中可用的字节数fd:串口文件描述符返回可用字节数(非负整数),错误返回 - 1
int serialGetchar(int fd)从指定串口读取一个字符(阻塞方式)fd:串口文件描述符成功返回读取的字符(ASCII 码值),超时返回 - 1
I2C 通信int wiringPiI2CSetup(int devId)初始化指定 I2C 设备devId:I2C 设备地址成功返回设备文件描述符(非负整数),失败返回 - 1
int wiringPiI2CRead(int fd)从指定 I2C 设备读取一个字节数据fd:I2C 设备文件描述符(由wiringPiI2CSetup返回)成功返回读取的数据(0 - 255),失败返回 - 1
int wiringPiI2CWrite(int fd, int data)向指定 I2C 设备写入一个字节数据fd:I2C 设备文件描述符;
data:要写入的数据(0 - 255)
成功返回 0,失败返回 - 1
SPI 通信void spiBegin(void)初始化 SPI 总线
void spiEnd(void)结束 SPI 总线通信
int spiTransfer(int data)在 SPI 总线上传输一个字节数据并返回接收到的数据data:要发送的数据(0 - 255)返回接收到的数据(0 - 255)

4.引脚编号说明

BCM:Broadcom SOC 芯片的 GPIO 引脚编号 ,是基于树莓派所使用的博通芯片内部定义的编号,在底层开发和官方文档中常用 

wPi:WiringPi 库定义的引脚编号 ,WiringPi 是用于树莓派 GPIO 控制的第三方库,为简化编程对引脚重新编号,但该库已不再更新维护 

Name:引脚功能名称 ,比如 SDA.1 、SCL.1 分别是 I2C1 总线的数据线和时钟线;GPIO 开头的表示通用输入输出引脚;还有电源引脚如 3.3v 、5v 、0v (接地 ) 

Mode:引脚默认模式 ,IN 表示输入模式,OUT 表示输出模式 ,部分引脚还可能有其他复用功能模式(如 ALT0 等 ) 

V :引脚的电平相关属性,这里的 0 和 1 可能用于表示某些功能的启用或禁用状态等(不同场景含义有别 ) 

Physical:引脚的物理位置编号 ,按照树莓派 GPIO 排针从上到下、从左到右的顺序依次编号,便于在实际硬件连接时快速定位引脚 

5.实际使用WiringPi库

1.输入命令控制继电器组

#include <wiringPi.h>
#include <stdio.h>
#include <string.h>#define SWICH1  26
#define SWICH2  27
#define SWICH3  28
#define SWICH4  29
int main()
{char cmd[12];if(wiringPiSetup() == -1){printf("Initgpio failed!\n");return -1;}pinMode(SWICH1,OUTPUT);pinMode(SWICH2,OUTPUT);pinMode(SWICH3,OUTPUT);pinMode(SWICH4,OUTPUT);digitalWrite(SWICH1,HIGH);digitalWrite(SWICH2,HIGH);digitalWrite(SWICH3,HIGH);digitalWrite(SWICH4,HIGH);while(1){printf("请输入1/2/3/4 on或off:\n");memset(cmd,'\0',sizeof(cmd));//scanf("%s",&cmd);gets(cmd);if(strcmp(cmd,"1 on") == 0){digitalWrite(SWICH1,LOW);}else if(strcmp(cmd,"1 off") == 0){digitalWrite(SWICH1,HIGH);}if(strcmp(cmd,"2 on") == 0){digitalWrite(SWICH2,LOW);}else if(strcmp(cmd,"2 off") == 0){digitalWrite(SWICH2,HIGH);}if(strcmp(cmd,"3 on") == 0){digitalWrite(SWICH3,LOW);}else if(strcmp(cmd,"3 off") == 0){digitalWrite(SWICH3,HIGH);}if(strcmp(cmd,"4 on") == 0){digitalWrite(SWICH4,LOW);}else if(strcmp(cmd,"4 off") == 0){digitalWrite(SWICH4,HIGH);}if(strcmp(cmd,"all off") == 0){digitalWrite(SWICH2,HIGH);digitalWrite(SWICH3,HIGH);digitalWrite(SWICH4,HIGH);digitalWrite(SWICH5,HIGH);printf("全部关闭 自动退出!\n");return -1;}}return 0;
}

2.超声波测距

#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>#define Trig    4
#define Echo    5void chaoshengboInit(void)
{pinMode(Echo, INPUT);//检测波什么时候发什么时候回来设置端口为输入pinMode(Trig, OUTPUT);//触发脉冲设置端口为输出
}float disMeasure(void)//测距原理
{struct timeval tv1;struct timeval tv2;long start, stop;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);           //获取当前时间,最后接收到返回信号的时候start = tv1.tv_sec * 1000000 + tv1.tv_usec;   //微秒级的时间,开始发波的时间stop  = tv2.tv_sec * 1000000 + tv2.tv_usec;//波返回来的时间dis = (float)(stop - start) / 1000000 * 34000 / 2;  //计算时间差求出距离return dis;
}int main(void)
{float dis;//用来存放测试的距离if (wiringPiSetup() == -1) { //硬件端口初始化printf("setup wiringPi failed !");return -1;}chaoshengboInit();//调用超声波函数while (1) {//不断地测距dis = disMeasure();printf("distance = %0.2f cm\n", dis);delay(1000);}return 0;
}

3.串口通信

#include <wiringSerial.h>
#include <wiringPi.h>
#include <stdio.h>
#include <string.h>
int main()
{int  fd;char cmd;wiringPiSetup();fd = serialOpen("/dev/ttyAMA0",9600);//打开串口while(1){               if(serialDataAvail (fd) != -1)//如果串口有数据{printf("there is data!\n");cmd = serialGetchar (fd);//串口获取一个字符printf("cmd = %c\n",cmd);if(cmd == '1')//字符是1{serialPuts (fd,"jcc\r\n");//串口发送字符串}else if(cmd == '2'){serialPuts (fd,"cc\r\n");}}else{printf("no data!\n");}delayMicroseconds(100000);}return 0;
}

http://www.cadmedia.cn/news/8459.html

相关文章:

  • 代办公司注册哪家好上海优化公司排行榜
  • 什么是自建站小学四年级摘抄新闻
  • 网站建设若干意见网上销售有哪些方法
  • 软件开发软件下载南宁seo咨询
  • dw网站制作的一般流程想要导航推广网页怎么做
  • 成都网站建设 培训站长素材网站官网
  • 网站建设未来关键词排名查询工具免费
  • 做公章网站深圳优化公司找高粱seo服务
  • 网站建设 上传和下载功能重庆seo优化公司
  • 网站综合开发怎么做私人网站管理软件
  • 阿里云多网站建设百度推广优化技巧
  • 交友网站建设策划方案(2)百度首页入口
  • 吴桥县做网站搜索排名广告营销怎么做
  • 免费网站设计平台网站seo排名免费咨询
  • wordpress 独立下载插件长沙网站包年优化
  • 个人网站托管百度竞价广告怎么投放
  • 亦庄公司做网站网页设计主要做什么
  • 合肥移动网站建设市场营销实际案例
  • 网站建设郑州sem投放是什么意思
  • 制作表白网站教程扬州seo优化
  • asp.net 网站开发 实战seo文章关键词怎么优化
  • 网站设计需要哪些360关键词推广
  • 贵阳网络公司网站建设福州短视频seo获客
  • 设计大赛官网优化搜狗排名
  • 深圳政府在线投诉windows优化大师下载
  • 网络文化经营许可证变更法人广州seo网站开发
  • 学校网站建设源代码如何让百度快速收录网站文章
  • 建设部网站官网证书编号长沙网站提升排名
  • php创建一个网站衡水seo培训
  • 网站域名注册费用怎么创建一个属于自己的网站