树莓派的接口
IO接口(input、output)
Input:烟雾传感器、火焰传感器、振动传感器
Output:继电器、蜂鸣器
串口:uart、IIS、IIC、SPI…
特定的接口:flash
wiringPi库的基本使用
a.验证wiringPi的是否安装成功
b.初始化树莓派的引脚
#include <wiringPi.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
if(wiringPiSetup() == -1){ //初始化树莓派的引脚
printf("初始化树莓派引脚失败");
exit(-1);
}
return 0;
}
编译时,要链wiringPi库
pi@raspberrypi:~/wiringPi $ gcc demo1.c -lwiringPi
树莓派控制硬件
查看gpio引脚命令
gpio readall
树莓派控制锁配合继电器(JQC-3FF-S-Z)
各线的作用
紫线:接入树莓派的5V
棕线:接入树莓派的0V
蓝线:接入树莓派gpio.7,为了传输程序(高低电平)
白线:一端接入树莓派的5V,一端接入继电器的“COM”口
黑线:接入树莓派的0V
红线:接入继电器的“NO”口
当低电平时,“NO”口与“COM”口里面的磁片吸附,导通电源使得开锁
代码演示
#include <stdio.h>
#include <wiringPi.h>
#define JQC 7
int main()
{
int cmd;
if(wiringPiSetup() == -1){
printf("初始化树莓派引脚失败\n");
return 1;
}
pinMode(JQC,OUTPUT);
digitalWrite(JQC,HIGH);
while(1){
printf("请输入0/1 1--开锁,0--关锁\n");
scanf("%d",&cmd);
if(cmd == 1){
digitalWrite(JQC,LOW); // 低电平,开锁
}else if(cmd == 0){
digitalWrite(JQC,HIGH); // 高电平,关锁
}else{
printf("输入错误,请重新输入\n");
}
}
return 0;
}
树莓派控制继电器(4 Relay Module)
#include <wiringPi.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define gpio1 21
#define gpio2 22
#define gpio3 23
#define gpio4 24
// 将引脚进行宏定义
int main()
{
if(wiringPiSetup() == -1){ //初始化树莓派的引脚
printf("初始化树莓派引脚失败");
exit(-1);
}
char cmd[128] = {'\0'};
pinMode(gpio1,OUTPUT); // 参数:引脚号,引脚模式
pinMode(gpio2,OUTPUT); // 设置引脚模式
pinMode(gpio3,OUTPUT);
pinMode(gpio4,OUTPUT);
digitalWrite(gpio1,HIGH); // 引脚初始化
digitalWrite(gpio2,HIGH); // 高电平,继电器处于断电状态
digitalWrite(gpio3,HIGH);
digitalWrite(gpio4,HIGH);
while(1){
printf("请输入1/2/3/4 on或off:on--通电,off--断电\n");
memset(cmd,'\0',sizeof(cmd));
gets(cmd);
// 对比:输入命令与指定命令是否一致
// 如果一致,传输高低电平,继电器上会闪动相应的灯光
if(strcmp(cmd,"1 off") == 0){
digitalWrite(gpio1,HIGH);
}else if(strcmp(cmd,"1 on") == 0){
digitalWrite(gpio1,LOW);
}else if(strcmp(cmd,"2 off") == 0){
digitalWrite(gpio2,HIGH);
}else if(strcmp(cmd,"2 on") == 0){
digitalWrite(gpio2,LOW);
}else if(strcmp(cmd,"3 off") == 0){
digitalWrite(gpio1,HIGH);
}else if(strcmp(cmd,"3 on") == 0){
digitalWrite(gpio3,LOW);
}else if(strcmp(cmd,"4 off") == 0){
digitalWrite(gpio4,HIGH);
}else if(strcmp(cmd,"4 on") == 0){
digitalWrite(gpio4,LOW);
}else{
printf("请输入正确命令\n");
}
}
return 0;
}