树莓派控制4路5v继电器开关
准备材料
- 4路5v继电器
-
杜邦线
这里正常来说是公对母的杜邦线。我直接接的线。 -
树莓派3b
-
树莓派的电源线
附上继电器的对接规格
wiringPi库
安装wiringPi库
wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程等等。
进入 wiringPi的github https://git.drogon.net/?p=wiringPi;a=summary 下载安装包。点击页面的第一个链接的右边的snapshot,下载安装压缩包。
然后进入安装包所在的目录执行以下命令:
tar xfz wiringPi-98bcb20.tar.gz //98bcb20为版本标号,可能不同
cd wiringPi-98bcb20
./build
验证wiringPi的是否安装成功,输入gpio -v,会在终端中输出相关wiringPi的信息。否则安装失败。
查看引脚编号表格
使用如下控制台下命令
gpio readall
注意:查看时,将树莓派的USB接口面对自己,这样看才是正确的。
wiringPi API
插一句:
编写demo是需要写 #include<wiringPi.h>头文件,同样的运行的时候,也要指定-lwiringPi
硬件初始化函数wiringPiSetup
int wiringPiSetup (void)
返回:执行状态,-1表示失败
当使用这个函数初始化树莓派引脚时,程序使用的是wiringPi 引脚编号表。引脚的编号为 0~16
需要root权限
GPIO控制函数pinMode
void pinMode (int pin, int mode)
pin:配置的引脚
mode:指定引脚的IO模式
可取的值:INPUT、OUTPUT、PWM_OUTPUT,GPIO_CLOCK
作用:配置引脚的IO模式
注意:
只有wiringPi 引脚编号下的1脚(BCM下的18脚) 支持PWM输出
只有wiringPi编号下的7(BCM下的4号)支持GPIO_CLOCK输出
GPIO控制函数digitalWrite
void digitalWrite (int pin, int value)
pin:控制的引脚
value:引脚输出的电平值。
可取的值:HIGH,LOW分别代表高低电平
让对一个已近配置为输出模式的 引脚 输出指定的电平信号
demo示例
#include <stdio.h>
#include <wiringPi.h>
#include <stdlib.h>
#include <string.h>
/*树莓派控制继电器高低电平亮灯*/
#define SWITCH1 26
#define SWITCH2 27
#define SWITCH3 28
#define SWITCH4 29
int main(){
char cmd[12] = {"\0"};
if(wiringPiSetup() == -1){
printf("wiringPi初始化失败\n");
exit(-1);
}
pinMode(SWITCH1,OUTPUT);
pinMode(SWITCH2,OUTPUT);
pinMode(SWITCH3,OUTPUT);
pinMode(SWITCH4,OUTPUT);
digitalWrite(SWITCH1,HIGH);
digitalWrite(SWITCH2,HIGH);
digitalWrite(SWITCH3,HIGH);
digitalWrite(SWITCH4,HIGH);
while(1){
printf("请输入1/2/3/4 on or off\n");
memset(cmd,0,sizeof(cmd));
gets(cmd);
if(strcmp(cmd,"1 off") == 0){
digitalWrite(SWITCH1,HIGH);
}else if(strcmp(cmd,"1 on") == 0){
digitalWrite(SWITCH1,LOW);
}
if(strcmp(cmd,"2 off") == 0){
digitalWrite(SWITCH2,HIGH);
}else if(strcmp(cmd,"2 on") == 0){
digitalWrite(SWITCH2,LOW);
}
if(strcmp(cmd,"3 off") == 0){
digitalWrite(SWITCH3,HIGH);
}else if(strcmp(cmd,"3 on") == 0){
digitalWrite(SWITCH3,LOW);
}
if(strcmp(cmd,"4 off") == 0){
digitalWrite(SWITCH4,HIGH);
}else if(strcmp(cmd,"4 on") == 0){
digitalWrite(SWITCH4,LOW);
}
if(strcmp(cmd,"all off") == 0){
digitalWrite(SWITCH1,HIGH);
digitalWrite(SWITCH2,HIGH);
digitalWrite(SWITCH3,HIGH);
digitalWrite(SWITCH4,HIGH);
}else if(strcmp(cmd,"all on") == 0){
digitalWrite(SWITCH1,LOW);
digitalWrite(SWITCH2,LOW);
digitalWrite(SWITCH3,LOW);
digitalWrite(SWITCH4,LOW);
}
}
return 0;
}
执行
gcc demo2.c -lwiringPi
基本实现就是这样,用法和输入比较土。
实现效果图: