版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
--五級教學(xué)
智能硬件創(chuàng)新課程ESP32
第一章初識(shí)ESP32第二章
數(shù)碼管第三章
點(diǎn)陣動(dòng)畫第四章
串行通信--UARTESP32智能硬件創(chuàng)新課程|總目錄ESP32智能硬件創(chuàng)新課程|初識(shí)ESP32第一章初識(shí)ESP32ESP32智能硬件創(chuàng)新課程|初識(shí)ESP32目錄
ESP32簡介驅(qū)動(dòng)及軟件安裝學(xué)習(xí)平臺(tái)搭設(shè)
Hello
World!ESP32數(shù)字信號(hào)讀寫操作ESP32模擬信號(hào)讀寫操作ESP32電容觸摸傳感器ESP32霍爾傳感器ESP32外部中斷Serial.printf()函數(shù)本章小結(jié)ESP32智能硬件--初始ESP32|ESP32簡介
ESP32簡介ESP32智能硬件--初識(shí)ESP32|ESP32簡介時(shí)代背景
與科技同步
云/物/移/大/智與3/4級知識(shí)體系兼容 ArduinoC
開源 Arduino/ESP32/樹莓派ESP32智能硬件--初識(shí)ESP32|ESP32簡介為什么選擇ESP32ESP32智能硬件--初識(shí)ESP32|ESP32簡介ESP32簡介ESP32是Espressif樂鑫信息科技推出的一款集成度極高的WiFi+藍(lán)牙雙模物聯(lián)網(wǎng)芯片。擁有雙核32位MCU(微控制單元),主頻高達(dá)240MHz。ESP32專為移動(dòng)設(shè)備、可穿戴電子產(chǎn)品和IoT應(yīng)用設(shè)計(jì),廣泛應(yīng)用于平板電腦、無線音箱、攝像頭和物聯(lián)網(wǎng)設(shè)備等領(lǐng)域。ESP32芯片具有如下特點(diǎn):性能穩(wěn)定。工作溫度范圍-40℃到+125℃,具有動(dòng)態(tài)電壓調(diào)整功能。高度集成。集成天線開關(guān)、功率放大器、接收低噪聲放大器、濾波器、電源管理模塊等功能于一體。超低功耗。省電模式和動(dòng)態(tài)電壓調(diào)整等WiFi&藍(lán)牙解決方案。提供WiFi和雙模藍(lán)牙功能。ESP32簡介我們?nèi)粘J褂玫拈_發(fā)板一般采用的是ESP32WROOM芯片模組。模組集成了ESP32芯片,F(xiàn)lash閃存(非易失性內(nèi)存),天線和其他精密元件。ESP32WROOM模組正表面是一個(gè)方形的保護(hù)罩,保護(hù)罩內(nèi)部是ESP32芯片、Flash閃存及其它相關(guān)電路。模組內(nèi)Flash閃存的容量一般為4MB。ESP32智能硬件--初識(shí)ESP32|ESP32簡介ESP32-WROOM-32芯片模組正面及背面視圖ESP32智能硬件--初始ESP32|ESP32簡介ESP32智能硬件--初始ESP32|ESP32簡介ESP32芯片種類(了解即可)-ESP32-D0WDQ6D=雙核S=單核0/2=嵌入式Flash:0=無2=16Mbit-ESP32-D0WDWD=通信模式Q6=封裝QFN6*6沒有代表QFN5\*5-ESP32-D2WD-ESP32-S0WD
參考:ESP32系列芯片技術(shù)規(guī)格書esp32_datasheet_cn.pdfESP32智能硬件--初識(shí)ESP32|ESP32簡介ESP32芯片基本性能及外設(shè)32-bit雙核處理器,主頻高達(dá)240Mhz,運(yùn)算能力高達(dá)600MIPS(MillionInstructionsPerSecond)
448KBROM,用于程序啟動(dòng)和內(nèi)核功能調(diào)用電機(jī)PWM,LEDPWM(多達(dá)16個(gè)通道)520KBSRAM、RTC中16KBSRAMWiFi+藍(lán)牙+低功耗藍(lán)牙(BLE)4個(gè)SPI、2個(gè)I2C、2個(gè)I2S(對應(yīng)音頻串口),3個(gè)UART等接口工作電壓:3.3V(范圍:2.7V~3.6V)QSPI最多可連接4個(gè)Flash/SRAM,每個(gè)Flash最大為16MB模組引腳輸出總電流:1100mA12-bitSARADC(逐次逼近式模擬數(shù)字轉(zhuǎn)換器),多達(dá)18個(gè)通道單個(gè)引腳最大輸出電流:40mA2個(gè)8-bitD/A(DAC)轉(zhuǎn)換器IR(TX/RX)10個(gè)觸摸傳感器霍爾傳感器34個(gè)GPIO接口(輸入輸出)0~19,21~23,25~27,32~39,由于開發(fā)板的封裝等原因,以下編號(hào)的引腳在ESP32的開發(fā)板中通常未被引出:GPIO20、GPIO24、GPIO28、GPIO29、GPIO30、GPIO31、GPIO37、GPIO38。ESP32智能硬件--初識(shí)ESP32|ESP32簡介基于ESP32WROOM模組的開發(fā)板
基于ESP32強(qiáng)大的性能和開源開放的特點(diǎn),國內(nèi)涌現(xiàn)出眾多的開發(fā)板和集成開發(fā)板。ESP32智能硬件--初識(shí)ESP32|ESP32簡介該模塊共有38個(gè)引腳,其中有34個(gè)輸入輸出接口??捎靡_23個(gè),排除6個(gè)Flash讀寫引腳(*)、EN和BOOT按鍵引腳(GPIO0)、2個(gè)電源引腳、3個(gè)接地引腳、以及UART0引腳(GPIO1、GPIO3)。EN按鍵:使能端,可觸發(fā)復(fù)位操作,重啟模組。Boot+EN:重啟并進(jìn)入編程模式。GPIO6~GPIO11用于讀寫閃存Flash時(shí)使用。16個(gè)ADC引腳ESP32模塊上有10個(gè)引腳對電容變化很敏感??梢詫⑦@些引腳連接到某些焊盤(PCB上的焊盤),并將它們用作觸摸開關(guān)。I2C:SDA和SCL引腳用于I2C通信。SPI:4個(gè)SPI接口(SPI0、SPI1、VSPI和HSPI),可用于連接顯示屏、SD/microSD存儲(chǔ)卡模塊、外部閃存等。串行通信(UART):該模塊上有2個(gè)UART串行接口。使用這些引腳,您可以在兩個(gè)設(shè)備之間傳輸高達(dá)5Mbps的信息。UART0還具有CTS和RTS控制。ESP32引腳示意圖ESP32-DevKitC-V2(r1.0)引腳功能映射示意圖ESP32智能硬件--初識(shí)ESP32|ESP32簡介ESP32-KPCB專用開發(fā)板為了更加方便學(xué)習(xí)及電路搭設(shè),本課程開發(fā)了專用的學(xué)習(xí)板。該學(xué)習(xí)板將ESP32所有可用的引腳引出來,同時(shí)給每個(gè)引腳配備了電源,將本書要學(xué)習(xí)的I2C和SPI引腳單獨(dú)引出。為了學(xué)習(xí)方便,單獨(dú)配備了I2C接口的可插拔OLED顯示屏,以及兩路馬達(dá)驅(qū)動(dòng)接口,開發(fā)板指示燈連接到D12引腳。該主板在硬件上做了特殊的ArduinoIDE兼容,不用手動(dòng)切換boot模式,實(shí)現(xiàn)一鍵下載。ESP32智能硬件--初識(shí)ESP32|ESP32簡介ESP32WROOM模組3個(gè)SPI接口3個(gè)I2C接口6個(gè)GPIO接口0.96英寸OLED顯示屏
(I2C接口)13個(gè)GPIO接口5V電源5V外部電源板載指示燈(D12)USB端口Reset按鍵Boot按鍵馬達(dá)撥碼開關(guān)馬達(dá)接口電源指示燈Tx/Rx指示燈ESP32–KPCB專用開發(fā)板ESP32智能硬件--初識(shí)ESP32|ESP32簡介ESP32普通開發(fā)板當(dāng)使用其他類型的開發(fā)板進(jìn)行學(xué)習(xí)時(shí),一般需要和面包板配合使用,由于一般開發(fā)板使用的是ESP32模組,導(dǎo)致開發(fā)板引腳的間距稍大,普通的單塊面包板不能滿足要求,此時(shí)需要兩塊面包板配合使用,將其中一塊面包板的邊緣電源部分去除后和另外一塊面包板連接。ESP32標(biāo)準(zhǔn)開發(fā)使用示意圖ESP32智能硬件--初識(shí)ESP32|驅(qū)動(dòng)及軟件安裝
驅(qū)動(dòng)及軟件安裝ESP32智能硬件--初識(shí)ESP32|驅(qū)動(dòng)及軟件安裝驅(qū)動(dòng)安裝(CP210X)全國青少年機(jī)器人技術(shù)等級考試官方網(wǎng)站下載,下載鏈接為:/h-nd-288.html。選擇相應(yīng)的
Windows系統(tǒng)版本,根據(jù)Windows系統(tǒng)32位/64位選擇相應(yīng)文件雙擊執(zhí)行,即可完成合適版本的驅(qū)動(dòng)安裝。ESP32智能硬件--初識(shí)ESP32|驅(qū)動(dòng)及軟件安裝ESP32forArduino軟件開發(fā)環(huán)境(Windows)安裝ESP32forArduino軟件開發(fā)環(huán)境基于ArduinoIDE,適配的Arduino版本是1.8或更高。ArduinoIDE軟件可從官網(wǎng)下載,鏈接為:http://www.arduino.cc/en/Main/Software。ArduinoIDE安裝完畢,可以采取如下三種方式進(jìn)行ESP32forArduino開發(fā)環(huán)境的安裝。ESP32智能硬件--初識(shí)ESP32|驅(qū)動(dòng)及軟件安裝ESP32forArduino三種安裝方式使用ArduioIDE的開發(fā)板管理器來安裝使用git工具安裝離線安裝方式一和方式二由ESP32官方提供,為在線安裝,需要聯(lián)網(wǎng),如果網(wǎng)絡(luò)不好,可能不能正常進(jìn)行,方式三是離線安裝,相對便捷。三種安裝方式所安裝的軟件文件夾不完全一致,安裝時(shí)選擇其中一種進(jìn)行安裝,以免沖突。ESP32智能硬件--初識(shí)ESP32|驅(qū)動(dòng)及軟件安裝ESP32forArduino三種安裝方式使用ArduioIDE的開發(fā)板管理器來安裝使用git工具安裝離線安裝步驟一:下載離線版本espressif.zip。下載鏈接:/h-nd-288.html。步驟三:將espressif.zip文件拷貝到Arduino文件夾\hardware文件夾下;點(diǎn)擊鼠標(biāo)右鍵,選擇解壓到espressif\
步驟三:打開Arduino軟件,點(diǎn)擊【工具】-【開發(fā)板】,選擇【ESP32DevModule】即可。ESP32智能硬件--初識(shí)ESP32|學(xué)習(xí)平臺(tái)搭設(shè)
學(xué)習(xí)平臺(tái)搭設(shè)ESP32智能硬件--初識(shí)ESP32|學(xué)習(xí)平臺(tái)搭設(shè)ESP32智能硬件--初識(shí)ESP32|HelloWorld!HelloWorld!ESP32智能硬件--初識(shí)ESP32|HelloWorld!HelloWorld!ESP32除了具備Arduino的全部功能外,還集成了WiFi和藍(lán)牙功能。下面的“HelloWorld!”項(xiàng)目就簡單運(yùn)行ESP32所對應(yīng)的例程,該例程顯示周邊可用的網(wǎng)絡(luò)連接。步驟一:將ESP32開發(fā)板通過USB數(shù)據(jù)線和計(jì)算機(jī)連接。步驟二:選擇主板類型和對應(yīng)的端口號(hào)。步驟三:打開【文件】-【示例】-【W(wǎng)iFi】-【W(wǎng)iFiScan】。步驟四:點(diǎn)擊上傳,提示欄顯示上傳成功。打開串口監(jiān)視器,設(shè)置波特率為115200。串口監(jiān)視器窗口提示搜索到的可用連接,并根據(jù)信號(hào)強(qiáng)度顯示每個(gè)連接的SSID名稱(由路由器發(fā)送的無線網(wǎng)名稱)。ESP32智能硬件--初識(shí)ESP32|HelloWorld!ESP32智能硬件--初識(shí)ESP32|HelloWorld!HelloWorld!ESP32forArduino基本延續(xù)了三四級所學(xué)習(xí)的基本的Arduino基本操作函數(shù)和基本概念,也有一些細(xì)微的差別,后續(xù)將給大家講述ESP32的基本功能特性。注意:在程序上傳時(shí),系統(tǒng)會(huì)使用D2引腳,如果此時(shí)D2引腳連接按鍵開關(guān)模塊,上拉或下拉到高電平或低電平,此程序不能正常上傳??上纫崎_按鍵模塊,待程序上傳成功后再連接。ESP32智能硬件--初識(shí)ESP32|ESP32數(shù)字信號(hào)讀寫操作
ESP32數(shù)字信號(hào)讀寫操作ESP32智能硬件--初識(shí)ESP32|ESP32數(shù)字信號(hào)讀寫操作ESP32數(shù)字信號(hào)讀寫操作pinMode()digitalRead()digitalWrite()ESP32智能硬件--初識(shí)ESP32|ESP32數(shù)字信號(hào)讀寫操作pinMode(pin,mode);功能:設(shè)置引腳工作模式,無返回值,默認(rèn)情況下引腳模式為INPUT輸入模式。pin:開發(fā)板23個(gè)引腳均可以作為數(shù)字輸入引腳使用,除34/35/36/39外均可以作為數(shù)字輸出引腳使用。引腳34/35/36/39作為數(shù)字輸入引腳時(shí),不能設(shè)置為上拉和下拉模式。mode:INPUT/OUTPUT/INPUT_PULLUP/INPUT_DOWN。
a.INPUT:輸入模式
b.OUTPUT:輸出模式
c.INPUT_PULLUP:內(nèi)部上拉模式
d.INPUT_PULLDOWN:內(nèi)部下拉模式ESP32智能硬件--初識(shí)ESP32|ESP32數(shù)字信號(hào)讀寫操作digitalRead(pin);功能:從指定引腳讀取外部輸入的數(shù)字信號(hào)。返回值:當(dāng)外部輸入高電平時(shí),返回值為1;當(dāng)外部輸入低電平時(shí),返回值為0。pin:開發(fā)板23個(gè)引腳均可以作為數(shù)字輸入引腳使用。當(dāng)引腳34/35/36/39作為數(shù)字輸入引腳時(shí),如果模式設(shè)置為上拉和下拉模式,則沒有返回值。ESP32智能硬件--初識(shí)ESP32|ESP32數(shù)字信號(hào)讀寫操作digitalWrite(pin,value);功能:從指定引腳輸出高低電平數(shù)字信號(hào)。返回值:無。pin:開發(fā)板23個(gè)引腳中,除34/35/36/39四個(gè)引腳以外的其他引腳。value:HIGH或者LOW。HIGH值為1,代表高電平;LOW值為0,代表低電平。ESP32智能硬件--初識(shí)ESP32|ESP32數(shù)字信號(hào)讀寫操作按鍵開關(guān) 1個(gè)LED燈 1個(gè)100歐姆電阻1個(gè)杜邦線 若干示例任務(wù):一個(gè)基本的按鍵開關(guān)控制LED燈的小項(xiàng)目。通過設(shè)置內(nèi)部下拉的方式來獲取按鍵值。數(shù)字信號(hào)讀寫示例ESP32智能硬件--初識(shí)ESP32|ESP32數(shù)字信號(hào)讀寫操作程序運(yùn)行:程序中,設(shè)置按鍵開關(guān)連接引腳D4為內(nèi)部下拉輸入模式程序。上傳成功后,按下按鍵,打開串口監(jiān)視器,當(dāng)按鍵斷開時(shí),顯示值為0,當(dāng)按鍵閉合時(shí),顯示值為1。可寫為constintswitchPin=4ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作
ESP32模擬信號(hào)讀寫操作ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作ESP32的模擬信號(hào)讀取函數(shù)和Arduino一樣為analogRead()函數(shù),默認(rèn)的返回值為0~4095。ArduinoUNO模擬輸出通過PWM實(shí)現(xiàn),對應(yīng)的函數(shù)是analogWrite(),該函數(shù)在當(dāng)前版本沒有提供。ESP32芯片提供了3種模擬輸出方式,不同方式對應(yīng)不同的輸出函數(shù),這三類模擬輸出方式分別為:LEDC:基于PWM調(diào)制的16通道
模擬輸出SigmaDelta
:基于SigmaDelta
調(diào)制的8通道模擬輸出DAC
:硬件(DAC)實(shí)現(xiàn)的2個(gè)通道的模擬輸出ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作模擬信號(hào)輸入函數(shù)ESP32的ADC模塊的分辨率為12位,所以模擬輸入函數(shù)的返回值在0~4095之間,由于ESP32的工作電壓是3.3V,當(dāng)模擬輸入函數(shù)的返回值為4095時(shí),對應(yīng)的工作電壓是3.3V,返回值為0時(shí),對應(yīng)的工作電壓是0V。ESP32的ADC模塊返回值的線性度不是很好,此外當(dāng)電壓小于0.1V時(shí),返回值均為0,電壓大于3.2V時(shí),返回值均為4095。ADC值的線性度曲線ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作模擬信號(hào)輸入函數(shù)關(guān)于模擬信號(hào)輸入,ESP32提供了如下兩個(gè)函數(shù)。analogRead()analogSetWidth()ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作analogRead(pin)功能:從指定引腳讀取模擬信號(hào),獲取返回值。返回值:ADC的精度是12bit,默認(rèn)范圍0~4095之間,對應(yīng)電壓0~3.3V。pin:共15個(gè)模擬輸入引腳:A0/A3/A4/A5/A6/A7/A10/A12~A19,分別對應(yīng)引腳為:36/39/32/33/34/35/4/2/15/13/12/14/27/25/26。當(dāng)打開WiFI功能時(shí),建議僅使用A0/A3/A4/A5/A6/A76個(gè)引腳作為模擬輸入使用。analogSetWidth(bits);功能:設(shè)置analogRead()函數(shù)的取樣分辨率。bits:取值范圍9~12。當(dāng)設(shè)為9時(shí),analogRead()函數(shù)的返回值范圍0~511之間。ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作電位器模塊 1個(gè)3P數(shù)據(jù)線 1根示例任務(wù):讀取電位器返回值。通過設(shè)置不同的取樣分辨率,返回值的范圍不同。模擬信號(hào)輸入示例ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作程序運(yùn)行:上傳程序,打開串口監(jiān)視器,旋轉(zhuǎn)電位器,觀察值的變化。修改函數(shù)analogSetWidth()分辨率的值,查看返回值結(jié)果。如果沒有此條語句,默認(rèn)為12位分辨率,即0~4095ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作模擬信號(hào)輸出函數(shù)--基于LEDCLEDC(LEDControl)是基于PWM調(diào)制實(shí)現(xiàn)模擬輸出。與ArduinoUNO主控板PWM直接從引腳輸出不同。ESP32實(shí)現(xiàn)PWM模擬輸出的載體是“通道Channel”,一共有16個(gè)通道,編號(hào)0~15。實(shí)現(xiàn)PWM輸出,先設(shè)置指定通道PWM參數(shù):頻率、分辨率、占空比,然后將該通道映射到指定引腳,該引腳輸出對應(yīng)通道的PWM信號(hào)。LEDCPWM輸出示意圖引腳不直接產(chǎn)生PWM信號(hào),通過通道產(chǎn)生。ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作模擬信號(hào)輸出函數(shù)--基于LEDCLEDC實(shí)現(xiàn)模擬信號(hào)輸出,ESP32提供了如下六個(gè)函數(shù)。ledcSetup()和ledcAttachPin()是初始化設(shè)置函數(shù)。ledcWrite()是PWM輸出函數(shù),功能類似analogWrite()函數(shù),調(diào)用該函數(shù)前必須先進(jìn)行初始化參數(shù)設(shè)置。ledcDetachPin()是關(guān)閉引腳的PWM輸出。ledcWriteTone()和ledcWriteNote()是PWM音頻輸出,類似tone()函數(shù)。ledcSetup()
ledcAttachPin()ledcWrite()ledcDetachPin()ledcWriteTone()ledcWriteNote()ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作ledcSetup(channel,freq,bit_num);功能:設(shè)定指定LEDC通道參數(shù)設(shè)置。返回值:無channel:PWM通道,一共有0~15共16個(gè)通道。freq:設(shè)置PWM的頻率。bit_num:占空比的分辨率。范圍1-16。如設(shè)置為8位的分辨率,控制LED的亮度從0~255變化。說明:PWM頻率的最大值和分辨率的設(shè)置值相關(guān)聯(lián)。當(dāng)頻率為5000Hz時(shí),對應(yīng)的最大占空比的分辨率為13。當(dāng)占空比的分辨率為1時(shí),頻率的最大取值到40MHz。當(dāng)占空比的分辨率為16時(shí),頻率的最大取值到1200Hz。ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作ledcAttachPin(pin,channel);功能:將指定通道channel上產(chǎn)生的PWM信號(hào)輸出到GPIO引腳。返回值:無pin:開發(fā)板23個(gè)引腳中,除34/35/36/39四個(gè)引腳以外的其他19個(gè)引腳。channel:PWM通道,一共有0~15共16個(gè)通道。ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作ledcWrite(channel,duty);功能:向指定通道(channel)輸出指定占空比(duty)的PWM信號(hào)。返回值:無channel:PWM通道,一共有0~15共16個(gè)通道。duty:指定占空比數(shù)值。ledcDetachPin(pin);功能:取消指定引腳pin的PWM信號(hào)輸出。返回值:無ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作ledcWriteTone(channel,freq)功能:向指定通道(channel)輸出指定頻率(freq)的音符信號(hào)。類似我們以前學(xué)習(xí)的tone()函數(shù)。channel:PWM通道,一共有0~15共16個(gè)通道。freq:指定頻率。ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作ledcWriteNote(channel,note,octava)功能:向指定通道(channel)輸出指定音符和音階的聲音。是對ledcWriteTone()函數(shù)的進(jìn)一步封裝。channel:PWM通道,一共有0~15共16個(gè)通道。note:音符。相當(dāng)于do、re、mi...,系統(tǒng)預(yù)定義的音符有:NOTE_C,NOTE_Cs,NOTE_D,NOTE_Eb,NOTE_E,NOTE_F,NOTE_Fs,NOTE_G,NOTE_Gs,NOTE_A,NOTE_Bb,NOTE_B,NOTE_MAX。octava:音階。octava取值范圍0~7。ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作LED燈模塊 1個(gè)3P數(shù)據(jù)線 1根示例任務(wù):完成一個(gè)呼吸燈的示例程序,通過一個(gè)通道(channel)控制一個(gè)LED燈變化。模擬信號(hào)輸出函數(shù)示--基于LEDCESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作程序運(yùn)行:上傳程序,觀察LED的顯示效果。修改程序5行中的分辨率為其他數(shù)值,上傳程序,查看LED的顯示效果。ESP32智能硬件--初識(shí)ESP32|ESP32模擬信號(hào)讀寫操作模擬信號(hào)輸出函數(shù)--基于DAC與模擬輸入ADC器件對應(yīng),ESP32集成了DAC模塊,提供了2通道的硬件模擬輸出功能。對應(yīng)引腳為25和26。ESP32提供的操控函數(shù)為dacWrite()。dacWrite(pin,value);功能:通過硬件DAC模塊實(shí)現(xiàn)模擬輸出。返回值:無pin:DAC輸出引腳,僅25和26。使用該函數(shù)時(shí),不需要pinMode進(jìn)行引腳模式設(shè)置。value:模擬輸出值,0~255。ESP32智能硬件--初識(shí)ESP32|ESP32電容觸摸傳感器
ESP32電容觸摸傳感器ESP32智能硬件--初識(shí)ESP32|ESP32電容觸摸傳感器電容觸摸傳感器ESP32提供了電容觸摸傳感器(TouchSensor)功能,當(dāng)人體和ESP引腳觸碰時(shí),會(huì)引起電容值的變化,ESP32返回當(dāng)前引腳的電容值。ESP32還提供了相應(yīng)的中斷調(diào)用函數(shù),當(dāng)按鍵值小于設(shè)定的閾值時(shí),執(zhí)行相應(yīng)的中斷回調(diào)函數(shù)。關(guān)于電容觸摸傳感器,ESP32提供了如下兩個(gè)函數(shù)。touchRead()touchAttachInterrupt()ESP32智能硬件--初識(shí)ESP32|ESP32電容觸摸傳感器touchRead(pin);功能:返回指定引腳的電容傳感器的值。當(dāng)該引腳發(fā)生觸碰時(shí),返回值變小。常用該函數(shù)獲取閾值threshold。pin:電容觸摸引腳。ESP32模組有T0、T2~T9共9個(gè)Touch引腳可供使用,分別對應(yīng)4/2/15/13/12/14/27/33/32引腳。使用該函數(shù)時(shí),不需要pinMode進(jìn)行引腳模式設(shè)置。返回值:返回值0~255之間。ESP32智能硬件--初識(shí)ESP32|ESP32電容觸摸傳感器touchAttachInterrupt(pin,TSR,threshold)功能:設(shè)置觸摸中斷回調(diào)函數(shù)。當(dāng)指定引腳的返回值低于threshold時(shí),調(diào)用中斷函數(shù)TSR。pin:電容觸摸引腳。ESP32模組有T0、T2~T9共9個(gè)Touch引腳可供使用,分別對應(yīng)4/2/15/13/12/14/27/33/32引腳。TSR:中斷回調(diào)函數(shù)。中斷回調(diào)函數(shù)TSR不攜帶參數(shù),不能有返回值。threshold:觸摸中斷響應(yīng)閾值。當(dāng)引腳的返回值低于threshold時(shí),調(diào)用中斷函數(shù)TSR。ESP32智能硬件--初識(shí)ESP32|ESP32電容觸摸傳感器杜邦線 1根鋁片(可選)
1塊示例任務(wù):采用杜邦線和T4引腳相連接,引出的一段為公頭,如有鋁片,將鋁片包裹杜邦公頭,以增加接觸面。通常程序獲取當(dāng)前觸碰傳感器的值,并設(shè)定觸碰中斷,當(dāng)傳感器的返回值低于40時(shí),觸發(fā)中斷函數(shù),顯示觸發(fā)信息。電容觸摸傳感器示例ESP32智能硬件--初識(shí)ESP32|ESP32電容觸摸傳感器程序運(yùn)行:上傳程序,打開串口監(jiān)視器,手接觸杜邦線的公頭,串口監(jiān)視器顯示如下圖所示。ESP32智能硬件--初識(shí)ESP32|ESP32霍爾傳感器
ESP32霍爾傳感器ESP32智能硬件--初識(shí)ESP32|ESP32霍爾傳感器ESP32集成了霍爾傳感器,霍爾傳感器的工作原理是霍爾效應(yīng)。利用霍爾效應(yīng)能檢測周邊磁場的強(qiáng)度變化,周邊的磁場越強(qiáng),輸出的值越大?;魻杺鞲衅魑挥贓SP32模組的中間位置,利用霍爾傳感器磁感應(yīng)特性,可以用于計(jì)數(shù)、接近檢測、位置控制等方面?;魻杺鞲衅魑恢肊SP32智能硬件--初識(shí)ESP32|ESP32霍爾傳感器霍爾效應(yīng)當(dāng)電流垂直于外磁場通過半導(dǎo)體時(shí),載流子在洛倫茲力(左手定則)的作用下發(fā)生偏轉(zhuǎn),垂直于電流和磁場的方向會(huì)產(chǎn)生一附加電場,從而在半導(dǎo)體的兩端產(chǎn)生電勢差,這一現(xiàn)象就是霍爾效應(yīng),這個(gè)電勢差也被稱為霍爾電勢差。ESP32智能硬件--初識(shí)ESP32|ESP32霍爾傳感器霍爾傳感器的應(yīng)用位移測量兩塊永久磁鐵同極性相對放置,將線性型霍爾傳感器置于中間,其磁感應(yīng)強(qiáng)度為零,這個(gè)點(diǎn)可作為位移的零點(diǎn),當(dāng)霍爾傳感器在Z軸上作△Z位移時(shí),傳感器有一個(gè)電壓輸出,電壓大小與位移大小成正比。力測量如果把拉力、壓力等參數(shù)變成位移,便可測出拉力及壓力的大小,按這一原理可制成的力傳感器。ESP32智能硬件--初識(shí)ESP32|ESP32霍爾傳感器霍爾傳感器的應(yīng)用角速度測量在非磁性材料的圓盤邊上粘一塊磁鋼,霍爾傳感器放在靠近圓盤邊緣處,圓盤旋轉(zhuǎn)一周,霍爾傳感器就輸出一個(gè)脈沖,從而可測出轉(zhuǎn)數(shù)(計(jì)數(shù)器),若接入頻率計(jì),便可測出轉(zhuǎn)速。線速度測量如果把開關(guān)型霍爾傳感器按預(yù)定位置有規(guī)律地布置在軌道上,當(dāng)裝在運(yùn)動(dòng)車輛上的永磁體經(jīng)過它時(shí),可以從測量電路上測得脈沖信號(hào)。根據(jù)脈沖信號(hào)的分布可以測出車輛的運(yùn)動(dòng)速度。ESP32智能硬件--初識(shí)ESP32|ESP32霍爾傳感器關(guān)于霍爾傳感器,ESP32提供的函數(shù)為hallRead()hallRead()功能:檢測當(dāng)前的磁場強(qiáng)度。該函數(shù)沒有參數(shù),霍爾傳感器調(diào)用引腳36和39,當(dāng)使用霍爾傳感器的功能時(shí),這兩個(gè)引腳不要另作他用。返回值:當(dāng)傳感器和磁場正極接近時(shí),返回值為正數(shù),當(dāng)和磁場負(fù)極接近時(shí),返回值為負(fù)數(shù)。ESP32智能硬件--初識(shí)ESP32|ESP32霍爾傳感器示例任務(wù):拿一塊磁鐵靠近ESP32模塊的霍爾傳感器,分別檢測磁鐵正負(fù)極靠近時(shí),霍爾傳感器的返回值。小磁鐵1塊當(dāng)N極靠近時(shí)當(dāng)S極靠近時(shí)霍爾傳感器示例ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷
ESP32外部中斷ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷輪詢在三、四級教材課本中,我們講述控制系統(tǒng)的工作流程為:感受變化、分析判斷、做出反應(yīng)。感受變化就是讀取一個(gè)或多個(gè)傳感器的值,分析判斷是根據(jù)讀取的傳感器的值及預(yù)先設(shè)定的程序進(jìn)行數(shù)據(jù)處理,做出反應(yīng)及時(shí)將程序運(yùn)算的結(jié)果反饋給執(zhí)行器執(zhí)行。為了隨時(shí)根據(jù)傳感器的變化而做出反應(yīng),程序需要不斷重復(fù)這個(gè)過程,這種處理的方式稱為輪詢。
但輪詢有時(shí)不能很好的完成上述過程,例如按鈕輸入,當(dāng)按鈕被按下的瞬間,如果主應(yīng)用程序正在做某些事情,就有可能沒有檢測到按鈕的按下動(dòng)作,此時(shí)系統(tǒng)就又成了無法正常響應(yīng)的系統(tǒng)了。我們可以通過給按鍵適配外部中斷,就可以很好的避免上述問題的發(fā)生。ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷中斷程序外部中斷是由外部設(shè)備發(fā)起請求的中斷。每個(gè)中斷對應(yīng)一個(gè)中斷程序,中斷程序可以看作是一段獨(dú)立于主程序之外的程序,也稱作中斷回調(diào)函數(shù)。當(dāng)中段被觸發(fā)時(shí),控制器會(huì)暫停當(dāng)前正在運(yùn)行的主程序,而跳轉(zhuǎn)去運(yùn)行中斷程序。當(dāng)中斷程序運(yùn)行完畢,會(huì)會(huì)到先前主程序暫停的位置,繼續(xù)運(yùn)行主程序。如此便可收到實(shí)時(shí)響應(yīng)處理事件的效果。ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷序號(hào)中斷觸發(fā)模式說明1RISING上升沿觸發(fā),即由低電平變高電平時(shí)觸發(fā)
2FALLING下降沿觸發(fā),即由高電平變低電平時(shí)觸發(fā)
3CHANGE電平變化觸發(fā),即高電平變低電平或低電平變高電平時(shí)觸發(fā)
4ONLOW低電平觸發(fā),即當(dāng)前為低電平時(shí)觸發(fā)
5ONHIGH高電平觸發(fā),即當(dāng)前為高電平時(shí)觸發(fā)ESP32中斷觸發(fā)模式ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷中斷觸發(fā)函數(shù)ESP32forArduino提供了兩個(gè)中斷函數(shù)。用于對中斷引腳進(jìn)行初始化設(shè)置和關(guān)閉外部中斷。attachInterrupt()detachInterrupt()ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷attachInterrupt(pin,function,mode);功能:指定中斷引腳,并對中斷引腳進(jìn)行初始化設(shè)置。返回值:無返回值。
pin:欲設(shè)置中斷觸發(fā)輸入的引腳。所有23個(gè)引腳均可以作為中斷引腳使用。function:中斷回調(diào)函數(shù)。當(dāng)引腳中斷觸發(fā)時(shí),會(huì)終止當(dāng)前運(yùn)行的程序,執(zhí)行該函數(shù)。注意,中斷回調(diào)函數(shù)不能有參數(shù),且沒有返回值。mode:5種中斷觸發(fā)模式detachInterrupt(pin);
功能:關(guān)閉指定引腳的中斷功能。返回值:無返回值ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷按鍵模塊 1個(gè)3P數(shù)據(jù)線 1根示例任務(wù)1:通過點(diǎn)擊按鍵模塊,切換高低電平作為外部中斷觸發(fā)中斷程序,在程序中設(shè)置不同的中斷觸發(fā)模式,觀看程序中全局變量計(jì)數(shù)器數(shù)值的變化。外部中斷示例(一)--按鍵計(jì)數(shù)顯示ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷程序運(yùn)行:上傳程序,打開串口監(jiān)視器窗口。點(diǎn)擊按鍵,查看串口監(jiān)視器中顯示數(shù)的大小和次數(shù)。將程序行8中的中斷觸發(fā)模式分別修改為:RISING、FALLING、ONHIGH、ONLOW,重新上傳程序,查看并思考串口監(jiān)視器數(shù)的變化。本課程使用的按鍵模塊當(dāng)按鍵按下時(shí)返回低電平,按鍵抬起時(shí)返回高電平。ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷按鍵抖動(dòng)當(dāng)中斷觸發(fā)模式為CHANGE、RISING、FALLING時(shí),串口監(jiān)視器顯示的是變化的值,為什么會(huì)出現(xiàn)這種情況呢?這是因?yàn)榘存I在按下和釋放的瞬間,按鍵內(nèi)金屬簧片接觸是一個(gè)連續(xù)通斷的過程,一般稱之為抖動(dòng)。抖動(dòng)分為前沿抖動(dòng)和后沿抖動(dòng)。為了確保主控板對一次按鍵的操作僅做一次處理,必須要進(jìn)行消抖處理。按鍵消抖將在第二章講解。ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷熱釋電模塊 1個(gè)3P數(shù)據(jù)線 1根示例任務(wù)2:通過熱釋電模塊,檢測是否有人進(jìn)入,如有人進(jìn)入,板載LED燈閃爍。外部中斷示例(二)--入侵檢測儀ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷熱釋電模塊簡介熱釋電模塊是一種能檢測人或動(dòng)物發(fā)射的紅外線而輸出電信號(hào)的傳感器。由白色的菲尼爾透鏡和透鏡內(nèi)部的紅外感應(yīng)模塊組成。不同模塊的工作方式不太一樣,圖示的熱釋電模塊檢測運(yùn)動(dòng)的紅外線發(fā)射體,掃描頻率2秒鐘一次。紅外線是一種我們?nèi)庋劭床灰姷墓?,紅外線最顯著的特性是它具有熱效應(yīng),也就是說所有高于絕對零度的物質(zhì)都可以產(chǎn)生紅外線。熱釋電模塊利用菲尼爾透鏡將人體發(fā)出的紅外線聚焦到紅外感應(yīng)模塊,經(jīng)過比較放大電路處理后,最終輸出高低電平信號(hào)。圖示熱釋電模塊當(dāng)檢測到運(yùn)動(dòng)的紅外線發(fā)射體時(shí)返回高電平,否則返回低電平。ESP32智能硬件--初識(shí)ESP32|ESP32外部中斷程序運(yùn)行:上傳程序,在熱釋電模塊前移動(dòng)身體,ESP32擴(kuò)展板板載LED(D12)點(diǎn)亮。當(dāng)身體靜止時(shí),板載LED燈熄滅。ESP32智能硬件--初識(shí)ESP32|Serial.printf()函數(shù)
Serial.printf()函數(shù)ESP32智能硬件--初識(shí)ESP32|Serial.printf()函數(shù)ArduinoC是C/C++語言的混合。在ESP32forArduino中,開放了C語言中常用的printf()函數(shù)。可以使用printf()函數(shù)方便的進(jìn)行數(shù)據(jù)輸出。Serial.printf(char*format,...);
功能:輸出一個(gè)字符串,或者按指定格式和數(shù)據(jù)類型輸出若干變量的值。
返回值:輸出字符的個(gè)數(shù)。ESP32智能硬件--初識(shí)ESP32|Serial.printf()函數(shù)程序中printf()函數(shù)中%d、%c、%f為格式字符,\n為轉(zhuǎn)義字符。Printf()函數(shù)示例輸出小數(shù)位為3位的浮點(diǎn)數(shù)打開串口,Serial==1ESP32智能硬件--初識(shí)ESP32|Serial.printf()函數(shù)常用的格式字符和轉(zhuǎn)義字符格式字符說明%o八進(jìn)制整數(shù)輸出%d十進(jìn)制整數(shù)輸出%x十六進(jìn)制整數(shù)輸出%f浮點(diǎn)輸出,默認(rèn)小數(shù)點(diǎn)6位%c單個(gè)字符輸出%S字符串輸出%u無符號(hào)十進(jìn)制整數(shù)輸出轉(zhuǎn)義字符說明\n換行,將當(dāng)前位置移到下一行開頭\r回車,將當(dāng)前位置移到本行開頭\t水平制表,Tab符,跳到下一個(gè)Tab位置\b退格,將當(dāng)前位置移到前一列ESP32智能硬件--初識(shí)ESP32|本章小結(jié)本章小結(jié)ESP32智能硬件--初識(shí)ESP32|本章小節(jié)小結(jié)本章講述ESP32forArduino的基本I/O功能函數(shù),和Arduino
for
AVR相比,功能更加豐富,有了本章的基礎(chǔ),大家會(huì)體驗(yàn)ESP32更加豐富精彩的性能。注意:由于部分器件在使用過程中需要調(diào)用系統(tǒng)的始終等其它外設(shè),這導(dǎo)致原來在ArduinoAVR平臺(tái)下可以使用的庫在ESP32平臺(tái)下不再可以使用,例如舵機(jī)Servo庫。相關(guān)的庫請到全國青少年機(jī)器人等級考試官方網(wǎng)站下載鏈接下載,下載鏈接為:/h-nd-288.html。ESP32智能硬件創(chuàng)新課程|數(shù)碼管第二章數(shù)碼管ESP32智能硬件創(chuàng)新課程|數(shù)碼管目錄一位數(shù)碼管原理及數(shù)字顯示
一位數(shù)碼管數(shù)字顯示--數(shù)組74HC595移位寄存器芯--按鍵驅(qū)動(dòng)一位數(shù)碼管數(shù)字顯示--74HC595移位寄存器芯片
數(shù)碼管計(jì)時(shí)器ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示一位數(shù)碼管原理及數(shù)字顯示現(xiàn)在很多家電設(shè)備,例如熱水器、電飯鍋都有數(shù)碼功能顯示,顯示的基本元器件就是數(shù)碼管,本章我們學(xué)習(xí)如何使用數(shù)碼管制作一個(gè)數(shù)碼管計(jì)時(shí)器。通過學(xué)習(xí)使用,掌握數(shù)組的基本知識(shí),74HC595移位寄存器芯片的使用、位操作函數(shù)。ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示一位數(shù)碼管工作原理數(shù)碼管可以簡單的理解為多個(gè)LED的集成,通常是用7個(gè)LED條排列成一個(gè)8字,再外加一個(gè)LED作為小數(shù)點(diǎn),使用時(shí)控制某些LED點(diǎn)亮,某些LED熄滅組成0到9的數(shù)字顯示。基本的數(shù)碼管只能顯示一個(gè)數(shù)字,稱之為一位數(shù)碼管,如下圖所示,一位數(shù)碼管為靜態(tài)顯示。ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示一位數(shù)碼管工作原理一位數(shù)碼管模塊上有10個(gè)引腳,上下各5個(gè)。其中有a~h共8個(gè)引腳分別對應(yīng)數(shù)字的一個(gè)筆畫。此外數(shù)碼管內(nèi)部是把這8個(gè)LED的陽極或陰極一端連接起來形成公共引腳,公共引腳分別位于數(shù)碼管上下兩側(cè)的中央,作為公用引腳連接到8個(gè)LED的公共端。根據(jù)公共引腳的陰極或陽極的不同,數(shù)碼管分為共陽極數(shù)碼管和共陰極數(shù)碼管,在數(shù)碼管側(cè)邊會(huì)有文字標(biāo)識(shí),最后兩個(gè)字母AS代表共陰極(公共端接地),BS代表共陽極(公共端接正極)。ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示一位共陽極數(shù)碼管1個(gè)100歐姆電阻
8個(gè)杜邦線
若干示例任務(wù):通過編程實(shí)現(xiàn)數(shù)碼管的數(shù)字顯示。一位數(shù)碼管數(shù)字顯示示例ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示由數(shù)碼管原理可知,對于共陽極數(shù)碼管,要顯示數(shù)字“0”,將筆畫g和h所對應(yīng)的二極管引腳17和12輸出高電平,其它引腳輸出低電平,即可顯示數(shù)字“0”。程序運(yùn)行:在上述程序的基礎(chǔ)上,編寫程序顯示剩下的其它數(shù)字。在編寫過程中,體驗(yàn)有何不便,并想出相應(yīng)的解決辦法。ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示--數(shù)組一位數(shù)碼管原理及數(shù)字顯示--數(shù)組ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示--數(shù)組在之前的項(xiàng)目編寫和運(yùn)行過程中,我們發(fā)現(xiàn)顯示不同數(shù)字的代碼重復(fù)且基本雷同。在以前的學(xué)習(xí)中,我們可以通過循環(huán)結(jié)構(gòu)和變量來執(zhí)行重復(fù)的工作,在一位數(shù)碼管顯示項(xiàng)目中,數(shù)字各筆畫對應(yīng)的引腳和值沒有規(guī)律,如何解決數(shù)據(jù)沒有規(guī)律但動(dòng)作又重復(fù)的任務(wù)呢?本項(xiàng)目我們學(xué)習(xí)編程中數(shù)據(jù)處理的利--數(shù)組。通過數(shù)組將無序的數(shù)據(jù)有序化從而實(shí)現(xiàn)自動(dòng)化ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示--數(shù)組一維數(shù)組的定義和初始化與我們學(xué)習(xí)的變量類似,數(shù)組是一組具有相同類型的變量的集合。在編程中碰到多個(gè)同一類型的數(shù)據(jù)時(shí),除了給每個(gè)數(shù)據(jù)定義一個(gè)變量名外,我們還可以使用一個(gè)統(tǒng)一的名字來標(biāo)識(shí)這組相同類型的數(shù)據(jù),這個(gè)名字稱為數(shù)組名。構(gòu)成數(shù)組的每個(gè)數(shù)據(jù)稱為數(shù)組元素。C語言通過數(shù)組的下標(biāo)實(shí)現(xiàn)對數(shù)組元素的訪問。數(shù)組定義格式如下:類型
數(shù)組名[元素個(gè)數(shù)];
例如:intpinArray[8]={17,25,26,14,13,16,15,27};或intpinArray[]={17,25,26,14,13,16,15,27};注意:定義數(shù)組時(shí),不能使用變量定義數(shù)組的元素個(gè)數(shù),數(shù)組元素的個(gè)數(shù)有時(shí)可以省略。C語言中數(shù)組的下標(biāo)都是從0開始的。上述pinArray數(shù)組的元素從pinArray[0]~pinArray[7]。ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示--數(shù)組一維數(shù)組的定義和初始化在引用數(shù)組元素時(shí),一定注意數(shù)組的下標(biāo)不要越界。否則會(huì)引起不可預(yù)知的后果。定義但未進(jìn)行初始化的數(shù)組元素的值是隨機(jī)數(shù)。定義數(shù)組時(shí)也可以給數(shù)組元素賦初值。方式有以下兩種:intpinArray[8]={17,25,26,14,13,16,15,27};intpinArray[]={17,25,26,14,13,16,15,27};注意:初始化列表中提供的初值個(gè)數(shù)不能多于數(shù)組元素的個(gè)數(shù),各元素間通過逗號(hào)隔開。若省略長度聲明,那么系統(tǒng)會(huì)自動(dòng)按照初始化列表中提供的初值個(gè)數(shù)對數(shù)組進(jìn)行初始化,并確定數(shù)組的大小。所以只給部分?jǐn)?shù)組元素賦初值時(shí),對數(shù)組的長度聲明不能省略。ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示--數(shù)組二維數(shù)組的定義和初始化在定義一個(gè)二維數(shù)組,只要增加一維下標(biāo)即可,二維數(shù)組的一般定義格式為:類型
數(shù)組名[第一維長度][第二維長度];二維數(shù)組,用兩個(gè)下標(biāo)確定各元素在數(shù)組中的順序??捎门帕谐蒳行j列的元素表示。第一維的長度代表數(shù)組每一列的元素個(gè)數(shù),第二維的長度代表數(shù)組中每一行的元素個(gè)數(shù)。例如:bytedigits[2][4];聲明是一個(gè)具有2行4列共8個(gè)byte類型元素的二維數(shù)組。數(shù)組第一個(gè)元素的下標(biāo)為digits[0][0],最后一個(gè)元素的下標(biāo)為digits[1][3]。—第0列第1列第2列第3列第0行digits[0][0]digits[0][1]digits[0][2]digits[0][3]第1行digits[1][0]digits[1][1]digits[1][2]digits[1][3]ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示--數(shù)組二維數(shù)組的定義和初始化二維數(shù)組初始化,既可以按元素初始化,也可以按行初始化。如下兩行語句是等價(jià)的:bytedigits[2][4]={1,2,3,4,5,6,7,8};//按元素初始化bytedigits[2][4]={{1,2,3,4},{5,6,7,8},};//按行初始化當(dāng)初始化列表給出數(shù)組全部元素的初值時(shí),第一維的長度聲明可以省略,此時(shí)系統(tǒng)將按初始化列表中提供的初值各組來定義數(shù)組的大小。例如以下兩行語句的初始化結(jié)果與上兩行是一樣的:bytedigits[][4]={1,2,3,4,5,6,7,8};//按元素初始化bytedigits[][4]={{1,2,3,4},{5,6,7,8},};//按行初始化注意:數(shù)組第二維的長度聲明永遠(yuǎn)都不能省略。ESP32智能硬件--數(shù)碼管|一位數(shù)碼管原理及數(shù)字顯示--數(shù)組示例任務(wù):通過數(shù)組編程實(shí)現(xiàn)數(shù)碼管的數(shù)字顯示當(dāng)要顯示某一數(shù)字時(shí),直接將該數(shù)字作為數(shù)組digits第一維的值即可。sizeof()運(yùn)算符用來獲得數(shù)組中元素的長度,作用是返回一個(gè)對象或類型所占的內(nèi)存字節(jié)數(shù),sizeof(pinArray)返回值為8,sizeof(pinArray[0])返回值為1。元素digits[num][i]中,num對應(yīng)要顯示的數(shù)字,循環(huán)變量i對應(yīng)數(shù)字各筆畫LED燈的狀態(tài)。因本項(xiàng)目為共陽極數(shù)碼管,所以要對digits[num][i]的值使用“!”進(jìn)行取反。程序運(yùn)行:上傳程序,數(shù)碼管按照0~9和點(diǎn)的順序依次顯示。通過數(shù)組實(shí)現(xiàn)一位數(shù)碼管顯示示例如果我們不知道數(shù)組中元素的個(gè)數(shù),這種方式可以幫助我們計(jì)算出元素個(gè)數(shù)動(dòng)態(tài)顯示ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)74HC595移位寄存器芯片簡介項(xiàng)目二我們采用數(shù)組編程實(shí)現(xiàn)一位數(shù)碼管顯示,和項(xiàng)目一相比,程序的靈活性大大增強(qiáng)。不過,上面的項(xiàng)目中我們是直接使用開發(fā)板的IO口來控制數(shù)碼管的,這種方式的優(yōu)點(diǎn)就是理解起來比較直觀,而缺點(diǎn)就是會(huì)占用過多的IO口,在控制板IO資源比較緊張的情況下,這種方式就不太適用了,這時(shí)通常需要一些額外的器件來幫助我們節(jié)省對IO口的使用,本項(xiàng)目我們就使用集成電路74HC595移位寄存器芯片來達(dá)到這個(gè)目的。ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)74HC595移位寄存器芯片簡介74HC595是一個(gè)具有鎖存功能的8位移位寄存器,能夠支持3.3V邏輯電壓。74HC595能夠在20MHz或更高的頻率下工作。74HC595移位寄存器是指集成電路的輸入是串行一位一位的先后輸入,而輸出是并行同時(shí)輸出的,每當(dāng)有一個(gè)新的串行數(shù)據(jù)輸入到集成電路中時(shí),整個(gè)的并行輸出數(shù)據(jù)就會(huì)整體往前移動(dòng)一位。74HC595的封裝形式有貼片和直插,為了方便與面包板配合使用,可以選用直插封裝的集成電路。引腳標(biāo)識(shí)說明1~7Q1~Q7并行數(shù)據(jù)輸出管腳8GND電源地9Q7’串行數(shù)據(jù)輸出,級聯(lián)時(shí)接到下一個(gè)595的DS端10MR復(fù)位,低電平復(fù)位11SH_CP數(shù)據(jù)輸入時(shí)鐘線12ST_CP輸出鎖存時(shí)鐘線13OE輸出使能,通常置為低,即始終輸出14DS串行數(shù)據(jù)輸入15Q0并行數(shù)據(jù)輸出管腳16VCC電源ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)74HC595移位寄存器芯片引腳功能表ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)74HC595移位寄存器芯片簡介由移位寄存器和數(shù)據(jù)寄存器組成Ds引腳:輸入數(shù)據(jù)SH_CP引腳:上升沿?cái)?shù)據(jù)移位ST_CP引腳:上升沿更新數(shù)據(jù)1010010110100101串入并出74HC595--一位數(shù)碼管模塊本課程套件配備了74HC595直插芯片,為了減少學(xué)習(xí)過程中的線路搭接,同時(shí)配備了74HC595串入并出數(shù)碼管模塊。該模塊已經(jīng)集成了相應(yīng)的限流電阻,極大方便了使用。ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)74HC595--一位數(shù)碼管模塊模塊一共有5個(gè)引腳分別為G、V、D、C、L,其中:D(Date)和74595芯片的Ds數(shù)據(jù)引腳相連。C(Clock)和74595芯片SH_CP時(shí)鐘引腳相連。L(Latch)和74595芯片的ST_CP鎖存引腳相連接。ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)74HC595--一位數(shù)碼管模塊
1個(gè)一位共陽極數(shù)碼管1個(gè)按鍵開關(guān)
2個(gè)10K電阻
2個(gè)杜邦線
若干ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)項(xiàng)目任務(wù):通過按鍵控制74HC595移位寄存器芯片,在數(shù)碼管輸出數(shù)字0。按鍵控制74HC595--一位數(shù)碼管模塊示例準(zhǔn)備:黃色數(shù)據(jù)線接VCC,連續(xù)按按鍵B8次,然后按按鍵A,此時(shí)一位數(shù)碼管熄滅。操作一:黃色數(shù)據(jù)線接地,連續(xù)按按鍵B3次,然后按按鍵A,觀看數(shù)碼管的顯示結(jié)果。ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)按鍵A和B都是下拉接法,當(dāng)按鍵A和B按下時(shí),都會(huì)輸出高電平,產(chǎn)生一個(gè)上升沿脈沖。數(shù)據(jù)線接GND,表示74HC595芯片Ds數(shù)據(jù)引腳輸入的數(shù)字為0,第一次按下B,會(huì)把數(shù)值0發(fā)送到芯片的Q0寄存器中。再次按下B,芯片會(huì)將Q0中的值移位到Q1,同時(shí)從Ds引腳輸入數(shù)字0保存到Q0中。第三次按下B,芯片會(huì)將Q1、Q0中的值移位到Q2和Q1,同時(shí)從Ds引腳輸入數(shù)字0保存到Q0中。此時(shí)按下A,產(chǎn)生一個(gè)上升沿的脈沖,芯片將移位寄存器中的數(shù)據(jù)轉(zhuǎn)入存儲(chǔ)寄存器,輸出低電平,由于采用的共陽極數(shù)碼管,所以筆畫a/b/c點(diǎn)亮。電路操作ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯片--按鍵驅(qū)動(dòng)操作二:將黃色數(shù)據(jù)線連接到VCC,首先按一下按鍵B,然后按一下按鍵A,重復(fù)循環(huán)2次,觀看數(shù)碼管的顯示結(jié)果。在操作一的基礎(chǔ)上,分析操作二,分別按下兩次按鍵A后的數(shù)碼管會(huì)先后顯示兩個(gè)狀態(tài),如圖所示。電路操作ESP32智能硬件--數(shù)碼管|74HC595移位寄存器芯--按鍵驅(qū)動(dòng)74HC595移位寄存器芯片工作原理74HC595芯片的Ds引腳是數(shù)據(jù)輸入引腳;SH_CP引腳上升沿時(shí)移位寄存器中的數(shù)據(jù)依次移動(dòng)一位,即Q0中的數(shù)據(jù)移到Q1中,Q1中的數(shù)據(jù)移到Q2中,以此類推;下降沿時(shí)移位寄存器中的數(shù)據(jù)保持不變;ST_CP引腳上升沿時(shí)移位寄存器中的數(shù)據(jù)進(jìn)入存儲(chǔ)寄存器,下降沿時(shí)存儲(chǔ)寄存器中的數(shù)據(jù)保持不變。應(yīng)用時(shí)通常ST_CP置為低電平,移位結(jié)束后再在ST_CP端產(chǎn)生一個(gè)正脈沖更新顯示數(shù)據(jù)。注意:在實(shí)際操作過程中,有時(shí)會(huì)發(fā)生按鍵按下一次,數(shù)碼管顯示移動(dòng)多位的情形。其原因還是因?yàn)榘存I按下和釋放抖動(dòng)造成的。ESP32智能硬件--數(shù)碼管|一位數(shù)碼管數(shù)字顯示—74HC595移位寄存器芯片一位數(shù)碼管數(shù)字顯示--74HC595移位寄存器芯片ESP32智能硬件--數(shù)碼管|一位數(shù)碼管數(shù)字顯示—74HC595移位寄存器芯片項(xiàng)目任務(wù):本項(xiàng)目在之前的基礎(chǔ)上,通過數(shù)組編程和74HC595移位寄存器芯片控制一位數(shù)碼管輸出指定的數(shù)字。74HC595--一位數(shù)碼管模塊
1個(gè)一位共陽極數(shù)碼管1個(gè)杜邦線
若干74HC595實(shí)現(xiàn)一位數(shù)碼管數(shù)字顯示示例ESP32智能硬件--數(shù)碼管|一位數(shù)碼管數(shù)字顯示—74HC595移位寄存器芯片為了便于大家理解,下面通過圖示的方式,描述如何通過移位寄存器控制共陽極數(shù)碼管顯示數(shù)字“0”,整個(gè)過程分為步驟1~步驟3三個(gè)步驟。num[0]=~0xFC00000011110000001100000011000000ESP32智能硬件--數(shù)碼管|一位數(shù)碼管數(shù)字顯示—74HC595移位寄存器芯片程序中采用一維數(shù)組,數(shù)組中每個(gè)元素采用十六進(jìn)制(0x)表示,和之前項(xiàng)目不同,本程序利用一個(gè)字節(jié)有8位,將每個(gè)數(shù)字8個(gè)筆畫的值保存到數(shù)據(jù)位(bit)中,這樣大大節(jié)省程序內(nèi)存消耗,數(shù)據(jù)占用內(nèi)存僅為之前的八分之一。bitRead()函數(shù)是Arduino的內(nèi)建函數(shù),該函數(shù)的功能就是讀取指定數(shù)據(jù)的指定位。由于采用的共陽極數(shù)碼管,所以需要對bitRead(num[j],i)的值使用!進(jìn)行取反。bitRead(val,n)返回值:被讀取數(shù)指定位的值(1或者0)。val:要被讀取的數(shù)。n:被讀取的為。從0開始,0表示最右端的位。例:bitRead(0b11011010,2)的返回值為0。程序運(yùn)行:上傳本程序,數(shù)碼管按照0~9、點(diǎn)的順序依次顯示。ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器數(shù)碼管計(jì)時(shí)器ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器本項(xiàng)目,我們實(shí)現(xiàn)一個(gè)數(shù)碼管計(jì)時(shí)器。通過按鍵啟動(dòng)計(jì)時(shí),將時(shí)間以秒的形式顯示在四位數(shù)碼管上,再次按下按鍵,停止計(jì)時(shí)。和一位數(shù)碼管不同,四位數(shù)碼管我們采用由兩塊級聯(lián)的74HC595移位寄存器芯片來控制顯示。為了避免由于按鍵抖動(dòng)造成操作異常,讀取按鍵值要進(jìn)行軟件消抖處理。ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器四位數(shù)碼管工作原理本項(xiàng)目四位數(shù)碼管由四個(gè)一位數(shù)碼管組成。一共有12個(gè)引腳,其中4個(gè)為公共端com1~4,對應(yīng)的引腳編號(hào)為12/9/8/6,另外8個(gè)引腳和一位數(shù)碼管一樣分別對應(yīng)數(shù)字的各個(gè)筆畫段。ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器四位數(shù)碼管工作原理四位共陽極數(shù)碼管電路原理圖如右圖所示,所有4個(gè)數(shù)碼管的8個(gè)顯示筆劃“a~h”的同名端連在一起。當(dāng)單片機(jī)輸出數(shù)字時(shí),所有數(shù)碼管都接收到相同的顯示信息,但究竟是哪個(gè)數(shù)碼管會(huì)顯示數(shù)字,取決于對4個(gè)公共端com1~4的控制,因此公共端也稱為選通端。只要將需要顯示的數(shù)碼管的選通端控制打開,該位就顯示數(shù)字,沒有選通的數(shù)碼管就不會(huì)顯示。與一位數(shù)碼管靜態(tài)顯示方式不同,四位數(shù)碼管的顯示方式為動(dòng)態(tài)顯示,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象以及發(fā)光二極管的余暉效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,就不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能節(jié)省大量的I/O端口,而且功耗更低。ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器雙74HC595移位寄存器芯片級聯(lián)模塊工作原理知道四位數(shù)碼管工作原理,如果采用1塊74HC595芯片驅(qū)動(dòng),另外還需要4個(gè)引腳才能驅(qū)動(dòng),為了節(jié)省引腳資源,我們采用兩塊595芯片級聯(lián),這樣只需要3個(gè)引腳就可以實(shí)現(xiàn)四位數(shù)碼管顯示驅(qū)動(dòng)。本項(xiàng)目采用的模塊由2片74HC595移位寄存器芯片級聯(lián)。該模塊可以同時(shí)驅(qū)動(dòng)四位數(shù)碼管和8x8LED點(diǎn)陣屏。ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器雙74HC595移位寄存器芯片級聯(lián)模塊工作原理模塊中兩塊74HC595的ST_CP引腳相互連接在一起,SH_CP引腳相互連接在一起,第二塊芯片的Ds引腳連接第一塊芯片的Q7’。這樣當(dāng)從74HC595-1的Ds引腳串行輸入數(shù)據(jù),當(dāng)數(shù)據(jù)輸入的位數(shù)超過8位,會(huì)自動(dòng)寫入74HC595-2的Q0,依此類推。兩塊74HC595芯片實(shí)際上最多可控制8位數(shù)碼管顯示,本項(xiàng)目只使用了第2塊芯片的Q0~Q3號(hào)引腳。ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器雙74HC595移位寄存器芯片級聯(lián)模塊工作原理右圖顯示了四位數(shù)碼管各引腳和雙595級聯(lián)模塊引腳對應(yīng)關(guān)系圖。要實(shí)現(xiàn)數(shù)碼管顯示指定數(shù)字,首先,打開該數(shù)字對應(yīng)的選通端,然后根據(jù)顯示的數(shù)字控制a~h引腳的高低電平即可實(shí)現(xiàn)數(shù)字顯示。對于四位共陽極數(shù)碼管,要在第2位顯示數(shù)字“2”,74HC595移位寄存器芯片Q0~Q7引腳對應(yīng)的值如圖所示。000110100100000110100100ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器示例任務(wù):使用雙74HC595模塊在四位數(shù)碼管指定位,顯示指定的數(shù)字。在四位數(shù)碼管第二位顯示數(shù)字‘2’。四位共陽極數(shù)碼管1個(gè)雙74HC595移位寄存器級聯(lián)模塊1塊杜邦線
若干電路搭設(shè):使用杜邦線將74HC595模塊連接到開發(fā)板,模塊連接如右圖所示。四位數(shù)碼--單數(shù)顯示示例ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器bitSet()函數(shù)是Arduino的內(nèi)建函數(shù),該函數(shù)的功能是對數(shù)據(jù)的指定位進(jìn)行置位操作,即將指定位設(shè)為1。bitSet()函數(shù)的調(diào)用格式為:bitSet(val,n);返回值:置位后的val。val:想要被置位的數(shù)。n:被置位的數(shù),從0開始,0表示最右端的位。程序中bitSet(val,digit-1)的返回值為2,如下圖所示:置位前val:置位后val:000000000000001076543210ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器shiftOut()是系統(tǒng)提供的移位輸出函數(shù)。該函數(shù)的功能是將一個(gè)字節(jié)的數(shù)據(jù)位一位一位移出,從最高(最左邊)或最低(最右邊)有效位開始,依次向數(shù)據(jù)腳寫入每一位,之后時(shí)鐘腳被拉高或拉低,指示剛才的數(shù)據(jù)有效。該函數(shù)功能和右圖功能一致。shiftOut(dataPin,clockPin,bitOrder,value);dataPin:數(shù)據(jù)輸出引腳,對應(yīng)74HC595的Ds引腳;clockPin:時(shí)鐘引腳,對應(yīng)74HC595的SH_CP引腳;bitOrder:輸出位的順序,最高位(MSBFIRST)優(yōu)先或最低位(LSBFIRST)優(yōu)先。Value:要移位輸出的byte類型的數(shù)據(jù)。30~31行shiftOut()函數(shù)運(yùn)行完畢,74HC595移位寄存器中的數(shù)據(jù)如下圖所示001010100100Q7Q6Q5Q4Q3Q2Q1Q0Q7Q6Q5Q4Q3Q2Q1Q074HC595-274HC595-1Q7`ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器程序中的~為按位取反操作符。NUM[2]按位取反運(yùn)行如下圖所示NUM[2]:~NUM[2]:在程序編寫過程中,我們經(jīng)常需要對位進(jìn)行操作(對二進(jìn)制數(shù)進(jìn)行操作),ArduinoC語言提供的位操作符及說明如下表所示:1101101000100101位運(yùn)算符含義說明示例位運(yùn)算符含義說明示例&按位與
0011&0101---------------值0001~按位非~0101---------------值1010|按位或0011|
0101---------------值0111<<左移1<<0值11<<1值21<<8值256^按位異或0011^
0101---------------值0110>>右移2>>1值11024>>2值256ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器在本項(xiàng)目和前一個(gè)項(xiàng)目中,我們學(xué)習(xí)到位讀取函數(shù)bitRead()和置位函數(shù)bitSet()。Arduino還提供了如下常用的位操作函數(shù):bitClear(val,n);功能:復(fù)位操作函數(shù),將整數(shù)val指定位設(shè)置為0。返回值:復(fù)位操作后的val。val:要執(zhí)行復(fù)位操作的數(shù)。n:要執(zhí)行復(fù)位操作的位。從0開始,0表示最右端的位。bitWrite(val,n,b);功能:向整數(shù)指定位寫入0或者1。返回值:執(zhí)行寫入操作后的val。val:要執(zhí)行寫入操作的數(shù)。n:要執(zhí)行寫入操作的位。從0開始,0表示最右端的位。b:要寫入的值(1或者0)。ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器按鍵消抖以前學(xué)習(xí)的按鍵控制LED燈,需要一直按著按鍵模塊,本項(xiàng)目要通過按鍵開關(guān)控制LED燈,與我們?nèi)粘I钪械姆块g燈的開關(guān)一樣。要達(dá)到這種效果,一般是通過對比當(dāng)前和先前兩次按鍵值的變化,來判斷按鍵是否按下或釋放。此外一次按鍵動(dòng)作在按下和釋放的過程中,對上位按鍵模塊來說,按鍵返回值經(jīng)歷了由1-0和由0-1兩次變化,本項(xiàng)目中將按鍵做開關(guān)來使用,所以僅需取其中的一次狀態(tài)變化作為輸入,常用的獲取按鍵釋放時(shí)的狀態(tài),即值由0-1時(shí)的狀態(tài)變化作為輸入。按下釋放HIGH(1)LOW(0)ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器按鍵消抖按鍵在按下和釋放的瞬間,按鍵內(nèi)金屬簧片接觸是一個(gè)連續(xù)通斷的過程,一般稱之為抖動(dòng),分為前沿抖動(dòng)和后沿抖動(dòng)。為了確保主控板對一次按鍵的操作僅做一次處理,必須進(jìn)行按鍵消抖。按鍵消抖分為軟件消抖和硬件消抖。硬件消抖是通過硬件電路來實(shí)現(xiàn),成本稍高。軟件消抖是通過程序邏輯設(shè)計(jì)的方式進(jìn)行消抖。常用的軟件消抖是通過延時(shí)delay()函數(shù)來實(shí)現(xiàn)。按鍵抖動(dòng)時(shí)長一般為2~10ms,常用做法是在檢測到按鍵狀態(tài)變化后,延時(shí)10~20ms,跳過抖動(dòng)區(qū),再進(jìn)行按鍵狀態(tài)檢測。本項(xiàng)目采用系統(tǒng)提供的millis()函數(shù)來實(shí)現(xiàn)消抖,避免因?yàn)閳?zhí)行delay()而導(dǎo)致程序效率的下降。ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器示例任務(wù):按下并釋放按鍵模塊,板載LED燈(GPIO12)點(diǎn)亮,再次按下并釋放按鍵模塊,LED燈熄滅,依此延續(xù)。按鍵模塊(上拉)1個(gè)39數(shù)據(jù)線1根電路搭設(shè):使用3P數(shù)據(jù)線將按鍵模塊連接到開發(fā)板GPIO26引腳按鍵--開關(guān)控制LED燈(按鍵消抖)示例ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器millis()函數(shù)是Arduino的內(nèi)建函數(shù),該函數(shù)的功能就是返回開發(fā)板運(yùn)行當(dāng)前程序開始的毫秒數(shù)。millis()函數(shù)的調(diào)用格式為:millis();返回值:返回當(dāng)前程序自開始運(yùn)行至當(dāng)前的時(shí)間,單位毫秒。程序行31首先判斷當(dāng)前按鍵值和先前的按鍵狀態(tài)是否相等,如不等,則表明按鍵狀態(tài)發(fā)生了變化。程序行33將按鍵釋放時(shí)(后沿)作為輸入,來切換keyFlag狀態(tài)變量值的變化。程序運(yùn)行中,首次按鍵按下并釋放,LED燈點(diǎn)亮,再次按下并釋放按鍵,LED燈熄滅,依次延續(xù)。ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器示例任務(wù):按鍵按下,啟動(dòng)計(jì)時(shí),再次按下按鍵,計(jì)時(shí)停止。在四位數(shù)碼管上顯示兩次按鍵的時(shí)間間隔,單位毫秒。雙74HC595移位寄存器級聯(lián)模塊1塊4位共陽極數(shù)碼管1根按鍵模塊1個(gè)3P數(shù)據(jù)線1根杜邦線若干電路搭設(shè):將4位數(shù)碼管插接到雙595輸出模塊,注意四位數(shù)碼管的有字邊和模塊上的標(biāo)識(shí)一致。按鍵計(jì)時(shí)器示例ESP32智能硬件--數(shù)碼管|數(shù)碼管計(jì)時(shí)器程序行29~38用于執(zhí)行,當(dāng)狀態(tài)變量keyFlag為true時(shí),記錄當(dāng)前時(shí)間到變量currentTime,開始計(jì)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版企業(yè)信息工程系統(tǒng)性能評估委托合同3篇
- 2025版學(xué)校學(xué)生食堂餐具清洗消毒服務(wù)合同2篇
- 2025版工業(yè)產(chǎn)品設(shè)計(jì)勞務(wù)分包合同示范文本3篇
- 3簡歷篩選技巧
- 2025版新型木工機(jī)械設(shè)備租賃服務(wù)合同范本4篇
- 全新神州2025年度車輛租賃合同6篇
- 互聯(lián)網(wǎng)平臺(tái)未來發(fā)展趨勢與挑戰(zhàn)考核試卷
- 2025版建筑施工安全環(huán)保綜合服務(wù)合同2篇
- 2025版嬰幼兒輔食委托加工生產(chǎn)及質(zhì)量控制合同3篇
- 2025版企業(yè)商標(biāo)注冊委托代理服務(wù)合同2篇
- 數(shù)學(xué)-山東省2025年1月濟(jì)南市高三期末學(xué)習(xí)質(zhì)量檢測濟(jì)南期末試題和答案
- 中儲(chǔ)糧黑龍江分公司社招2025年學(xué)習(xí)資料
- 湖南省長沙市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 2024年林地使用權(quán)轉(zhuǎn)讓協(xié)議書
- 春節(jié)期間化工企業(yè)安全生產(chǎn)注意安全生產(chǎn)
- 數(shù)字的秘密生活:最有趣的50個(gè)數(shù)學(xué)故事
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(吳洪貴)任務(wù)一 移動(dòng)商務(wù)內(nèi)容運(yùn)營關(guān)鍵要素分解
- 基于ADAMS的汽車懸架系統(tǒng)建模與優(yōu)化
- 當(dāng)前中國個(gè)人極端暴力犯罪個(gè)案研究
- 中國象棋比賽規(guī)則
評論
0/150
提交評論