wiringPi(特定平台,特定功能接口) 库(linux 动态库.so 静态库.a)
link
用到调库的文件在编译时 别忘了-lwiringPi
-
树莓派的接口:驱动
IO口: input output 对主控芯片来说
Input: 烟雾,火焰,震动,人体 等传感器
Output:(控制) 继电器,蜂鸣器
PWM: 电机调速,灯光调明亮度
串口 uart
IIC
SPI
IIS
其他特定硬件的接口:flash
单个树莓派控制继电器完整代码
四个继电器完整代码
#include <wiringPi.h>
#include <stdio.h>
#include <string.h>
#define SWI1 26 //宏定义:给引脚命名
#define SWI2 27
#define SWI3 28
#define SWI4 29
int main()
{
char cmd[12] = {'\0'};
if(wiringPiSetup() == -1){ //硬件初始化
printf("硬件接口初始化失败\n");
return -1;
}
pinMode (SWI1, OUTPUT); //配置引脚的IO模式
pinMode (SWI2, OUTPUT);
pinMode (SWI3, OUTPUT);
pinMode (SWI4, OUTPUT);
digitalWrite (SWI1,HIGH); //让对一个已近配置为输出模式的 引脚 输出指定的电平信号
digitalWrite (SWI2,HIGH); //上电后先让继电器是断开
digitalWrite (SWI3,HIGH);
digitalWrite (SWI4,HIGH);
while(1){
printf("请输入1/2/3/4/all on/off :: off-断开开关,on-导通开关\n");
memset(cmd,'\0',sizeof(cmd));
//scanf("%s",cmd); //scanf导致输入无效,不认识指令
gets(cmd); //会有警告,不管,不影响
if(strcmp(cmd,"1 on") == 0){
digitalWrite (SWI1,LOW);
}else if(strcmp(cmd,"1 off") == 0){
digitalWrite (SWI1,HIGH);
}
if(strcmp(cmd,"2 on") == 0){
digitalWrite (SWI2,LOW);
}else if(strcmp(cmd,"2 off") == 0){
digitalWrite (SWI2,HIGH);
}
if(strcmp(cmd,"3 on") == 0){
digitalWrite (SWI3,LOW);
}else if(strcmp(cmd,"3 off") == 0){
digitalWrite (SWI3,HIGH);
}
if(strcmp(cmd,"4 on") == 0){
digitalWrite (SWI4,LOW);
}else if(strcmp(cmd,"4 off") == 0){
digitalWrite (SWI4,HIGH);
}
if(strcmp(cmd,"all on") == 0){
digitalWrite (SWI1,LOW);
digitalWrite (SWI2,LOW);
digitalWrite (SWI3,LOW);
digitalWrite (SWI4,LOW);
}else if(strcmp(cmd,"all off") == 0){
digitalWrite (SWI1,HIGH);
digitalWrite (SWI2,HIGH);
digitalWrite (SWI3,HIGH);
digitalWrite (SWI4,HIGH);
}
else{
printf(">>>>>请输入正确指令>>>>>\n");
}
}
}
gets( ) 函数警告,使用有危险,但是不影响我们控制继电器。直接运行。