3. 树莓派外设开发编程

树莓派的接口

IO接口(input、output)

Input:烟雾传感器、火焰传感器、振动传感器
Output:继电器、蜂鸣器
串口:uart、IIS、IIC、SPI…
特定的接口:flash

wiringPi库的基本使用

供参考:树莓派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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值