树莓派的外设开发
发布日期: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

#include
int 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"); } }}

上一篇:P5730 【深基5.例10】显示屏
下一篇:linux静态库、动态库、共享库

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月06日 07时41分35秒