树莓派控制GY-30

2023-10-22 04:10
文章标签 控制 树莓 30 gy

本文主要是介绍树莓派控制GY-30,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 学习记录
    • 设备地址
    • 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

错误原因

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

附录

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

求助

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

这篇关于树莓派控制GY-30的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/258983

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

使用DrissionPage控制360浏览器的完美解决方案

《使用DrissionPage控制360浏览器的完美解决方案》在网页自动化领域,经常遇到需要保持登录状态、保留Cookie等场景,今天要分享的方案可以完美解决这个问题:使用DrissionPage直接... 目录完整代码引言为什么要使用已有用户数据?核心代码实现1. 导入必要模块2. 关键配置(重点!)3.

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用

Springboot控制反转与Bean对象的方法

《Springboot控制反转与Bean对象的方法》文章介绍了SpringBoot中的控制反转(IoC)概念,描述了IoC容器如何管理Bean的生命周期和依赖关系,它详细讲解了Bean的注册过程,包括... 目录1 控制反转1.1 什么是控制反转1.2 SpringBoot中的控制反转2 Ioc容器对Bea

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D