树莓派控制GY-30

学习记录

GY-30是一款数字光模块,通过GY-30的学习,进一步掌握I2C的使用方法。

设备地址

经过查询,设备地址为0x23
在这里插入图片描述

GY-30管脚

在这里插入图片描述
addr管脚一般接低电平,此时,写操作指令为0x46,读操作指令为0x47。

指令

名称操作码作用
BHAddWrite0x46写地址
BHAddRead0x47读地址
BHPowDown0x00关闭模块
BHPowOn0x01打开模块等待指令
BHReset0x07重置数据寄存器(仅在BHpowOn模式下有效)
BHModeH10x10高分辨率 模式1 单位 1lx 测量时间 120ms
BHModeH20x11高分辨率 模式2 单位 0.5lx 测量时间 120ms
BHModeL0x13低分辨率 单位4lx 测量时间16ms
BHSigModeH0x20一次测量 高分辨率 模式1,然后转到powerdown模式
BHSigModeH20x21一次测量 高分辨率 模式2,然后转到powerdown模式
BHSigModeL0x23一次测量 低分辨率,然后转到powerdown模式

代码

/****************************************************************
    > File Name: i2c_GY_30.c
    > Author: admin
    > Mail: 
    > Created Time: 2020年01月01日 星期三 19时43分51秒
    > Modified Time:2020年01月01日 星期三 21时26分50秒
 ****************************************************************/

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


#define BHAddWrite     0x46      //写地址
#define BHAddRead      0x47      //读地址
#define BHPowDown      0x00      //关闭模块
#define BHPowOn        0x01      //打开模块等待指令 
#define BHReset        0x07      //重置数据寄存器仅在BHpowOn模式>
#define BHModeH1       0x10      //高分辨率 模式1 单位 11X 测量时
#define BHModeH2       0x11      //高分辨率 模式2 单位 11X 测量时
#define BHModeL        0x13      //低分辨率 单位4lx 测量时间16ms 
#define BHSigModeH     0x20      //一次测量高分辨率模式1,然后转>
#define BHSigModeH2    0x21      //同上类似
#define BHSigModeL     0x23      //同上类似

int main()
{
    wiringPiSetup();

    int fd = wiringPiI2CSetup(0x23);


    if(-1 == fd)
    {
        printf("wrong\n");
        exit(0);
    }

    wiringPiI2CWriteReg8(fd, BHAddWrite, BHPowOn);
    wiringPiI2CWriteReg8(fd, BHAddWrite, BHReset);
    wiringPiI2CWriteReg8(fd, BHAddWrite, BHModeL);
    delay(180);

    short int temp = 0xff;
    temp = wiringPiI2CReadReg16(fd, BHAddRead);
    printf("temp = %d\n", temp);
    //conversation(temp);


    return 0;
}

void conversation(int temp)
{

}

运行结果

输出为0

错误原因

不知道,调了一晚上没调出来,感觉应该是对的。

附录

在这里插入图片描述
读寄存器内容

求助

有人调出来的话,还望不吝赐教。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值