树莓派之外设开发

WiringPi库(Linux动态库:.so 静态库:.a)
API printf(c标准库)

树莓派wiringPi库详解

树莓派的接口: 驱动
IO口:input output 对主控来说
Input:人体,烟雾,火焰,震动等
Output:继电器,蜂鸣器

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

语音识别模块,液晶屏
串口uart
IIC
SPI
IIS
其他特定硬件的接口:flash

Nanopi:Linux
S3c2410,2440 6410
Tiny210 tiny4412
海思方案,瑞芯微方案,移远方案

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

全双工:两个人可以同时交流,串口通信属于全双工

半双工:俩人交流,同一时间只有一人说话

如何查看树莓派的针脚

gpio readall
在这里插入图片描述
GPIO 的针脚都可以插

树莓派控制单个继电器

#include <stdio.h>
#include <wiringPi.h>

#define SWITCHER 7

int main()
{
        int cmd;
        if(wiringPiSetup() == -1){
                printf("硬件接口初始化失败\n");
                return -1;
        }
        pinMode(SWITCHER, OUTPUT);
        digitalWrite(SWITCHER, HIGH);

        while(1){
                printf("请输入0/1: 0-断开开关, 1-导通开关\n");
                scanf("%d", &cmd);
                if(cmd == 1){
                        digitalWrite(SWITCHER, LOW);
                }else if(cmd == 0){
                        digitalWrite(SWITCHER, HIGH);
                }else{
                        printf("输入错误\n");
                }
        }
        return 0;
}
树莓派控制继电器组
#include <stdio.h>
#include <wiringPi.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);
        pinMode(SWI2, OUTPUT);
        pinMode(SWI3, OUTPUT);
        pinMode(SWI4, OUTPUT);

        digitalWrite(SWI1, HIGH);
        digitalWrite(SWI2, HIGH);
        digitalWrite(SWI3, HIGH);
        digitalWrite(SWI4, HIGH);

        while(1){
                memset(cmd, '\0', sizeof(cmd));
                printf("请输入1/2/3/4 on/off,数字是开关序号,on---开启,off---关闭\n");
                // scanf("%s", cmd);
                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");
                }
        }
        return 0;
}

就这样吧,上述代码都很简单,没什么好解释的。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值