树莓派的外设开发

1、树莓派的接口

IO口:驱动

有信息传给主控芯片

Input(输入信息数据):

人体红外传感器,烟雾传感器,火焰传感器,振动传感器

Output(输出高、低电频):

继电器,蜂鸣器

增强性PWM:
电机调速,灯光调明亮

串口:uart
IIC
SPI
IIS

其它特定硬件的接口:flash

树莓派相同平台:

Nanopi:Linux

以前三星:
S3c2410,2440,6410

可以跑安卓:

Tiny210,Tiny4412

海思方案,福建的瑞芯微方案,上海的移远方案

C51,STM32,Arduino,WemosD1

纯逻辑开发

没有OS(系统:Linux)

2、树莓派的接口函数1

概述

wirngPi 库:特定平台,特定功能接口 (同Linux 动态库 .so 静态库 .a 类似)

API printf C 标准库

验证wiringPi库的安装

1、验证wiringPi的是否安装成功,输入gpio -v,会在终端中输出相关wiringPi的信息。否则安装失败。

如果没有安装:
进入 wiringPi的github (https://git.drogon.net/?p=wiringPi;a=summary) 下载安装包。点击页面的第一个链接的右边的snapshot,下载安装压缩包。

然后进入安装包所在的目录执行以下命令:

>tar xfz wiringPi-98bcb20.tar.gz   //98bcb20为版本标号,可能不同
>cd wiringPi-98bcb20
>./build

编译 和运行

假如你写了一个LEDtest.c 的项目,则如下

编译:

g++ -Wall -o LEDtest LEDtest.cpp  -lwiringPi         //使用C++编程 , -Wall 是为了使能所有警告,以便发现程序中的问题

gcc -Wall -o LEDtest LEDtest.c   -lwiringPi          //使用C语言编程


运行:

sudo ./LEDtest

在使用wiringPi库时,需要包含头文件 #include<wiringPi.h> 凡是写wiringPi的程序,都包含这个头文件

vi demo1.c

#include<wiringPi.h>

int main()
{
          wiringPiSetup();
}

gcc demo1.c -lwiringPi      //编译

查看IO口

命令

gpio readall

树莓派引脚

3.3V 正极 继电器 VCC相连

0V 负极 接地线 继电器GND 负相连

GPIO. 7:IO控制引脚 继电器IN

在这里插入图片描述

实物针脚位置摆放对比

实物针脚摆放对比

上继电器编程


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

#define SWITCHER 7

int main()
{
        int cmd;
        if(wiringPiSetup() == -1){   //初始化继电器接口
                printf("硬件接口初始化失败!\n");
                return -1;
        }
        pinMode(SWITCHER, OUTPUT);   //设定7针脚为输出口
        digitalWrite(SWITCHER,HIGH);  //初始化设置为关闭
        while(1){
                printf("请输入0/1:0——断开开关,1——打开开关\n");
                scanf("%d",&cmd);
                getchar();
                if(cmd == 1){
                        digitalWrite(SWITCHER,LOW);  //打开
                }else if(cmd == 0){
                        digitalWrite(SWITCHER,HIGH);  //断开
                }else if(cmd == 2){
                        return -1;
                }else{
                        printf("输入错误!\n");
                }
        }
}

结果:

当输入0断开 绿灯关闭

当输入1连接 绿灯点亮

当输入2退出

继电器组控制

#include<stdio.h>
#include<string.h>
#include<wiringPi.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){
                printf("请输入1/2/3/4 on off:off——断开开关,on——打开开关\n");
                memset(cmd,'\0',sizeof(cmd));
                //scanf("%s",cmd);
                gets(cmd);
                //getchar();

                if(strcmp(cmd,"1 on") == 0){
                        digitalWrite(SWI1,LOW);
                }else if(strcmp(cmd,"1 off") == 0){
                        digitalWrite(SWI1,HIGH);
                }else if(strcmp(cmd,"2 on") == 0){
                        digitalWrite(SWI2,LOW);
                }else if(strcmp(cmd,"2 off") == 0){
                        digitalWrite(SWI2,HIGH);
                }else if(strcmp(cmd,"3 on") == 0){
                        digitalWrite(SWI3,LOW);
                }else if(strcmp(cmd,"3 off") == 0){
                        digitalWrite(SWI3,HIGH);
                }else if(strcmp(cmd,"4 on") == 0){
                        digitalWrite(SWI4,LOW);
                }else if(strcmp(cmd,"4 off") == 0){
                        digitalWrite(SWI4,HIGH);
                }else 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 if(strcmp(cmd,"quit") == 0){
                        return -1;
                }else{
                        printf("输入错误!\n");
                }
        }
}


  1. 树莓派wiringPi库开发参考 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值