本文主要是介绍树莓派控制GY-30,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 学习记录
- 设备地址
- GY-30管脚
- 指令
- 代码
- 运行结果
- 错误原因
- 附录
- 求助
学习记录
GY-30是一款数字光模块,通过GY-30的学习,进一步掌握I2C的使用方法。
设备地址
经过查询,设备地址为0x23
GY-30管脚
addr管脚一般接低电平,此时,写操作指令为0x46,读操作指令为0x47。
指令
名称 | 操作码 | 作用 |
---|---|---|
BHAddWrite | 0x46 | 写地址 |
BHAddRead | 0x47 | 读地址 |
BHPowDown | 0x00 | 关闭模块 |
BHPowOn | 0x01 | 打开模块等待指令 |
BHReset | 0x07 | 重置数据寄存器(仅在BHpowOn模式下有效) |
BHModeH1 | 0x10 | 高分辨率 模式1 单位 1lx 测量时间 120ms |
BHModeH2 | 0x11 | 高分辨率 模式2 单位 0.5lx 测量时间 120ms |
BHModeL | 0x13 | 低分辨率 单位4lx 测量时间16ms |
BHSigModeH | 0x20 | 一次测量 高分辨率 模式1,然后转到powerdown模式 |
BHSigModeH2 | 0x21 | 一次测量 高分辨率 模式2,然后转到powerdown模式 |
BHSigModeL | 0x23 | 一次测量 低分辨率,然后转到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
错误原因
不知道,调了一晚上没调出来,感觉应该是对的。
附录
读寄存器内容
求助
有人调出来的话,还望不吝赐教。
这篇关于树莓派控制GY-30的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!