1、树莓派的接口
IO口:驱动
有信息传给主控芯片
Input(输入信息数据):
人体红外传感器,烟雾传感器,火焰传感器,振动传感器
Output(输出高、低电频):
继电器,蜂鸣器
增强性PWM:
电机调速,灯光调明亮
串口:uart
IIC
SPI
IIS
其它特定硬件的接口:flash
树莓派相同平台:
Nanopi:Linux
以前三星:
S3c2410,2440,6410
可以跑安卓:
Tiny210,Tiny4412
海思方案,福建的瑞芯微方案,上海的移远方案
C51,STM32,Arduino,WemosD1
纯逻辑开发
没有OS(系统:Linux)
2、树莓派的接口函数1
概述
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<wiringPi.h>
int main()
{
wiringPiSetup();
}
gcc demo1.c -lwiringPi //编译
查看IO口
命令
gpio readall
3.3V 正极 继电器 VCC相连
0V 负极 接地线 继电器GND 负相连
GPIO. 7:IO控制引脚 继电器IN
实物针脚位置摆放对比
上继电器编程
#include<stdio.h>
#include<wiringPi.h>
#define SWITCHER 7
int 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<stdio.h>
#include<string.h>
#include<wiringPi.h>
#define SWI1 26
#define SWI2 27
#define SWI3 28
#define SWI4 29
int 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");
}
}
}