基于Linux操作系统编程:
软件平台:MobaXterm
硬件:全志H616开发板 (下图)、 一组继电器
继电器(relay) 三根接线端:Vcc —接3.3v , GND —接地 ,信号引脚 IN —接 wPi 针脚 0
代码如下:
运行结果如下:
继电器组: (硬件如下图)
有六根针脚分别是: Vcc —接5v,GND—接地,控制引脚 IN1— 接wPi 针脚 0 ,
控制引脚 IN2— 接wPi 针脚 1,控制引脚 IN3— 接wPi 针脚 3,控制引脚 IN4—接 wPi 针脚 4
代码如下:
//调用wiringPi库函数 控制继电器(relay)
// 文件: relay2.c
#include<stdio.h>
#include<wiringPi.h>
#include<string.h>
#define Relay_IN1 0 //设置针脚0为继电器的控制引脚1
#define Relay_IN2 1 //设置针脚1为继电器的控制引脚2
#define Relay_IN3 3 //设置针脚3为继电器的控制引脚3
#define Relay_IN4 4 //设置针脚4为继电器的控制引脚4
int main()
{
char Cmd[12] = {'\0'} ;
//初始化硬件
if(wiringPiSetup() == -1)
{
printf("Setup failed!");//error
return -1;
}
pinMode(Relay_IN1 , OUTPUT) ;//设定I/O口的输入输出模式,设置为输出模式
pinMode(Relay_IN2 , OUTPUT) ;//设定I/O口的输入输出模式,设置为输出模式
pinMode(Relay_IN3 , OUTPUT) ;//设定I/O口的输入输出模式,设置为输出模式
pinMode(Relay_IN4 , OUTPUT) ;//设定I/O口的输入输出模式,设置为输出模式
digitalWrite (Relay_IN1 , HIGH) ; //初始设置为高电平,断开/关闭
digitalWrite (Relay_IN2 , HIGH) ; //初始设置为高电平,断开/关闭
digitalWrite (Relay_IN3 , HIGH) ; //初始设置为高电平,断开/关闭
digitalWrite (Relay_IN4 , HIGH) ; //初始设置为高电平,断开/关闭
while(1)
{
printf("请输入1/2/3/4 : NO:低电平导通 , OFF: 高电平断开 \n");
memset(Cmd,'\0',sizeof(Cmd));
scanf("%s",Cmd); //一般少用gets(Cmd);(慎用gets()函数)
if(strcmp(Cmd,"1-OFF") == 0)
{
digitalWrite (Relay_IN1 , HIGH) ; //输出高电平,关闭IN1
}
else if(strcmp(Cmd,"1-NO") == 0)
{
digitalWrite (Relay_IN1 , LOW) ; //输出低电平,打开IN1
}
else if(strcmp(Cmd,"2-OFF") == 0)
{
digitalWrite (Relay_IN2 , HIGH) ; //输出高电平,关闭IN2
}
else if(strcmp(Cmd,"2-NO") == 0)
{
digitalWrite (Relay_IN2 , LOW) ; //输出低电平,打开IN2
}
else if(strcmp(Cmd,"3-OFF") == 0)
{
digitalWrite (Relay_IN3 , HIGH) ; //输出高电平,关闭IN3
}
else if(strcmp(Cmd,"3-NO") == 0)
{
digitalWrite (Relay_IN3 , LOW) ; //输出低电平,打开IN3
}
else if(strcmp(Cmd,"4-OFF") == 0)
{
digitalWrite (Relay_IN4 , HIGH) ; //输出高电平,关闭IN4
}
else if(strcmp(Cmd,"4-NO") == 0)
{
digitalWrite (Relay_IN4 , LOW) ; //输出低电平,打开IN4
}
else if(strcmp(Cmd,"OFF") == 0)
{
digitalWrite (Relay_IN1 , HIGH) ; //关闭全部
digitalWrite (Relay_IN2 , HIGH) ;
digitalWrite (Relay_IN3 , HIGH) ;
digitalWrite (Relay_IN4 , HIGH) ;
}
else if(strcmp(Cmd,"NO") == 0)
{
digitalWrite (Relay_IN1 , LOW) ; //打开全部
digitalWrite (Relay_IN2 , LOW) ;
digitalWrite (Relay_IN3 , LOW) ;
digitalWrite (Relay_IN4 , LOW) ;
}
else
{
printf("Invalid Inputs!\n");
}
}
return 0;
}
运行结果:
硬件显示如下:
以上是 利用wiringPi库函数输出高、低电平来控制继电器的操作