一、GPIO控制函数

1.配置引脚的I/O模式

void pinMode (int pin, int mode);

参数解释:
pin:配置的引脚;

mode:指定引脚的I/O模式,可取的值:INPUT、OUTPUT,PWM_OUTPUT,GPIO_CLOCK。

注意:

  1. 只有wiringPi 引脚编号下的1脚(BCM下的18脚) 支持PWM输出;
  2. 只有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;
}

运行结果:
在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐