树莓派外设开发编程

这篇博客详细介绍了如何利用wiringPi库在树莓派上进行GPIO接口操作,控制继电器的开关。通过示例代码展示了如何初始化硬件接口,设置IO口为输入或输出,并通过用户输入的指令(on/off)来切换继电器状态。此外,还提供了控制一组继电器的代码,方便实现多个设备的控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

树莓派外设开发接口文档参考:树莓派wiringPi库详解 - lulipro - 博客园

WiringPi库(Linux动态库:so 静态库:.a)

1.树莓派的接口:  驱动

        IO口:input output 对主控来说

        Input:人体,烟雾,火焰,震动等

        Output:继电器,蜂鸣器

        PWM:电机调速,灯光调明亮度

        串口uart

        IIC

        SPI

        IIS

        其他特定硬件的接口:flash

C51,stm32,arduino,wemosD1:没有操作系统(Linux)

2.树莓派控制继电器

( 注意:查看时,将树莓派的USB接口面对自己,这样看才是正确的。)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<wiringPi.h>
#define SWI 26
int main()
{
        if(wiringPiSetup() == -1)
        {
                printf("硬件接口初始化失败\n");
                perror("");
        }
        char str[32]={0};
        pinMode(SWI,OUTPUT);
        digitalWrite(SWI,HIGH);
        while(1)
        {
                printf("请输入on或off\n");
                scanf("%s",str);
                if(strcmp(str,"on") == 0)
                {
                        digitalWrite(SWI,LOW);
                }
                else if(strcmp(str,"off") == 0)
                {
                        digitalWrite(SWI,HIGH);
                }
                else
                {
                        printf("输入出错...\n");
                }
        }
        return 0;
}

通过gcc demo1.c -lwiringPi来进行编译,进而运行

通过on/off控制继电器的开关:on为闭合,off为断开。下图是通过继电器的闭合断开控制锁的一个应用:

3.继电器组硬件控制开发

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<wiringPi.h>
#define SWI1 26
#define SWI2 27
#define SWI3 28
#define SWI4 29
int main()
{
        if(wiringPiSetup() == -1)
        {
                printf("硬件接口初始化失败\n");
                perror("");
        }
        char str[32]={0};
        pinMode(SWI1,OUTPUT);
        pinMode(SWI2,OUTPUT);
        pinMode(SWI3,OUTPUT);
        pinMode(SWI4,OUTPUT);
       
        digitalWrite(SWI1,HIGH);
        digitalWrite(SWI2,HIGH);
        digitalWrite(SWI3,HIGH);
        digitalWrite(SWI4,HIGH);
        while(1)
        {
                printf("请输入on或off\n");
                scanf("%s",str);
                if(strcmp(str,"1on") == 0)
                {
                        digitalWrite(SWI1,LOW);
                }
                else if(strcmp(str,"1off") == 0)
                {
                        digitalWrite(SWI1,HIGH);
                }
                else if(strcmp(str,"2on") == 0)
                {
                        digitalWrite(SWI2,LOW);
                }
                else if(strcmp(str,"2off") == 0)
                {
                        digitalWrite(SWI2,HIGH);
                }
                else if(strcmp(str,"3on") == 0)
                {
                        digitalWrite(SWI3,LOW);
                }
                else if(strcmp(str,"3off") == 0)
                {
                        digitalWrite(SWI3,HIGH);
                }
                else if(strcmp(str,"4on") == 0)
                {                    
                       digitalWrite(SWI4,LOW);
                }
                else if(strcmp(str,"4off") == 0)
                {
                        digitalWrite(SWI4,HIGH);
                }
                else if(strcmp(str,"allon") == 0)
                {
                        digitalWrite(SWI1,LOW);
                        digitalWrite(SWI2,LOW);
                        digitalWrite(SWI3,LOW);
                        digitalWrite(SWI4,LOW);
                }
                else if(strcmp(str,"alloff") == 0)
                {
                        digitalWrite(SWI1,HIGH);
                        digitalWrite(SWI2,HIGH);
                        digitalWrite(SWI3,HIGH);
                        digitalWrite(SWI4,HIGH);
                }
                else
                {
                        printf("输入出错...\n");
                }
        }
        return 0;
}
                                                    
                     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值