树莓派控制继电器
一、GPIO控制函数1.配置引脚的I/O模式void pinMode (int pin, int mode);参数解释:pin:配置的引脚;mode:指定引脚的I/O模式,可取的值:INPUT、OUTPUT,PWM_OUTPUT,GPIO_CLOCK。注意:只有wiringPi 引脚编号下的1脚(BCM下的18脚) 支持PWM输出;只有wiringPi编号下的7(BCM下的4号)支持GPIO_CL
·
一、GPIO控制函数
1.配置引脚的I/O模式
void pinMode (int pin, int mode);
参数解释:
pin:配置的引脚;
mode:指定引脚的I/O模式,可取的值:INPUT、OUTPUT,PWM_OUTPUT,GPIO_CLOCK。
注意:
- 只有wiringPi 引脚编号下的1脚(BCM下的18脚) 支持PWM输出;
- 只有wiringPi编号下的7(BCM下的4号)支持GPIO_CLOCK输出。
2.让对一个已近配置为输出模式的引脚输出指定的电平信号
void digitalWrite (int pin, int value);
参数解释:
pin:控制的引脚;
value:引脚输出的电平值,可取的值:HIGH,LOW分别代表高低电平。
二、树莓派控制单个继电器
正极接:3.3V
负极接:0V
信号控制接:GPIO.7
代码如下:
#include <stdio.h>
#include <wiringPi.h>
#include <stdlib.h>
#define SWITCHER 7
int main()
{
int cmd;
if(wiringPiSetup() == -1){ //wiringPi库的初始化
printf("硬件接口初始化失败\n");
exit(-1);
}
pinMode(SWITCHER,OUTPUT); //引脚初始化
digitalWrite(SWITCHER, HIGH); //继电器上电不导通
while(1){
printf("请输入0/1:0-断开继电器,1-导通继电器\n");
scanf("%d",&cmd);
getchar(); //吸收回车符
if(cmd == 1){
printf("导通继电器\n");
digitalWrite(SWITCHER, LOW);
}else if(cmd == 0){
printf("断开继电器\n");
digitalWrite(SWITCHER, HIGH);
}
cmd = 10; //归位
}
return 0;
}
运行结果:
三、树莓派控制继电器组
继电器1信号控制接:GPIO.26
继电器2信号控制接:GPIO.27
继电器3信号控制接:GPIO.28
继电器4信号控制接:GPIO.29
代码如下:
#include <stdio.h>
#include <wiringPi.h>
#include <stdlib.h>
#include <string.h>
#define SWIT1 26
#define SWIT2 27
#define SWIT3 28
#define SWIT4 29
int main()
{
char cmd[12] = {'\0'};
if(wiringPiSetup() == -1){ //wiringPi库的初始化
printf("硬件接口初始化失败\n");
exit(-1);
}
pinMode(SWIT1,OUTPUT); //继电器1引脚初始化
pinMode(SWIT2,OUTPUT); //继电器2引脚初始化
pinMode(SWIT3,OUTPUT); //继电器3引脚初始化
pinMode(SWIT4,OUTPUT); //继电器4引脚初始化
digitalWrite(SWIT1, HIGH); //继电器1上电不导通
digitalWrite(SWIT2, HIGH); //继电器2上电不导通
digitalWrite(SWIT3, HIGH); //继电器3上电不导通
digitalWrite(SWIT4, HIGH); //继电器4上电不导通
while(1){
printf("请输入1/2/3/4on或off:on-导通继电器,off-断开继电器\n");
memset(cmd,'\0',sizeof(cmd));
gets(cmd);
if(strcmp(cmd,"1 on") == 0){
printf("导通继电器1\n");
digitalWrite(SWIT1, LOW);
}else if(strcmp(cmd,"1 off") == 0){
printf("断开继电器1\n");
digitalWrite(SWIT1, HIGH);
}
if(strcmp(cmd,"2 on") == 0){
printf("导通继电器2\n");
digitalWrite(SWIT2, LOW);
}else if(strcmp(cmd,"2 off") == 0){
printf("断开继电器\n");
digitalWrite(SWIT2, HIGH);
}
if(strcmp(cmd,"3 on") == 0){
printf("导通继电器3\n");
digitalWrite(SWIT3, LOW);
}else if(strcmp(cmd,"3 off") == 0){
printf("断开继电器3\n");
digitalWrite(SWIT3, HIGH);
}
if(strcmp(cmd,"4 on") == 0){
printf("导通继电器4\n");
digitalWrite(SWIT1, LOW);
}else if(strcmp(cmd,"4 off") == 0){
printf("断开继电器4\n");
digitalWrite(SWIT4, HIGH);
}
if(strcmp(cmd,"all on") == 0){
printf("导通继电器1,2,3,4\n");
digitalWrite(SWIT1, LOW);
digitalWrite(SWIT2, LOW);
digitalWrite(SWIT3, LOW);
digitalWrite(SWIT4, LOW);
}else if(strcmp(cmd,"all off") == 0){
printf("断开继电器1,2,3,4\n");
digitalWrite(SWIT1, HIGH);
digitalWrite(SWIT2, HIGH);
digitalWrite(SWIT3, HIGH);
digitalWrite(SWIT4, HIGH);
}
else{
printf("请输入正确指令\n");
}
}
return 0;
}
运行结果:
更多推荐
已为社区贡献1条内容
所有评论(0)