在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于GY-30的簡介與驅動及如何操作

9GxC_IoTMaker ? 來源:CSDN技術社區 ? 作者:JYU_hsy ? 2021-05-02 14:07 ? 次閱讀

基于HAL庫的BH1750驅動代碼,通訊方式為模擬IIC,非常適合在使用hal庫的stm開發版上移植

一、GY-30簡介

GY-30是一款內置ROHM-BH1750FLV芯片的數字光照強度模塊。芯片內置16bitAD轉換器,可直接數字輸出,測量光照強度范圍為0-65535lx(精度可選)。除此之外,模塊內置電平轉換,支持3-5V供電,可與5V單片機IO直接連接;對外提供IIC接口,方便使用。

1.1GY-30原理圖

947b0c4c-9bb4-11eb-8b86-12bb97331649.png

1.2模塊引腳

95069d84-9bb4-11eb-8b86-12bb97331649.png

ps:ADDR默認接地,此時IIC地址為0x46

二、GY-30驅動

95247ec6-9bb4-11eb-8b86-12bb97331649.png

2.1GPIO配置

由于本人使用的是hal庫,使能時鐘

__HAL_RCC_GPIOB_CLK_ENABLE();

GPIO配置

/*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1, GPIO_PIN_RESET);

/*Configure GPIO pins : PB0 PB1 */ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

PB0 -- 模擬SDA

PB1 -- 模擬SCL

2.2初始化BH1750

IIC起始(SCL高電平時,SDA下降沿)

/***開始信號***/void BH1750_Start(){ HAL_GPIO_WritePin(GPIOB, sda,GPIO_PIN_SET); //拉高數據線 HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_SET); //拉高時鐘線 delay_us(5); //延時 HAL_GPIO_WritePin(GPIOB, sda,GPIO_PIN_RESET); //產生下降沿 delay_us(5); //延時 HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_RESET); //拉低時鐘線}

發送設備地址,寄存器地址

95672be0-9bb4-11eb-8b86-12bb97331649.png

IIC結束(SCL高電平,SDA上升沿)

/*****停止信號******/void BH1750_Stop(){ HAL_GPIO_WritePin(GPIOB, sda,GPIO_PIN_RESET); //拉低數據線 HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_SET); //拉高時鐘線 delay_us(5); //延時 HAL_GPIO_WritePin(GPIOB, sda,GPIO_PIN_SET); //產生上升沿 delay_us(5); //延時}

2.3設置精度

設置精度只需向BH1750發送指令,本人采用的是H- Resolution mode(0x10)

如需設置其他精度親參考下表

95894856-9bb4-11eb-8b86-12bb97331649.png

2.4讀取光強數據

讀取BH1750內部數據

//連續讀出BH1750內部數據void mread(void){ uchar i; BH1750_Start(); //起始信號 BH1750_SendByte(SlaveAddress+1); //發送設備地址+讀信號

for (i=0; i《3; i++) //連續讀取6個地址數據,存儲中BUF { BUF[i] = BH1750_RecvByte(); //BUF[0]存儲0x32地址中的數據 if (i == 3) { BH1750_SendACK(1); //最后一個數據需要回NOACK } else { BH1750_SendACK(0); //回應ACK } }

BH1750_Stop(); //停止信號 Delay_mms(5);}

合成數據

dis_data=BUF[0];dis_data=(dis_data《《8)+BUF[1]; //合成數據

Value_GY_30=(float)dis_data/1.2;

三、元操作

3.1延時

//系統主頻72MHZvoid delay_us(uint16_t us){ while(us--) { __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop(); }}

void Delay_mms(uint16_t tmp){ uint16_t i=0; while(tmp--) { i=12000; while(i--); }}

3.2IIC開始/結束信號

時序圖如下代碼見2.2初始化BH1750

95bf293a-9bb4-11eb-8b86-12bb97331649.png

3.4發送應答信號

/**************************************發送應答信號入口參數:ack (0:ACK 1:NAK)**************************************/void BH1750_SendACK(int ack){ GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

if(ack == 1) //寫應答信號 HAL_GPIO_WritePin(GPIOB, sda,GPIO_PIN_SET); else if(ack == 0) HAL_GPIO_WritePin(GPIOB, sda,GPIO_PIN_RESET); else return;

HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_SET); //拉高時鐘線 delay_us(5); //延時 HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_RESET); //拉低時鐘線 delay_us(5); //延時}

3.5接收應答信號

/**************************************接收應答信號**************************************/int BH1750_RecvACK(){ GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT; /*這里一定要設成輸入上拉,否則不能讀出數據*/ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Pin = sda; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_SET); //拉高時鐘線 delay_us(5); //延時

if(HAL_GPIO_ReadPin( GPIOB, sda ) == 1 )//讀應答信號 mcy = 1 ; else mcy = 0 ;

HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_RESET); //拉低時鐘線 delay_us(5); //延時

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; HAL_GPIO_Init( GPIOB, &GPIO_InitStruct );

return mcy;}

3.6 IIC發送一個字節

/**************************************向IIC總線發送一個字節數據**************************************/void BH1750_SendByte(uchar dat){ uchar i;

for (i=0; i《8; i++) //8位計數器 { if( 0X80 & dat ) HAL_GPIO_WritePin(GPIOB, sda,GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOB, sda,GPIO_PIN_RESET);

dat 《《= 1; HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_SET); //拉高時鐘線 delay_us(5); //延時 HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_RESET); //拉低時鐘線 delay_us(5); //延時 } BH1750_RecvACK();}

3.7 IIC讀取一個字節

/**************************************從IIC總線讀取一個字節數據**************************************/uchar BH1750_RecvByte(){ uchar i; uchar dat = 0; uchar bit;

GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT; /*這里一定要設成輸入上拉,否則不能讀出數據*/ GPIO_InitStruct.Pin = sda; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init( GPIOB, &GPIO_InitStruct );

HAL_GPIO_WritePin(GPIOB, sda,GPIO_PIN_SET); //使能內部上拉,準備讀取數據, for (i=0; i《8; i++) //8位計數器 { dat 《《= 1; HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_SET); //拉高時鐘線 delay_us(5); //延時

if( SET == HAL_GPIO_ReadPin( GPIOB, sda ) ) bit = 0X01; else bit = 0x00;

dat |= bit; //讀數據

HAL_GPIO_WritePin(GPIOB, scl,GPIO_PIN_RESET); //拉低時鐘線 delay_us(5); //延時 }

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; HAL_GPIO_Init( GPIOB, &GPIO_InitStruct ); return dat;}

四、測試結果與光照強度參考

測試結果

光照強度參考值

編輯:lyn

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 轉換器
    +關注

    關注

    27

    文章

    8745

    瀏覽量

    148069
  • IIC接口
    +關注

    關注

    0

    文章

    23

    瀏覽量

    11735
  • GY-30
    +關注

    關注

    1

    文章

    8

    瀏覽量

    13223

原文標題:智能花盆2.0驅動:基于STM32_HAL庫GY-30(BH1750FLV)驅動

文章出處:【微信號:IoTMaker,微信公眾號:機智云開發者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PZT驅動開關電路

    關于PZT的驅動開關電路參考
    發表于 01-17 16:37 ?1次下載

    GY/T 318-2018 地面數字電視廣播單頻網系統實施指南

    電子發燒友網站提供《GY/T 318-2018 地面數字電視廣播單頻網系統實施指南.pdf》資料免費下載
    發表于 01-13 13:57 ?0次下載

    30V/2A同步降壓 高精度 PWM調光LED驅動

    概述: PC1803是1MHz的高效率,30V同步降壓LED驅動器最大輸入電壓。PC1803集成主RDS極低的開關和同步開關(ON)以最小化傳導損耗。最高可達2A具有出色的負載和連續輸出電流線路調節
    的頭像 發表于 11-29 17:39 ?335次閱讀
    <b class='flag-5'>30</b>V/2A同步降壓 高精度 PWM調光LED<b class='flag-5'>驅動</b>器

    TPS92200EVM 30V、1.5A降壓LED驅動器評估模塊

    電子發燒友網站提供《TPS92200EVM 30V、1.5A降壓LED驅動器評估模塊.pdf》資料免費下載
    發表于 11-22 14:22 ?0次下載
    TPS92200EVM <b class='flag-5'>30</b>V、1.5A降壓LED<b class='flag-5'>驅動</b>器評估模塊

    采用智能柵極驅動器的低壓電機驅動操作

    電子發燒友網站提供《采用智能柵極驅動器的低壓電機驅動操作.pdf》資料免費下載
    發表于 09-25 10:13 ?1次下載
    采用智能柵極<b class='flag-5'>驅動</b>器的低壓電機<b class='flag-5'>驅動</b><b class='flag-5'>操作</b>

    關于臺式電腦國產操作系統鴻蒙、統信、麒麟等操作系統光驅驅動程序一些問題!

    現在國產化替代越來越深入,很多電腦都用了的是國產操作系統 對于:DVD刻錄機光驅,移動USB刻錄機光驅,在WIN系統可以正常實現功能,或者聯網驅動,在國產系統就無法正常使用功能 請問有沒有專家和老師
    發表于 09-23 11:07

    linuxlcd驅動在哪個位置

    簡介 LinuxLCD驅動是Linux操作系統中用于控制液晶顯示器(LCD)的驅動程序。它負責與硬件進行通信,實現對LCD的控制和管理。LinuxLCD
    的頭像 發表于 08-30 15:28 ?451次閱讀

    multisim蜂鳴器驅動程序詳解

    以下是關于Multisim蜂鳴器驅動程序的詳解: 蜂鳴器簡介 蜂鳴器是一種電子設備,用于發出聲音信號。它廣泛應用于各種電子設備中,如電話、鬧鐘、汽車喇叭等。蜂鳴器的工作原理是通過電磁線圈產生磁場,使
    的頭像 發表于 08-09 10:18 ?1108次閱讀

    THS4511-SP能否在100Gy/h的核輻射環境下工作?

    THS4511-SP: 該器件能否在100Gy/h的核輻射環境下工作
    發表于 08-05 06:20

    RA6T2的16位模數轉換器操作 [12] 應用項目簡介

    RA6T2的16位模數轉換器操作 [12] 應用項目簡介
    的頭像 發表于 06-10 08:06 ?400次閱讀
    RA6T2的16位模數轉換器<b class='flag-5'>操作</b> [12] 應用項目<b class='flag-5'>簡介</b>

    實現機器人操作系統——ADI Trinamic電機控制器ROS1驅動程序簡介

    摘要 機器人操作系統(ROS)驅動程序基于ADI產品而開發,因此可直接在ROS生態系統中使用這些產品。本文將概述如何在應用、產品和系統(例如,自主導航、安全氣泡地圖和數據收 集機器人)中使用和集成
    的頭像 發表于 04-24 15:43 ?2300次閱讀
    實現機器人<b class='flag-5'>操作</b>系統——ADI Trinamic電機控制器ROS1<b class='flag-5'>驅動</b>程序<b class='flag-5'>簡介</b>

    30V 7 通道低側驅動器TPL7407LA數據表

    電子發燒友網站提供《30V 7 通道低側驅動器TPL7407LA數據表.pdf》資料免費下載
    發表于 03-19 09:26 ?0次下載
    <b class='flag-5'>30</b>V 7 通道低側<b class='flag-5'>驅動</b>器TPL7407LA數據表

    30V 7 通道低側驅動器TPL7407LA-Q1數據表

    電子發燒友網站提供《30V 7 通道低側驅動器TPL7407LA-Q1數據表.pdf》資料免費下載
    發表于 03-19 09:09 ?0次下載
    <b class='flag-5'>30</b>V 7 通道低側<b class='flag-5'>驅動</b>器TPL7407LA-Q1數據表

    高壓放大器HA-30K 新品上市!

    HA-30K 是一臺非常實用的高電壓訊號放大器,它具有最小的體積、最輕的重量及最簡易的操作,非常高的電壓輸出(30kVp-p)等優點。 本機連續輸出電壓量最大值達到 30kVp-p,還
    的頭像 發表于 03-18 14:37 ?397次閱讀
    高壓放大器HA-<b class='flag-5'>30</b>K 新品上市!

    RA6T2的16位模數轉換器操作 [1] 簡介,A/D轉換器概述

    RA6T2的16位模數轉換器操作 [1] 簡介,A/D轉換器概述
    的頭像 發表于 03-13 08:05 ?429次閱讀
    RA6T2的16位模數轉換器<b class='flag-5'>操作</b> [1] <b class='flag-5'>簡介</b>,A/D轉換器概述
    主站蜘蛛池模板: 天天做天天爱天天做天天吃中 | 国产精品一区在线播放 | 国产成年网站v片在线观看 国产成人91青青草原精品 | 日本一区二区视频在线观看 | 亚洲午夜网未来影院 | 午夜精品网 | 欧美人另类zooz | 色婷婷综合激情 | 色五月在线视频 | 天天摸夜夜添狠狠添2018 | 欧美色视频在线观看 | 网站色小妹 | 久久怡红院国产精品 | 欧美国产黄色 | 欧美日韩亚洲国内综合网俺 | 亚洲第一在线播放 | 在线免费色 | 干美女在线视频 | videosxxoo18在线 | 国产亚洲第一 | 玖玖激情 | 性香港xxxxx免费视频播放 | 4tube高清性欧美 | 又黄又视频 | 青草视频在线观看国产 | 欧美另类丰满69xxxxx | 97久久伊人精品影院 | www爽| 爱爱网站免费 | 黄色片网站观看 | 激情五月亚洲色图 | 在线观看免费xx高清视频 | 亚洲欧美成人 | 特级全黄一级毛片免费 | 毛片在线网站 | 91正在播放 | 九九热在线免费视频 | 中国国产aa一级毛片 | 亚洲黄色色图 | 四虎国产精品免费入口 | 午夜精品久久久久久久第一页 |