目录
-
树莓派的引脚信息
-
继电器的基本知识
-
继电器引脚信息
nc:常闭端
no:常开端
com:公共端
s/in:输入控制信号端
vcc:连接树莓派的VCC
gnd:连接树莓派的GND
继电器封装图片:
-
继电器电路图连接
-
VCC、GND、S/IN与树莓派上对应的VCC、GND、以及自己想要编程控制的引脚相接;
-
先把所需要控制的器件一路线路分为两段,一段与继电器的com相接,另一段与继电器的no相接,类似于把继电器当一个开关接入。
-
继电器工作原理
在连接好电路之后,如果控制树莓派自己指定的引脚输出低电平时,此时线圈没有电流通过,衔铁与常闭端形成通路,如果小灯泡的一路线与no相接,此时灯泡不亮;如果控制树莓派自己指定的引脚输出高电平时,即树莓派发送信号,此时线圈有电流通过,通过电生磁,衔铁就会与常开的一端形成通路,即灯泡亮。
具体工作原理详见此链接:继电器工作原理
-
C编程控制实现
- 头文件:
#ifndef _RELAY_H_ #define _RELAY_H_ #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <getopt.h> #include <wiringPi.h> #include <unistd.h> #include <errno.h> #define time_out 5 //dealy time #define RELAY 28 //使用的树莓派管脚 enum { OFF = 0, //低电平,灯灭 ON //高电平,灯亮 }; extern int realy(int cmd); #endif /* ----- #ifndef _RELAY_H_ ----- */
- 源文件
#include "relay.h" static inline void relay_init() { wiringPiSetup(); //初始化wiringPiSetup pinMode(RELAY, OUTPUT); //将管脚定义为输出管脚 } int main() { while(1) { realy(ON); sleep(3); realy(OFF); sleep(1); } } int realy(int cmd) { relay_init(); if (cmd == ON) { digitalWrite(RELAY,ON);//高电平,灯亮 } else if(cmd == OFF) digitalWrite(RELAY,OFF); //高电平,灯亮 return 0; }
-
运行程序
gcc relay.c -o relay -lwiringPi //指定使用lwiringPi库,引脚编码就会与wiring引脚编码一致
./relay
-
运行结果说明:
当线路连接正确之后,运行代码,被控制的灯泡就会亮三秒后熄灭;如此反复。