
树莓派的外设开发
发布日期:2021-05-15 08:10:58
浏览次数:12
分类:精选文章
本文共 4216 字,大约阅读时间需要 14 分钟。
树莓派外设开发编程
1、树莓派的接口
IO口:驱动
有信息传给主控芯片
Input(输入信息数据):
人体红外传感器,烟雾传感器,火焰传感器,振动传感器
Output(输出高、低电频):
继电器,蜂鸣器
增强性PWM:
电机调速,灯光调明亮串口:uart
IIC SPI IIS其它特定硬件的接口:flash
树莓派相同平台:
Nanopi:Linux
以前三星:
S3c2410,2440,6410可以跑安卓:
Tiny210,Tiny4412
海思方案,福建的瑞芯微方案,上海的移远方案
C51,STM32,Arduino,WemosD1
纯逻辑开发
没有OS(系统:Linux)
2、树莓派的接口函数
概述
wirngPi 库:特定平台,特定功能接口 (同Linux 动态库 .so 静态库 .a 类似)
API printf C 标准库
验证wiringPi库的安装
1、验证wiringPi的是否安装成功,输入gpio -v,会在终端中输出相关wiringPi的信息。否则安装失败。
如果没有安装:
进入 wiringPi的github (https://git.drogon.net/?p=wiringPi;a=summary) 下载安装包。点击页面的第一个链接的右边的snapshot,下载安装压缩包。然后进入安装包所在的目录执行以下命令:
>tar xfz wiringPi-98bcb20.tar.gz //98bcb20为版本标号,可能不同>cd wiringPi-98bcb20>./build
编译 和运行
假如你写了一个LEDtest.c 的项目,则如下
编译:g++ -Wall -o LEDtest LEDtest.cpp -lwiringPi //使用C++编程 , -Wall 是为了使能所有警告,以便发现程序中的问题gcc -Wall -o LEDtest LEDtest.c -lwiringPi //使用C语言编程运行:sudo ./LEDtest
在使用wiringPi库时,需要包含头文件 #include<wiringPi.h> 凡是写wiringPi的程序,都包含这个头文件
vi demo1.c
#includeint main(){ wiringPiSetup();}
gcc demo1.c -lwiringPi //编译
查看IO口
命令
gpio readall
3.3V 正极 继电器 VCC相连
0V 负极 接地线 继电器GND 负相连
GPIO. 7:IO控制引脚 继电器IN
实物针脚位置摆放对比
上继电器编程
#include#include #define SWITCHER 7int main(){ int cmd; if(wiringPiSetup() == -1){ //初始化继电器接口 printf("硬件接口初始化失败!\n"); return -1; } pinMode(SWITCHER, OUTPUT); //设定7针脚为输出口 digitalWrite(SWITCHER,HIGH); //初始化设置为关闭 while(1){ printf("请输入0/1:0——断开开关,1——打开开关\n"); scanf("%d",&cmd); getchar(); if(cmd == 1){ digitalWrite(SWITCHER,LOW); //打开 }else if(cmd == 0){ digitalWrite(SWITCHER,HIGH); //断开 }else if(cmd == 2){ return -1; }else{ printf("输入错误!\n"); } }}
结果:
当输入0断开 绿灯关闭
当输入1连接 绿灯点亮
当输入2退出
继电器组控制
#include#include #include #define SWI1 26#define SWI2 27#define SWI3 28#define SWI4 29int main(){ char cmd[12]={ '\0'}; if(wiringPiSetup() == -1){ printf("硬件接口初始化失败!\n"); return -1; } pinMode(SWI1, OUTPUT); //设定针脚为输出口 pinMode(SWI2, OUTPUT); pinMode(SWI3, OUTPUT); pinMode(SWI4, OUTPUT); digitalWrite(SWI1,HIGH); //初始化断电 digitalWrite(SWI2,HIGH); digitalWrite(SWI3,HIGH); digitalWrite(SWI4,HIGH); while(1){ printf("请输入1/2/3/4 on off:off——断开开关,on——打开开关\n"); memset(cmd,'\0',sizeof(cmd)); //scanf("%s",cmd); gets(cmd); //getchar(); if(strcmp(cmd,"1 on") == 0){ digitalWrite(SWI1,LOW); }else if(strcmp(cmd,"1 off") == 0){ digitalWrite(SWI1,HIGH); }else if(strcmp(cmd,"2 on") == 0){ digitalWrite(SWI2,LOW); }else if(strcmp(cmd,"2 off") == 0){ digitalWrite(SWI2,HIGH); }else if(strcmp(cmd,"3 on") == 0){ digitalWrite(SWI3,LOW); }else if(strcmp(cmd,"3 off") == 0){ digitalWrite(SWI3,HIGH); }else if(strcmp(cmd,"4 on") == 0){ digitalWrite(SWI4,LOW); }else if(strcmp(cmd,"4 off") == 0){ digitalWrite(SWI4,HIGH); }else if(strcmp(cmd,"all on") == 0){ digitalWrite(SWI1,LOW); digitalWrite(SWI2,LOW); digitalWrite(SWI3,LOW); digitalWrite(SWI4,LOW); }else if(strcmp(cmd,"all off") == 0){ digitalWrite(SWI1,HIGH); digitalWrite(SWI2,HIGH); digitalWrite(SWI3,HIGH); digitalWrite(SWI4,HIGH); }else if(strcmp(cmd,"quit") == 0){ return -1; }else{ printf("输入错误!\n"); } }}
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月06日 07时41分35秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
1376:信使(msner)
2021-05-15
简单方法实现无刷新提交Form表单
2021-05-15
天梯赛 L3 练习题(2)
2021-05-15
MYSQL数据库类型与JAVA类型对应表
2021-05-15
Java业务开发常见错误100例-极客时间笔记
2021-05-15
$.ajax()方法详解
2021-05-15
java字节流与字符流的区别
2021-05-15
Spring开发包介绍
2021-05-15
Mysql 批量杀死进程
2021-05-15
spring tx:advice 和 aop:config 配置事务
2021-05-15
修改layui的后台模板的左侧导航栏可以伸缩
2021-05-15
Mybatis Generator最完整配置详解
2021-05-15
报错:For input string
2021-05-15
ThreadLocal源码分析解密
2021-05-15
【Java并发编程】并发编程大合集
2021-05-15
Ubuntu初始化root密码
2021-05-15
编译android源代码(aosp)
2021-05-15
verilog一些小知识点注意事项集合
2021-05-15