国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32學習記錄——光敏傳感器的使用

這篇具有很好參考價值的文章主要介紹了STM32學習記錄——光敏傳感器的使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

文章目錄

  • 前言
  • 一、學習目的
  • 二、模塊介紹
  • 三、代碼記錄
  • 總結

前言

? ? ? ?只做學習記錄,記錄自己如何從零學會使用一個模塊,僅僅只是會用,缺乏專業(yè)知識。如果需要了解更多原理,可以從我推薦的技術大佬的文章中獲取。


一、學習目的

? ? ? ?我的學習目的就是通過STM32的ADC功能,學會使用光敏傳感器,并在無光時用oled屏顯示“黑暗”,在有光時用oled屏顯示“明亮”。

二、模塊介紹

STM32學習記錄——光敏傳感器的使用

? ? ? ?我使用的是三線光敏傳感器,通過光敏電阻在不同光照環(huán)境下的不同阻值,從而影響電壓,再通過ADC功能獲取電壓值。用途:光線亮度檢測,光線亮度傳感器,智能小車尋光模塊。接線方面:vcc接3.3v,GND接地,DO引腳直接與單片機相連,通過單片機來檢測高低電平,由此來檢測環(huán)境的光線亮度改變。我定義的IO口是PA0(即模塊的DO引腳接單片機的PA0)

三、代碼記錄

lsens.h(光敏傳感器初始化)

#ifndef __LSENS_H
#define __LSENS_H	
#include "sys.h" 
#include "adc.h" 

void Lsens_Init(void); 		  //初始化光敏傳感器
#endif 

lsens.c

#include "lsens.h"
#include "delay.h"

void Lsens_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
GPIO_Init(GPIOA, &GPIO_InitStructure); 
}

adc.h

#ifndef __ADC_H
#define __ADC_H	
#include "sys.h"

void Adc_Init(void);
u16  Get_Adc(u8 ch); 
u16 Get_Adc_Average(u8 ch,u8 times); 
 
#endif 

adc.c??

 #include "adc.h"
 #include "delay.h"
		   																   
void  Adc_Init(void)
{ 	
	ADC_InitTypeDef ADC_InitStructure; 
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE );	
 

	RCC_ADCCLKConfig(RCC_PCLK2_Div6); 
                        
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;	
	GPIO_Init(GPIOA, &GPIO_InitStructure);	

	ADC_DeInit(ADC1);
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;	
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;
	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;	
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;	
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
	ADC_InitStructure.ADC_NbrOfChannel = 1;	
	ADC_Init(ADC1, &ADC_InitStructure);	
  
	ADC_Cmd(ADC1, ENABLE);	
	
	ADC_ResetCalibration(ADC1);	
	 
	while(ADC_GetResetCalibrationStatus(ADC1));
	
	ADC_StartCalibration(ADC1);	
 
	while(ADC_GetCalibrationStatus(ADC1));
 
//	ADC_SoftwareStartConvCmd(ADC1, ENABLE);	

}				  

u16 Get_Adc(u8 ch)   
{
  	
	ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );			    
  
	ADC_SoftwareStartConvCmd(ADC1, ENABLE);	
	 
	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));

	return ADC_GetConversionValue(ADC1);	
}

u16 Get_Adc_Average(u8 ch,u8 times)
{
	u32 temp_val=0;
	u8 t;
	for(t=0;t<times;t++)
	{
		temp_val+=Get_Adc(ch);
		delay_ms(5);
	}
	return temp_val/times;
} 	 

? ? ? ?這里主要是初始化ADC,相信大家已經(jīng)比較了解了。由于我的能力有限,我只作學習記錄,如果需要了解相關知識,可以看看下面這篇文章。

STM32—ADC詳解_stm32f103有幾個adc_Aspirant-GQ的博客-CSDN博客

main.c

#include "delay.h"
#include "sys.h"
#include "usart.h"	 
#include "adc.h"
#include "oled.h"
#include "gui.h"
#include "lsens.h"
 
 int main(void)
 {	 
	delay_init();	    	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	uart_init(115200);	 	   
 	Adc_Init();		  	
	OLED_Init();			    
	OLED_Clear(0);         

 while(1)
	{
       if( GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0)
		{
         GUI_ShowCHinese(20,0,16,"明亮",16);
        }
	   else
	    {
         GUI_ShowCHinese(20,0,16,"黑暗",16);
        }
        delay_ms(100);   
	}
 }

相關oled的漢字取模

"明",0x00,0x00,0x00,0xFC,0x7C,0x84,0x44,0x84,0x44,0x84,0x44,0xFC,0x7C,0x84,0x44,0x84,
0x44,0x84,0x44,0xFC,0x7C,0x84,0x44,0x84,0x01,0x04,0x01,0x04,0x02,0x14,0x04,0x08,
"亮",0x02,0x00,0x01,0x00,0x7F,0xFC,0x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x00,0x00,
0x7F,0xFE,0x40,0x02,0x8F,0xE4,0x08,0x20,0x08,0x20,0x10,0x22,0x20,0x22,0xC0,0x1E,

"黑",0x00,0x00,0x3F,0xF8,0x21,0x08,0x29,0x28,0x25,0x48,0x3F,0xF8,0x01,0x00,0x01,0x00,
0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x48,0x88,0x44,0x44,0x84,0x44,
"暗",0x00,0x80,0x00,0x40,0x7B,0xFC,0x48,0x00,0x49,0x08,0x48,0x90,0x4F,0xFE,0x78,0x00,
0x49,0xF8,0x49,0x08,0x49,0x08,0x49,0xF8,0x79,0x08,0x49,0x08,0x01,0xF8,0x01,0x08,

總結

由于專業(yè)知識能力有限,僅僅只能做到會使用一個模塊,并且可能會有些許錯誤。文章來源地址http://www.zghlxwxcb.cn/news/detail-470462.html

到了這里,關于STM32學習記錄——光敏傳感器的使用的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • STM32F4_光敏傳感器

    STM32F4_光敏傳感器

    目錄 1. 什么是光敏傳感器、光敏電阻 2. 硬件分析 3. 實驗程序 3.1 main.c 3.2 ADC3.c 3.3 ADC3.h 3.4 Lightsensor.c 3.5 Lightsensor.h 光敏傳感器 也稱為光電傳感器。是利用光電器件把光信號轉換成電信號的一種傳感器。它的敏感波長在可見光波長附近,包括紅外線波長和紫外線波長。光傳感

    2024年02月05日
    瀏覽(29)
  • STM32——ADC讀取光敏傳感器控制LED燈,看門狗中斷

    STM32——ADC讀取光敏傳感器控制LED燈,看門狗中斷

    一、編寫讀取AD值的函數(shù),之后判斷AD值,進行相應操作,比如點燈。 二、用ADC讀取光敏傳感器AO口輸出,并配置ADC通道看門狗監(jiān)控這條通道,當光線太暗時打開LED燈。 之后會再介紹可編程RGB燈帶WS2812B。 光敏傳感器有兩個輸出口,一個是DO(Digital Output),一個是AO(Analog O

    2023年04月18日
    瀏覽(26)
  • STM32第三課:按鍵控制LED燈,光敏傳感器控制蜂鳴器

    STM32第三課:按鍵控制LED燈,光敏傳感器控制蜂鳴器

    ????????STM32的第三課,我們來學習如何使用按鍵來控制LED燈的亮滅。上一節(jié)課我們通過代碼控制了LED的狀態(tài),但是還是處于一種較為低級的方式控制LED燈,缺少交互性,用按鍵進行控制屬于更高的一個層次。然后我們將學習通過光敏傳感器控制蜂鳴器的通斷,讓我們的學

    2024年04月29日
    瀏覽(35)
  • Stm32_標準庫_11_ADC_光敏&熱敏傳感器_測數(shù)值

    Stm32_標準庫_11_ADC_光敏&熱敏傳感器_測數(shù)值

    在測量光敏傳感器數(shù)值得基礎上手動將通道改成熱敏傳感器通道即可 由于溫度傳感器的測量范圍是-20 ~ 105攝氏度,所以輸出溫度得考慮帶上符號這就需要在原有輸出光照強度代碼的基礎上新添加幾個函數(shù) 函數(shù)1: 在獲取模擬電壓函數(shù)最開始寫入通道函數(shù)方便接入GPIO_1或GPIO_

    2024年02月19日
    瀏覽(24)
  • Stm32_標準庫_8_ADC_光敏傳感器_測量具體光照強度

    Stm32_標準庫_8_ADC_光敏傳感器_測量具體光照強度

    ADC簡介 測量方式 采用二分法比較數(shù)據(jù) IO通道 ADC基本結構及配置路線 獲取數(shù)字變量需要用到用到光敏電阻的AO口,AO端口接在PA0引腳即可 測得的模擬數(shù)據(jù)與實際光照強度之間的關系為 代碼: 完整樸素代碼: 效果: 此代碼的不足之處在于每次寫入數(shù)字都會提前占據(jù)固定位置,

    2024年02月04日
    瀏覽(25)
  • 【江科大STM32合集】day2按鍵控制LED&光敏傳感器控制峰鳴器

    【江科大STM32合集】day2按鍵控制LED&光敏傳感器控制峰鳴器

    運算放大器-在江科大51單片機b站視頻(AD/DA)復習 原理:兩個極端 同相輸入端電壓 》反相輸入端 電壓輸出最大值 接Vcc 同相輸入端電壓《 反向輸入端 電壓輸出最小值 接GNd LED.c用來存放驅動程序的主體代碼 (ps:邏輯運算代碼都在這 LED.h用來存放驅動程序可以 對外 提供的函

    2024年01月17日
    瀏覽(28)
  • STM32學習記錄——藍牙發(fā)送數(shù)據(jù)(手機顯示傳感器數(shù)據(jù))

    STM32學習記錄——藍牙發(fā)送數(shù)據(jù)(手機顯示傳感器數(shù)據(jù))

    文章目錄 前言 一、學習目的 二、代碼記錄 ? ? ? ? 將數(shù)據(jù)通過藍牙發(fā)送到手機上,是學生學習單片機的必備技能之一,它可以將手機作為簡單的上位機,從而使數(shù)據(jù)直觀地展現(xiàn)出來。 ? ? ? ?藍牙的初始化、藍牙接受數(shù)據(jù)以及藍牙簡單應用的介紹和代碼記錄,可以看一看下

    2024年02月07日
    瀏覽(27)
  • 【正點原子STM32連載】 第三十二章 光敏傳感器實驗 摘自【正點原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    【正點原子STM32連載】 第三十二章 光敏傳感器實驗 摘自【正點原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    本章,我們將學習使用STM32開發(fā)板板載的一個光敏傳感器。我們還是要使用到ADC采集,通過ADC采集電壓,獲取光敏傳感器的電阻變化,從而得出環(huán)境光線的變化,并在TFTLCD上面顯示出來。 本章分為如下幾個小節(jié): 32.1 光敏傳感器簡介 32.2 硬件設計 32.3 程序設計 32.4 下載驗證

    2024年02月03日
    瀏覽(70)
  • STM32外設芯片驅動學習記錄 —— (一) BH1750光照傳感器驅動開發(fā)

    STM32外設芯片驅動學習記錄 —— (一) BH1750光照傳感器驅動開發(fā)

    一、芯片介紹 二、Datasheet解讀 1.硬件說明 2.寄存器說明 3.通信過程 三、驅動代碼編寫 1.軟件I2C驅動 2. BH1750芯片驅動函數(shù) 總結 ? ? ? ? ? ? BH1750是16位數(shù)字輸出型,環(huán)境光強度傳感器集成電路,使用I2C接口通信,工作電壓:VCC(2.4~3.6V),I2C電平(1.65~VCC),用于各類消費類LCD屏

    2024年02月02日
    瀏覽(17)
  • 單片機設計:stm32遠程水位檢測灌溉系統(tǒng)(水泵+電機驅動+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機app)

    單片機設計:stm32遠程水位檢測灌溉系統(tǒng)(水泵+電機驅動+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機app)

    單片機設計:stm32遠程水位檢測灌溉系統(tǒng)(水泵+電機驅動+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機app) 一、主要功能:? ? 1.水位傳感器檢測水的高度、光敏傳感器檢測周圍光照強度、ds18b20檢測水溫 2.0LED、手機app顯示當前數(shù)據(jù)以及閾值 3.手機app遠程調節(jié)閾值,

    2024年02月05日
    瀏覽(40)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包