国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    9418

    瀏覽量

    156335
  • IIC接口
    +關注

    關注

    0

    文章

    23

    瀏覽量

    12017
  • GY-30
    +關注

    關注

    1

    文章

    8

    瀏覽量

    13511

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    關于NCP81155 MOSFET驅動器的設計解讀

    關于NCP81155 MOSFET驅動器的設計解讀 在電子工程領域,MOSFET驅動器是電源管理電路中的關鍵組件,它對于高效、穩定地驅動MOSFET起著至關重要的作用。今天我們來深入了
    的頭像 發表于 02-09 16:20 ?140次閱讀

    【瑞薩RA6E2地奇星開發板試用】SHT30傳感器串口調試學習和驗證

    驅動 SHT30傳感器 的項目,采集環境溫濕度信息,同時會介紹串口調試內容。 1. SHT30溫濕度傳感器簡介 1.1 SHT30實物展示
    發表于 12-11 14:49

    SiLM27531HAC-AQ 30V, 5A/5A單通道高欠壓保護閾值的高速低邊門極驅動

    在開關電源系統中,門極驅動器是高效驅動功率器件、實現快速開關操作的關鍵組件,它能有效降低開關功率損耗,從而顯著提高系統效率。對于GaN等先進的寬帶隙功率器件技術而言,系統對驅動器的性能
    發表于 11-04 08:48

    STMicroelectronics CAM-66GY相機模塊技術解析與應用指南

    STMicroelectronics CAM-66GY RGB專業模塊是用于無縫評估和集成VD66GY 150萬像素彩色圖像傳感器的樣本攝像頭模塊。該款即用型視覺擴展器件采用低至6.5mm2的微型
    的頭像 發表于 10-20 09:51 ?997次閱讀
    STMicroelectronics CAM-66<b class='flag-5'>GY</b>相機模塊技術解析與應用指南

    SiLM8260ABCS-AQ雙通道隔離驅動30V/10A 帶米勒鉗位的雙輸入半橋驅動

    功率管在橋式拓撲中因米勒電容效應導致的誤導通,提升系統可靠性,尤其在半橋應用中至關重要。 寬電壓與保護: 輸出側驅動器電源電壓 (VDDA/B) 范圍寬達 最高30V,適應多種功率器件需求。 輸入側
    發表于 08-11 08:46

    數字光模塊 GY-30說明書

    電子發燒友網站提供《數字光模塊 GY-30說明書.pdf》資料免費下載
    發表于 08-09 16:07 ?3次下載

    基于意法半導體STM32N6和VD66GY的機器視覺方案

    基于STM32N6主控平臺和ST VD66GY圖像傳感器的創新方案,提供高效人體姿態監控解決方案。STM32N6搭載強大的Arm Cortex-M55處理器和嵌入式神經單元,結合VD66GY傳感器的高靈敏度圖像采集能力,可實現復雜的圖像識別與處理任務,如姿態估計、行為分析
    的頭像 發表于 07-03 11:01 ?5065次閱讀
    基于意法半導體STM32N6和VD66<b class='flag-5'>GY</b>的機器視覺方案

    迅為RK3568驅動指南GPIO子系統 GPIO操作函數實驗

    迅為電子RK3568開發板驅動指南GPIO子系統 GPIO操作函數實驗
    的頭像 發表于 05-28 15:24 ?1331次閱讀
    迅為RK3568<b class='flag-5'>驅動</b>指南GPIO子系統 GPIO<b class='flag-5'>操作</b>函數實驗

    【直播預告】《實時操作系統應用技術—基于RT-Thread與ARM的編程實踐》教學脈絡及資源簡介

    直播預告直播主題:《實時操作系統應用技術—基于RT-Thread與ARM的編程實踐》教學脈絡及資源簡介開放時間:2025年5月29日(周四)20:00主講老師:王宜懷課程類型:視頻直播觀看平臺
    的頭像 發表于 05-26 17:50 ?1258次閱讀
    【直播預告】《實時<b class='flag-5'>操作</b>系統應用技術—基于RT-Thread與ARM的編程實踐》教學脈絡及資源<b class='flag-5'>簡介</b>

    迅為RK3568開發板驅動指南GPIO子系統三級節點操作函數實驗

    迅為RK3568開發板驅動指南GPIO子系統三級節點操作函數實驗
    的頭像 發表于 05-26 15:39 ?1519次閱讀
    迅為RK3568開發板<b class='flag-5'>驅動</b>指南GPIO子系統三級節點<b class='flag-5'>操作</b>函數實驗

    使用 dsPIC30F 實現 BLDC 電機的正弦電壓驅動

    簡介 在 BLDC 電機應用中,由于存在噪音和轉矩脈動問題,使用三相正弦波電壓代替六拍電壓是一種理想的控制方法。本文檔介紹的應用軟件利用 dsPIC30F 數字信號控制器高效且可靠地實現了 BLDC
    發表于 05-14 15:56

    技術驅動未來:2QD30A17K-I-xx雙通道IGBT驅動核深度解析

    技術驅動未來:2QD30A17K-I-xx雙通道IGBT驅動核深度解析 在電力電子領域,IGBT驅動器的性能直接決定了系統效率、可靠性與安全性。基本半導體子公司-深圳青銅劍技術有限公司
    的頭像 發表于 05-03 10:29 ?770次閱讀
    技術<b class='flag-5'>驅動</b>未來:2QD<b class='flag-5'>30</b>A17K-I-xx雙通道IGBT<b class='flag-5'>驅動</b>核深度解析

    一款內置4個穩壓環節的交流直接驅動LED芯片-WD15-S30T

    WD15-S30T是一款內置4個穩壓環節的交流直接驅動LED芯片,可從整流后的交流電壓驅動多個串聯LED,由于其外部元器件數量少,給設計帶來極大的便利。WD15-S30T具有較高的LE
    的頭像 發表于 04-15 09:38 ?1089次閱讀
    一款內置4個穩壓環節的交流直接<b class='flag-5'>驅動</b>LED芯片-WD15-S<b class='flag-5'>30</b>T

    一款內部有4個步驟交流直接LED驅動IC-WD15-S30A

    LED驅動芯片 - WD15-S30A是一款交流直接LED驅動IC,內部有4個步驟。它可以從整流的交流電壓下驅動幾個系列的led。它將提供很大的方便的設計,因為它需要少量的外部組件。
    的頭像 發表于 03-12 09:35 ?740次閱讀
    一款內部有4個步驟交流直接LED<b class='flag-5'>驅動</b>IC-WD15-S<b class='flag-5'>30</b>A

    效率提升20%,噪音降低30%!智能風扇的電機驅動方案有多強?

    智能風扇電機驅動方案你是否厭倦了傳統風扇的噪音和高耗電?是否希望擁有一臺既安靜又節能的智能風扇?我們來揭秘智能風扇的直流有刷電機驅動方案,看看它是如何實現效率提升20%,噪音降低30%的!直流有刷
    的頭像 發表于 03-06 11:54 ?370次閱讀
    效率提升20%,噪音降低<b class='flag-5'>30</b>%!智能風扇的電機<b class='flag-5'>驅動</b>方案有多強?