機(jī)器人技術(shù)基礎(chǔ)與應(yīng)用實(shí)踐-基于模塊化的機(jī)器人創(chuàng)意設(shè)計(jì)與實(shí)現(xiàn) 課件 第3、4章 機(jī)器人控制系統(tǒng)的構(gòu)建基礎(chǔ)、機(jī)器人的機(jī)構(gòu)設(shè)計(jì)基礎(chǔ)_第1頁(yè)
機(jī)器人技術(shù)基礎(chǔ)與應(yīng)用實(shí)踐-基于模塊化的機(jī)器人創(chuàng)意設(shè)計(jì)與實(shí)現(xiàn) 課件 第3、4章 機(jī)器人控制系統(tǒng)的構(gòu)建基礎(chǔ)、機(jī)器人的機(jī)構(gòu)設(shè)計(jì)基礎(chǔ)_第2頁(yè)
機(jī)器人技術(shù)基礎(chǔ)與應(yīng)用實(shí)踐-基于模塊化的機(jī)器人創(chuàng)意設(shè)計(jì)與實(shí)現(xiàn) 課件 第3、4章 機(jī)器人控制系統(tǒng)的構(gòu)建基礎(chǔ)、機(jī)器人的機(jī)構(gòu)設(shè)計(jì)基礎(chǔ)_第3頁(yè)
機(jī)器人技術(shù)基礎(chǔ)與應(yīng)用實(shí)踐-基于模塊化的機(jī)器人創(chuàng)意設(shè)計(jì)與實(shí)現(xiàn) 課件 第3、4章 機(jī)器人控制系統(tǒng)的構(gòu)建基礎(chǔ)、機(jī)器人的機(jī)構(gòu)設(shè)計(jì)基礎(chǔ)_第4頁(yè)
機(jī)器人技術(shù)基礎(chǔ)與應(yīng)用實(shí)踐-基于模塊化的機(jī)器人創(chuàng)意設(shè)計(jì)與實(shí)現(xiàn) 課件 第3、4章 機(jī)器人控制系統(tǒng)的構(gòu)建基礎(chǔ)、機(jī)器人的機(jī)構(gòu)設(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩94頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

機(jī)器人控制系統(tǒng)的構(gòu)建基礎(chǔ)半導(dǎo)體器件的應(yīng)用分析但目

錄CONTENT1控制系統(tǒng)的基本構(gòu)成2輸入-輸出(I/O)端口及其應(yīng)用3中斷4鍵盤模塊及其應(yīng)用5常用顯示模塊及應(yīng)用6常用執(zhí)行機(jī)構(gòu)及應(yīng)用3.1控制系統(tǒng)的基本構(gòu)成控制系統(tǒng)的基本構(gòu)成簡(jiǎn)單的開(kāi)環(huán)控制系統(tǒng)通常由輸入設(shè)備、控制器、輸出設(shè)備三部分組成。輸入設(shè)備主要用來(lái)接收外部信息,控制器對(duì)信息進(jìn)行處理并根據(jù)處理結(jié)果發(fā)出控制指令,輸出設(shè)備即執(zhí)行機(jī)構(gòu)執(zhí)行控制的指令閉環(huán)控制系統(tǒng)閉環(huán)控制系統(tǒng)是將輸入量與反饋量比較后產(chǎn)生的偏差量送給控制器,再通過(guò)控制器產(chǎn)生指令控制輸出設(shè)備,從而調(diào)節(jié)輸出量。系統(tǒng)輸出量返回到輸入端,對(duì)控制過(guò)程產(chǎn)生影響。與開(kāi)環(huán)控制相比,閉環(huán)控制系統(tǒng)精度高、動(dòng)態(tài)性能好、抗干擾能力強(qiáng),但結(jié)構(gòu)比較復(fù)雜控制系統(tǒng)的基本構(gòu)成控制系統(tǒng)各部分功能控制器,

作為控制系統(tǒng)的核心單元,主要將輸入端口讀取的外部指令信息進(jìn)行分析運(yùn)算、處理、存儲(chǔ)或通過(guò)輸出端口向執(zhí)行機(jī)構(gòu)發(fā)送控制指令。輸入設(shè)備

,一類特殊功能的物理元件或化學(xué)元件,能感受或探測(cè)到外部環(huán)境信息或操作指令,將之轉(zhuǎn)化為電信號(hào)或其它可以表示的信息。各種傳感器、鍵盤、鼠標(biāo)等輸出設(shè)備,各種執(zhí)行機(jī)構(gòu)及驅(qū)動(dòng)控制電路的總和,主要接收來(lái)自控制器輸出端口的控制息命令,轉(zhuǎn)化并執(zhí)行相應(yīng)的命令信息,產(chǎn)生能改變或調(diào)節(jié)系統(tǒng)工作狀態(tài)的行為動(dòng)作或操作。包括各類執(zhí)行電機(jī)、電磁閥、繼電器、蜂鳴器、指示燈、顯示模塊以及各種驅(qū)動(dòng)電路等。檢測(cè)裝置,檢測(cè)裝置主要有傳感器、數(shù)據(jù)采集以及反饋環(huán)構(gòu)成。作用主要是檢測(cè)輸出量信息或環(huán)境信息等,并將測(cè)量值以特定形式的信號(hào)傳送到輸入端或控制器,以便對(duì)系統(tǒng)進(jìn)行調(diào)節(jié)。電源系統(tǒng),

電源是機(jī)器人正常工作的動(dòng)力保障,也是控制系統(tǒng)穩(wěn)定可靠運(yùn)行的關(guān)鍵。3.2輸入-輸出(I/O)端口及其應(yīng)用輸入-輸出(I/O)端口及其應(yīng)用即輸入/輸出端口。它是控制器與外設(shè)之間進(jìn)行信息交換的通道。作為輸入時(shí),從外界接收檢測(cè)信號(hào)、鍵盤信號(hào)等信息;作為輸出時(shí),向外界輸送單片機(jī)內(nèi)部電路的運(yùn)算結(jié)果、顯示信息、控制命令和驅(qū)動(dòng)信號(hào)等。以ATmega328為內(nèi)核的開(kāi)源主控板ArduinoUNO、Basra等都具有獨(dú)立位操作功能的雙向通用I/O端口(D0~D19),當(dāng)作為通用數(shù)字I/O端口使用時(shí),每個(gè)引腳都具有真正的讀取-修改-寫(xiě)入功能,并且可以通過(guò)程序單獨(dú)定義成輸入或輸出口。使用時(shí),用戶可通過(guò)Arduino基礎(chǔ)函數(shù)庫(kù)提供的數(shù)字I/O的配置函數(shù)來(lái)進(jìn)行設(shè)定。I/0(英文Input/Output的縮寫(xiě))端口數(shù)字I/O端口及其應(yīng)用數(shù)字I/O端口及其應(yīng)用【實(shí)踐項(xiàng)目】按鍵控制LED閃爍?!緦?shí)踐材料】Arduino主控板1塊,紅黃綠LED各1、220?限流電阻3個(gè)、10k?電阻1個(gè)、按鍵1個(gè)、面包板

1塊,以及面包板導(dǎo)線若干;【實(shí)踐要求】按住按鍵,LED閃爍;松開(kāi)按鍵,LED熄滅。LED及其電路連接方法LED的工作原理LED一般指發(fā)光二極管,是一種可以將電能轉(zhuǎn)化為可見(jiàn)光的半導(dǎo)體器件,常用于信號(hào)指示燈、顯示等具有單向?qū)щ娦?。?dāng)LED加上正向電壓(陽(yáng)極接電源正極),且正向電壓大于二極管的通態(tài)管壓降時(shí),電流將從LED陽(yáng)極流入,陰極流出,LED導(dǎo)通點(diǎn)亮;否則,二極管熄滅。LED的長(zhǎng)管腳為陽(yáng)極A,短管腳為陰極K。LED的亮度與流過(guò)二極管的正向電流有關(guān)。電流太小,二極管不亮,電流太大,將導(dǎo)致二極管因過(guò)流燒壞。使用時(shí):通常串聯(lián)一個(gè)限流電阻R以控制流過(guò)二極管的電流大小數(shù)字I/O端口及其應(yīng)用LED與Arduino電路連接

在控制系統(tǒng)中,LED通常是作為輸出元件連接在數(shù)字腳上,根據(jù)I/O端口上電流的流向不同,LED有拉電流和灌電流兩種接線方式。電流從電源流出,然后經(jīng)LED陽(yáng)極、限流電阻、流入到I/O端口,這種接線方式稱為灌電流接線方法,也稱成為控共陰極接法。電流從I/O端口流出,經(jīng)限流電阻、LED,再流回到控制板上的電源負(fù)極GND,這種接線方式稱為拉電流接線方法,也稱為控陽(yáng)極接法拉電流接線方法灌電流接線方法數(shù)字I/O端口及其應(yīng)用

電阻電阻通常分為貼片式和直插式色環(huán)電阻讀數(shù)四環(huán)電阻-前2環(huán)有效數(shù)字,第3環(huán)冪次方,第4環(huán)誤差。五環(huán)電阻-前3環(huán)有效數(shù)字,第4環(huán)冪次方,第5環(huán)誤差。六環(huán)電阻,第6環(huán)是溫度環(huán)數(shù)字I/O端口及其應(yīng)用

電路連接與面包板元件區(qū)豎連橫不連,電源區(qū)橫連豎不連分立元件需整型后再插入面包板,連接時(shí)注意不要短路、斷路數(shù)字I/O端口及其應(yīng)用

按鍵及其電路連接方法按鍵開(kāi)關(guān)及其工作原理輕觸式按鍵開(kāi)關(guān)是一種電子開(kāi)關(guān),屬于電子器件類,依靠?jī)?nèi)部金屬?gòu)椘芰ψ兓瘉?lái)實(shí)現(xiàn)通斷。自然狀態(tài)開(kāi)關(guān)是斷開(kāi)的,此時(shí)同側(cè)兩個(gè)引腳相通。當(dāng)按鈕按下時(shí),開(kāi)關(guān)閉合四個(gè)引腳全部接通;松開(kāi)按鈕,開(kāi)關(guān)立即斷開(kāi),恢復(fù)到自然狀態(tài)數(shù)字I/O端口及其應(yīng)用按鍵常用接線方式u上拉電阻接法u下拉電阻接法u內(nèi)置上拉電阻接法

開(kāi)關(guān)斷開(kāi)時(shí),I/O端口通過(guò)電阻R1接地,輸入引腳電平為L(zhǎng)OW(低);開(kāi)關(guān)閉合時(shí),I/O端口經(jīng)按鍵直接與+5V相連,輸入引腳電平為HIGH(高)。開(kāi)關(guān)斷開(kāi)時(shí),I/O端口通過(guò)電阻R1連接+5V,輸入引腳電平為HIGH(高);開(kāi)關(guān)閉合時(shí),I/O端口經(jīng)按鍵直接接地,輸入引腳電平為L(zhǎng)OW(低)。數(shù)字I/O端口及其應(yīng)用

電路設(shè)計(jì)主控板選擇ArduinoUNO,按鍵采用下拉電阻,LED采用拉電流接法。數(shù)字腳3連接按鍵,數(shù)字腳9連接LED。下拉電阻R1選擇10kΩ,限流電阻R2選擇220Ω。數(shù)字I/O端口及其應(yīng)用數(shù)字腳3連接的按鍵使用下拉電阻,執(zhí)行讀操作函數(shù)digitalRead(3)的結(jié)果:按鍵按下,返回值HIGH;按鈕松開(kāi),返回值LOW。根據(jù)設(shè)計(jì)要求和讀取的按鍵結(jié)果,通過(guò)digitalWrite()函數(shù)向連接LED的輸出端口寫(xiě)入HIGH或LOW,控制其亮滅。

數(shù)字I/O端口的讀/寫(xiě)操作1.

程序設(shè)計(jì)#defineKey3//數(shù)字腳3連按鍵Key,數(shù)字腳8連接LED#defineLED8voidsetup(){//在Arduino上電或復(fù)位(按RESET)時(shí),只運(yùn)行1次

pinMode(Key,INPUT);//初始化Key配置為輸入,LED配置為輸出pinMode(LED,OUTPUT);}

voidloop(){intkeyval=digitalRead(Key);//讀鍵值,結(jié)果存入變量keyvalif(keyval==HIGH){//若鍵值為HIGH,執(zhí)行下面{}中的內(nèi)嵌語(yǔ)句

digitalWrite(LED,HIGH);//向數(shù)字腳LED寫(xiě)一個(gè)HIGH,LED導(dǎo)通點(diǎn)亮delay(500);//延遲等待500msdigitalWrite(LED,LOW);//向數(shù)字腳LED寫(xiě)一個(gè)LOW,LED截止熄滅delay(500);}//延時(shí)等待500ms}數(shù)字I/O端口及其應(yīng)用

按鍵消抖抖動(dòng)產(chǎn)生原因按鍵是一種機(jī)械彈性開(kāi)關(guān),所以在閉合和斷開(kāi)的瞬間會(huì)伴隨一連串的抖動(dòng),這種抖動(dòng)反映到電路上即產(chǎn)生電平變化,如圖3-21所示。按鍵抖動(dòng)影響按鍵抖動(dòng)會(huì)導(dǎo)致一次按鍵被誤讀多次,為導(dǎo)致CPU產(chǎn)生誤操作,需要在信號(hào)切換時(shí)等待電路穩(wěn)定后再讀取按鈕狀態(tài),即按鍵消抖。抖動(dòng)消除方法硬件消抖。如用RS觸發(fā)器電路;軟件消抖。即延時(shí)消抖,第1次檢測(cè)到按鍵閉合后,先執(zhí)行10~20ms的延時(shí)程序,再次檢測(cè)鍵狀態(tài),若兩次相同則按鍵有效。數(shù)字I/O端口及其應(yīng)用

動(dòng)手做基本要求:在上述例程基礎(chǔ)上增加2個(gè)LED,實(shí)現(xiàn)按住按鍵多個(gè)LED輪流亮滅進(jìn)階要求:在基本要求基礎(chǔ),實(shí)現(xiàn)按下按鍵,LED閃爍;再次按下按鍵,LED熄滅。提示:按下按鍵按下再松開(kāi),LED依然閃爍,直到再次按下按鍵,LED熄滅。根據(jù)右下方的電路原理圖,編程實(shí)現(xiàn)十字路口的交通燈控制模擬輸入端口及其應(yīng)用

在Arduino控制系統(tǒng)中,模擬輸入A0~A5是與數(shù)字腳14~19復(fù)用的。與數(shù)字I/O不同的是,模擬輸入端口的信號(hào)是單向傳輸,使用時(shí)不需要在setup()函數(shù)中設(shè)置端口的工作模式。模擬信號(hào),如聲音、溫度、光線、速度等等可以用連續(xù)變化的物理量表示的信息,信號(hào)的幅值、頻率或相位會(huì)隨時(shí)間變化而作連續(xù)變化。模擬信號(hào)能夠精確、真實(shí)地反映事物客觀現(xiàn)象。但是,計(jì)算機(jī)無(wú)法直接處理模擬信號(hào)。計(jì)算機(jī)要處理模擬信號(hào),必須要先將其轉(zhuǎn)換成數(shù)字量。模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)需要經(jīng)過(guò)信號(hào)采集、信號(hào)調(diào)理、模數(shù)轉(zhuǎn)換等過(guò)程。

模擬信號(hào)傳感器就是一種信號(hào)采集裝置,圖3-26是一些常見(jiàn)的模擬量傳感器。它可以把被測(cè)的模擬信號(hào)按照一定規(guī)律轉(zhuǎn)換成易于處理、傳輸、存儲(chǔ)的電信號(hào)或其它形式的信息。A/D轉(zhuǎn)換器接收的模擬信號(hào)為0~5V或0~3.3V電壓信號(hào),ATmega328默認(rèn)接收的模擬信號(hào)為0~5V的電壓信號(hào)

傳感器模擬輸入端口及其應(yīng)用

模擬輸入端口與模擬讀操作ArduinoUNO內(nèi)置一個(gè)10位A/D轉(zhuǎn)換器,帶有6路相互獨(dú)立的模擬輸入通道A0~A5,可以同時(shí)連接6路模擬輸入信號(hào)。編程時(shí),通過(guò)執(zhí)行analogRead()函數(shù),將0~5V模擬信號(hào)轉(zhuǎn)換成0~1023的數(shù)值。

模擬輸入端口的應(yīng)用【實(shí)踐項(xiàng)目】用光敏電阻設(shè)計(jì)一個(gè)自動(dòng)感應(yīng)燈【實(shí)踐材料】光敏電阻、10kΩ分壓電阻、220Ω限流電阻、LED、Arduino控制板、面包板及導(dǎo)線。【實(shí)踐要求】每0.5s測(cè)量一次光線,并將測(cè)量數(shù)據(jù)送到串口顯示,能根據(jù)光線的數(shù)據(jù)控制燈的亮滅?!驹O(shè)計(jì)思路】光敏電阻是一種對(duì)光線非常敏感的元件。它的阻值隨著光強(qiáng)增大而減小。當(dāng)光線很暗時(shí),RL阻值很大(一般可達(dá)1.5MΩ),當(dāng)光線強(qiáng)時(shí),RL阻值很小,甚至可低至1kΩ以下。由于光敏電阻的特殊性能,經(jīng)常被用于環(huán)境光檢測(cè),典型采樣電路如圖3-27所示。其中,RL為光敏電阻,分壓電阻R1選取10kΩ,工作電壓Vin為5v。根據(jù)串聯(lián)分壓原理,可計(jì)算出光敏電阻的電壓Vout模擬輸入端口及其應(yīng)用

電路設(shè)計(jì)

當(dāng)CPU對(duì)模擬腳端口A0執(zhí)行讀操作時(shí),會(huì)讀取到一個(gè)0~5V電壓信號(hào),經(jīng)過(guò)內(nèi)置AD轉(zhuǎn)換器,該模擬信號(hào)被轉(zhuǎn)換成0~1023的數(shù)值。環(huán)境光線變化時(shí),光敏電阻RL的阻值會(huì)變化,Vout電壓也會(huì)隨之改變,analogRead()的返回值也會(huì)發(fā)生相應(yīng)的變化。配置I/O端口模擬輸入端口的信號(hào)是單向傳輸,模擬腳A0無(wú)需設(shè)置,只需將數(shù)字腳9配置為輸出即可模擬輸入端口及其應(yīng)用程序設(shè)計(jì)思路

首先,設(shè)定一個(gè)閾值x,如果analogRead()返回值>x,說(shuō)明光線比參考基準(zhǔn)暗;如果analogRead()返回值<x,則光線比設(shè)定基準(zhǔn)強(qiáng)。然后以此為條件控制數(shù)字腳上的LED電路,光線暗時(shí)LED點(diǎn)亮,光線強(qiáng)時(shí)LED熄滅,從而實(shí)現(xiàn)對(duì)環(huán)境光線自動(dòng)感應(yīng)和調(diào)節(jié)。#defineLED9//數(shù)字腳9連接LED#defineRLA0//光敏電阻連接模擬腳A0voidsetup(){pinMode(LED,OUTPUT);//配置數(shù)字腳9為輸出模式Serial.begin(9600);//啟動(dòng)串口監(jiān)視}voidloop(){intserval=analogRead(RL);//模擬轉(zhuǎn)換結(jié)果送給變量servalSerial.println(serval); //測(cè)量結(jié)果輸出到串口if(serval>600){digitalWrite(LED,HIGH);//analogWrite(LED,serval/4);}elsedigitalWrite(LED,LOW);}delay(500)//每過(guò)0.5s測(cè)量一次模擬輸出端口及其應(yīng)用

在ArduinoUNO控制板上,模擬輸出端口(PWM輸出)與數(shù)字腳3、5、6、9、10、11復(fù)用,為便于與其它數(shù)字腳區(qū)別,其數(shù)字前增加了“~”符號(hào)。模擬輸出與PWM信號(hào)模擬輸出主要指PWM輸出。PWM(PulseWidthModulation)是脈沖寬度調(diào)制的簡(jiǎn)稱。它是Arduino的定時(shí)器/計(jì)數(shù)器在PWM(快速PWM和相位修正PWM)工作模式下,在指定輸出端口產(chǎn)生的一種脈沖寬度可調(diào)的方波信號(hào),如圖3-32所示。其中,圖中虛線表示不同占空比的輸出電壓平均值。調(diào)節(jié)脈沖信號(hào)的寬度可以調(diào)節(jié)PWM信號(hào)占空比,從而控制在該模擬端口輸出一個(gè)平均電壓在0~5V之間的電壓信號(hào)模擬寫(xiě)操作與PWM信號(hào)的調(diào)節(jié)通過(guò)調(diào)用模擬寫(xiě)操作函數(shù)analogWrite()向指定模擬引腳寫(xiě)一個(gè)PWM信號(hào)。執(zhí)行analogWrite()后,該引腳將生成一個(gè)指定占空比的方波,直到下次再執(zhí)行寫(xiě)操作時(shí),才能調(diào)整占空比在UNO板上,5和6輸出的PWM信號(hào)頻率為980Hz,其它引腳輸出的PWM信號(hào)頻率為490Hz。模擬寫(xiě)作函數(shù)digigtalWrite()

模擬輸出端口的應(yīng)用R-BGRGBLED由紅(Red)、綠(Green)和藍(lán)(Blue)三色LED組成,相當(dāng)于把三個(gè)LED的陰極或陽(yáng)極連在一起,引出公共端將三個(gè)陰極連起來(lái)引出公共陰極,稱為共陰極RGBLED;反之就是共陽(yáng)極RGBLED示例——每過(guò)1秒鐘隨機(jī)變化一種顏色voidsetup(){}voidloop(){for(intpin=9;pin<12;pin++)

//隨機(jī)數(shù)依次送給9,10,11analogWrite(pin,random(0,255));delay(1000);}

動(dòng)手做【設(shè)計(jì)要求】用電位器和LED設(shè)計(jì)一個(gè)調(diào)光燈,讓LED的亮度隨著電位器旋轉(zhuǎn)的角度而變化。提示:電位器是一種可變電阻器,使用時(shí)將電位器的固定端分別接到5V和GND,在轉(zhuǎn)動(dòng)電位器旋鈕時(shí),輸出端就可以得到0~5V之間的電壓。電位器模擬輸入值的上下限(0~1023)與PWM輸出的上下限(0~255)正好對(duì)應(yīng),可以采用整除4的方法,也可以使用映射函數(shù)map(value,fromLow,fromHigh,toLow,toHigh)轉(zhuǎn)換。然后再通過(guò)analogWrite()函數(shù)輸出PWM信號(hào)。3.3中斷中斷的概念圖3-35中斷中斷的概念什么是中斷?正常情況下,CPU是按程序指令一條一條向下順序執(zhí)行的。但如果此時(shí)發(fā)生了某一事件B請(qǐng)求CPU迅速去處理,CPU暫停當(dāng)前的工作并保存斷點(diǎn)信息(壓棧保存現(xiàn)場(chǎng)),轉(zhuǎn)去處理事件B(響應(yīng)中斷,執(zhí)行中斷服務(wù)程序)。待CPU將事件B處理完畢后,再回到原來(lái)被中斷的地方(中斷返回)找回?cái)帱c(diǎn)信息(出?;謴?fù)現(xiàn)場(chǎng)),繼續(xù)執(zhí)行程序的過(guò)程稱為中斷中斷的幾個(gè)概念中斷請(qǐng)求中斷響應(yīng)中斷返回中斷屏蔽中斷源中斷優(yōu)先級(jí)中斷嵌套ATmega328的中斷源及其優(yōu)先級(jí)向量序號(hào)程序地址中斷源中斷定義10x0000RESET外部電平復(fù)位,上電復(fù)位,掉電檢測(cè)復(fù)位,看門狗復(fù)位20x0001INT0外部中斷請(qǐng)求030x0002INT1外部中斷請(qǐng)求140x0003PCINT0引腳電平變化請(qǐng)求050x0004PCINT1引腳電平變化請(qǐng)求160x0005PCINT2引腳電平變化請(qǐng)求270x0006WDT看門狗超時(shí)中斷80x0007TIMER2COMPA定時(shí)器/計(jì)數(shù)器2比較匹配A90x0008TIMER2COMPB定時(shí)器/計(jì)數(shù)器2比較匹配B100x0009TIMER2OVF定時(shí)器/計(jì)數(shù)器2溢出中斷110x000ATIMER1CAPT定時(shí)器/計(jì)數(shù)器1捕捉事件120x000BTIMER1COMPA定時(shí)器/計(jì)數(shù)器1比較匹配A130x000CTIMER1COMPB定時(shí)器/計(jì)數(shù)器1比較匹配B140x000DTIMER1OVF定時(shí)器/計(jì)數(shù)器1溢出中斷150x000ETIMER0COMPA定時(shí)器/計(jì)數(shù)器0比較匹配A160x000FTIMER0COMPB定時(shí)器/計(jì)數(shù)器0比較匹配B170x0010TIMER0OVF定時(shí)器/計(jì)數(shù)器0溢出中斷180x0011SPI,STCSPI串行傳輸完成190x0012USART,RXUSART接收完成200x0013USART,UDREUSART數(shù)據(jù)寄存器為空210x0014USART,TXUSART發(fā)射完成220x0015ADCADC轉(zhuǎn)換完成230x0016EEREADYEEPROM準(zhǔn)備240x0017ANALOGCOMP模擬比較器250x0018TWI2線串行接口260x0019SPMREADYSPM準(zhǔn)備高低定時(shí)中斷及應(yīng)用定時(shí)器與定時(shí)器函數(shù)庫(kù)ATmega328的內(nèi)部有3個(gè)定時(shí)器:Timer0、Timer1和Timer2定時(shí)器與Audino庫(kù)函數(shù)的關(guān)系定時(shí)器位數(shù)封裝函數(shù)PWM輸出引腳Timer08bit(256)delay()、millis()和micros()等5,6Timer116bit(65535)Servo.h、TimerOne庫(kù)等9,10Timer28bit(256)tone()、IRremote.h等3,11定時(shí)函數(shù)的應(yīng)用——以定時(shí)器2函數(shù)庫(kù)MsTimer2為例MsTimer2.h函數(shù)庫(kù)包含三個(gè)庫(kù)函數(shù):MsTimer2::start(),MsTimer2::stop()MsTimer2::set(unsignedlongms,void(*f)())定時(shí)中斷函數(shù)的應(yīng)用(1)定時(shí)器設(shè)置成員函數(shù):MsTimer2::set(unsignedlongms,void(*f)())參數(shù)含義:unsignedlongms表示定時(shí)時(shí)長(zhǎng),以ms為單位;void(*f)()表示定時(shí)時(shí)間到了CPU要執(zhí)行的中斷服務(wù)函數(shù);(2)啟動(dòng)定時(shí)器成員函數(shù):MsTimer2::start();參數(shù)含義:開(kāi)啟定時(shí)器2(3)關(guān)閉定時(shí)器成員函數(shù):MsTimer2::stop();參數(shù)含義:關(guān)閉定時(shí)器2MsTimer2.h函數(shù)庫(kù)三個(gè)基本庫(kù)函數(shù):定時(shí)器應(yīng)用示例【設(shè)計(jì)要求】應(yīng)用MsTimer2控制板載指示燈(D13),每0.5s亮或滅一次?!咎崾尽浚涸诰€安裝并引用MsTimer2.h函數(shù)庫(kù)#include<MsTimer2.h>//引用函數(shù)庫(kù)voidflash(){staticbooleanstate=HIGH;//設(shè)置靜態(tài)布爾變量digitalWrite(13,state);state=!state;}voidsetup(){pinMode(13,OUTPUT);//設(shè)置13引腳為輸出MsTimer2::set(500,flash);//定時(shí)時(shí)長(zhǎng)為500msMsTimer2::start();//啟動(dòng)定時(shí)器}voidloop(){}外部中斷函數(shù)及其配置啟用外部中斷啟用外部中斷,需要在setup()函數(shù)中調(diào)用配置外部中斷函數(shù)attachInterrupt(),并自定義中斷服務(wù)程序

函數(shù)原型:

attachInterrupt(digitalPinToInterrupt(pin),ISR,mode);(新版)

attachInterrupt(interrupt,ISR,mode);(舊版)

函數(shù)功能:?jiǎn)⒂猛獠恐袛?,?dāng)指定引腳(pin)上的中斷源信號(hào)滿足某種條件(mode)時(shí),

外部中斷被

觸發(fā),CPU執(zhí)行相應(yīng)的中斷服務(wù)程序(ISR)。

參數(shù)含義:digitalPinToInterrupt(pin)中斷源號(hào)。

pin表示具有外部中斷功能的數(shù)字腳號(hào)。該參數(shù)是實(shí)際數(shù)字腳轉(zhuǎn)換為特定中斷源的編號(hào)。Interrupt中斷源號(hào)(舊版參數(shù))?!?”(INT0)表示使用數(shù)字腳2;“1”(INT1),表示使用數(shù)字腳3。ISR中斷服務(wù)程序。CPU處理中斷響應(yīng)時(shí)需要調(diào)用的函數(shù),一個(gè)無(wú)參無(wú)返回值函數(shù)。ISR應(yīng)盡可能簡(jiǎn)短。如果一個(gè)sketch文件有多個(gè)ISR函數(shù),執(zhí)行順序取決于他們的優(yōu)先級(jí)。在ISR函數(shù)中盡量不使用millis()、delay()及串行通信等依賴中斷的函數(shù),但可以使用無(wú)計(jì)數(shù)器的delayMicroseconds()函數(shù)。ISR和主程序之間傳遞數(shù)據(jù)的類型通常是全局變量。ISR中反復(fù)修改的變量聲明為volatile。外部中斷函數(shù)及其配置mode:中斷觸發(fā)條件。mode設(shè)置有四種模式:LOW,CHANGE,RISING,FALLING。外部中斷的4個(gè)觸發(fā)模式禁用外部中斷函數(shù)detachInterrupt()方法與啟用中斷相似。只需要在setup函數(shù)中配置關(guān)中斷函數(shù)detachInterrupt(digitalPinToInterrupt(pin))或detachInterrupt(Interrupt)即可注意:中斷關(guān)閉后不會(huì)自行開(kāi)啟。外部中斷函數(shù)的應(yīng)用外部中斷應(yīng)用示例【應(yīng)用實(shí)例】使用外部中斷源1(數(shù)字腳3),實(shí)現(xiàn)按鍵控制LED燈的亮滅/***********************************************************/boolstate=LOW;//定義一個(gè)布爾變量state,初值為L(zhǎng)OWvoidsetup(){pinMode(pin,OUTPUT);//定義13引腳為輸出,即使用板載LED

attachInterrupt(1,ISR_change,RISING);//外部中斷函數(shù)配置}voidISR_change(){//中斷服務(wù)程序state=!state;//每次執(zhí)行中斷將state的值取反}voidloop(){digitalWrite(pin,state);}/***********************************************************/外部中斷產(chǎn)生的條件外部中斷產(chǎn)生的條件硬件電路1.可產(chǎn)生高電平和低電平的硬件電路2.

外部信號(hào)接入數(shù)字腳2(INT0)或數(shù)字腳3(INT1)軟件處理

1.voidsetup(){//其他初始化

pinMode(2/3,INPUT);//輸入模式

attachInterrupt(0/1,ISR,FALLING/RISING/CHANGE);

}2.定義中斷響應(yīng)函數(shù)ISR,要求:無(wú)參數(shù),返回值類型void

voidISR_butt(){}INT0(2)INT1(3)lowlowhighRISINGFALLINGRISING+FALLING=CHANGE+5v非必須中斷方式與查詢方式中

斷中斷是事件觸發(fā)的。換言之,只要有事件產(chǎn)生都會(huì)引發(fā)中斷,并且取得最優(yōu)運(yùn)行,因此響應(yīng)更快、更及時(shí)。因此,在控制的過(guò)程中,合理應(yīng)用中斷,可以減少信息丟失,提高控制系統(tǒng)運(yùn)行效率。查

查詢是在loop()函數(shù)里,CPU通過(guò)執(zhí)行digitalRead()函數(shù),定期查詢端口狀態(tài)信息。顯然,捕捉到端口上的信息變化,才能改變LED燈的狀態(tài)。不僅響應(yīng)速度比較慢,還占用系統(tǒng)資源,特別是在主程序處理事件多、處理流程復(fù)雜、函數(shù)嵌套執(zhí)行的情況下,甚至?xí)驗(yàn)樘幚聿贿^(guò)來(lái)而丟失輸入的信息。二者硬件電路相同,實(shí)現(xiàn)的控制效果很相似(與§3.2.1節(jié)相比)。本質(zhì)上是兩種完全不同的操作:查詢與外部中斷。3.4鍵盤模塊及其應(yīng)用行列式鍵盤的特點(diǎn)16個(gè)按鍵構(gòu)成4行4列的陣列式結(jié)構(gòu),簡(jiǎn)稱4×4鍵盤。常見(jiàn)的有普通按鍵式和薄膜式兩種。4×4鍵盤共有8個(gè)接線端,Row1~Row4分別為4個(gè)行輸出線,Col1~Col4為4個(gè)列輸出線。鍵盤上每個(gè)按鍵的狀態(tài)都是由行信號(hào)和列信號(hào)共同確定的。如如按下鍵K12,就短接了第1行和第2列。4×4行列式鍵盤的特點(diǎn)鍵盤掃描的概念使用時(shí),如何準(zhǔn)確地判斷出是哪個(gè)按鍵被按下呢?先判斷哪一行有鍵按下如圖所示,如果數(shù)字腳2的輸入信號(hào)LOW,表示第1行有按鍵被按下再判斷哪個(gè)按鍵被按下從第1列開(kāi)始,通過(guò)對(duì)4路列引腳的控制信號(hào)依序?qū)懙碗娖竭M(jìn)行逐一判斷.向第1列的數(shù)字腳6寫(xiě)LOW,其它3列引腳寫(xiě)HIGH,如果CPU讀取到的第一行信號(hào)為HIGH,說(shuō)明不是K11鍵被按下;向第2列的數(shù)字腳7寫(xiě)LOW,其它3列引腳寫(xiě)HIGH,CPU讀取到第1行信號(hào)為L(zhǎng)OW,表示K12鍵被按下;依次類推,逐行、逐列查詢每個(gè)按鍵狀態(tài),確定鍵號(hào),進(jìn)而執(zhí)行相應(yīng)的功能程序鍵盤掃描鍵盤應(yīng)用舉例鍵盤應(yīng)用示例【設(shè)計(jì)要求】如果有按鍵按下,將該按鍵對(duì)應(yīng)的鍵碼用串口監(jiān)視器顯示。【實(shí)踐材料】4×4鍵盤1個(gè)、Arduino/Basra主控板1塊、導(dǎo)線8根?!驹O(shè)計(jì)思路】(1)電路設(shè)計(jì)(2)

配置I/O端口數(shù)字腳2~5配置為INPUT_PULLUP數(shù)字腳6~9配置為輸出模式OUTPUT按鍵閉合時(shí),需要連接引腳列的I/O

端口輸出控制低電平使列引腳接LOW(3)軟件設(shè)計(jì)第1步定義數(shù)組變量存放控制鍵盤的行與列的數(shù)字腳編號(hào),如rowPins[4]、colPins[4]定義二維字符型數(shù)組keymaps[4][4]存放16個(gè)按鍵所對(duì)應(yīng)的鍵碼信息。第2步初始化I/O端口,啟動(dòng)串口通信,設(shè)置系統(tǒng)通電時(shí),按鍵狀態(tài)全部為斷開(kāi);第3步主循環(huán)loop()函數(shù)編寫(xiě)控制程序。程序分為兩個(gè)部分:鍵盤掃描獲取鍵值,將按鍵的鍵碼信息輸出到串口。示例參考代碼示例參考代碼introwPins[4]={2,3,4,5};//鍵盤行接Arduino的數(shù)字腳2~5intcolPins[4]={6,7,8,9};//鍵盤列接Arduino的數(shù)字腳6~9charkeymaps[4][4]={{'1','2','3','A'},//定義數(shù)組存放鍵碼{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}};charkeyScan,keymap;//定義變量keymap暫存鍵掃描結(jié)果/**********************************************/voidsetup(){Serial.begin(9600);for(inti=0;i<4;i++){pinMode(rowPins[i],INPUT_PULLUP);//行為內(nèi)置上拉

pinMode(colPins[i],OUTPUT);//列引腳為輸出

digitalWrite(rowPins[i],HIGH);//初始化按鍵斷開(kāi)狀態(tài)}}/*********************************************/voidloop(){for(inti=0;i<4;i++){//掃描按鍵,結(jié)果送keyScanfor(intj=0;j<4;j++){digitalWrite(colPins[j],LOW);//列引腳依次置低keyScan=digitalRead(rowPins[i]);if(keyScan==LOW){//為L(zhǎng)OW,表示有鍵按下keymap=keymaps[i][j];//將鍵值的碼值送字符變量Serial.println(keymap);//按鍵碼值送到串口顯示delay(100);//延時(shí)等待數(shù)據(jù)在串口顯示。

}digitalWrite(colPins[j],HIGH);//釋放列引腳}}}/*********************************************/

3.5常用顯示模塊及應(yīng)用LED數(shù)碼管及應(yīng)用共陽(yáng)極數(shù)碼管共陰極數(shù)碼管LED數(shù)碼管及分類按位數(shù)分為1位和多位按照接線方式分為共陰極數(shù)碼管和共陽(yáng)極數(shù)碼

LED數(shù)碼管的控制信號(hào)數(shù)碼管的控制信號(hào)分為:段碼和位碼段碼用于控制數(shù)碼管顯示什么數(shù)字或圖案。位碼控制哪一位數(shù)碼管顯示。控制二極管點(diǎn)亮的信號(hào)共陰數(shù)碼管:段碼為1,位碼為0共陽(yáng)數(shù)碼管:段碼為0,位碼為1LED數(shù)碼管及應(yīng)用

數(shù)碼管的動(dòng)態(tài)顯示數(shù)碼管分靜態(tài)顯示和動(dòng)態(tài)顯示靜態(tài)顯示是段碼引腳接I/O端口,位碼(公共端)接+5或GND,由電源來(lái)提供高低電平。動(dòng)態(tài)顯示是將數(shù)碼管的段碼引腳和位碼引腳都通過(guò)數(shù)字腳控制。動(dòng)態(tài)顯示的原理控制數(shù)碼管交替輪流顯示控制dig2的數(shù)字腳輸出低電平,dig1為高電平,同時(shí)控制段選信號(hào)a~h的I/O端口發(fā)送低位數(shù)碼管的字段碼,這時(shí)右邊數(shù)碼管顯示,其余不顯示;1~2ms后,控制dig2為高電平,dig1為低電平,同時(shí)控制段選信號(hào)a~h的I/O端口發(fā)送高位數(shù)碼管的字段碼,這時(shí)左邊數(shù)碼管顯示,右邊不顯示隔一段時(shí)間重復(fù)上述操作視覺(jué)暫留效應(yīng)LED數(shù)碼管及應(yīng)用

數(shù)碼管應(yīng)用——控制數(shù)碼管實(shí)現(xiàn)1~12月份的滾動(dòng)顯示【設(shè)計(jì)要求】結(jié)合電路原理圖控制數(shù)碼管實(shí)現(xiàn)從01到12的滾動(dòng)顯示,每隔1s顯示一個(gè)數(shù)字?!緦?shí)踐材料】Arduino主控板、2位共陰數(shù)碼管、220Ω限流電阻、面包板及連接線。【設(shè)計(jì)思路】2位數(shù)碼管需要10個(gè)數(shù)字腳:8個(gè)段碼信號(hào)和2路位選信號(hào)。電路設(shè)計(jì)數(shù)字腳2~9依次控制數(shù)碼管的字段碼a~h,11和12連接公共端dig1和dig2,限流電阻選擇220Ω,如圖所示。LED數(shù)碼管及應(yīng)用Arduino主控板數(shù)字引腳與共陰極數(shù)碼管4021AH的相應(yīng)管腳的對(duì)應(yīng)連接關(guān)系如下表所示硬件電路連接圖參考代碼#definedig111

//位選dig1連數(shù)字腳11,dig2連數(shù)字腳12#definedig212intnum[10][8]={//行元素0~9數(shù)字,列元素?cái)?shù)字字段碼{1,1,1,1,1,1,0,0},//顯示0{0,1,1,0,0,0,0,0},//顯示1{1,1,0,1,1,0,1,0},//顯示2{1,1,1,1,0,0,1,0},//顯示3{0,1,1,0,0,1,1,0},//顯示4{1,0,1,1,0,1,1,0},//顯示5{1,0,1,1,1,1,1,0},//顯示6{1,1,1,0,0,0,0,0},//顯示7{1,1,1,1,1,1,1,0},//顯示8{1,1,1,1,0,1,1,0},//顯示9};voidsetup(){for(intpin=9;pin>1;pin--)pinMode(pin,OUTPUT);for(intpin=11;pin<13;pin++)pinMode(pin,OUTPUT);}voidloop(){for(inti=1;i<=12;i++){//依次循環(huán)顯示01~12intgw=i%10;//取出個(gè)位上的顯示數(shù)字intsw=i/10;//取出十位上的顯示數(shù)字for(intt=0;t<125;t++){//動(dòng)態(tài)掃描的時(shí)間

for(intj=0;j<5;j++){//顯示個(gè)位數(shù)字

digitalWrite(dig1,HIGH);//關(guān)閉十位上的數(shù)碼管digitalWrite(dig2,LOW);//打開(kāi)個(gè)位上的數(shù)碼管for(intpin=2;pin<=9;pin++)digitalWrite(pin,num[gw][pin-2]);delay(1);}delay(5);for(intj=0;j<5;j++){//顯示十位數(shù)字digitalWrite(dig2,HIGH);//關(guān)閉個(gè)位上的數(shù)碼管

digitalWrite(dig1,LOW);//打開(kāi)十位上的數(shù)碼管

for(intpin=2;pin<=9;pin++)digitalWrite(pin,num[sw][pin-2]);delay(1);}delay(5);}delay(100);}}8×8LED點(diǎn)陣及應(yīng)用

8*8LED點(diǎn)陣及單體LED導(dǎo)通機(jī)理點(diǎn)陣分為共陽(yáng)和共陰。每個(gè)點(diǎn)代表一個(gè)單體LED,在LED的陽(yáng)極加上一定的正向偏置電壓,LED就會(huì)導(dǎo)通點(diǎn)亮,否則就熄滅點(diǎn)陣顯示一般采用動(dòng)態(tài)掃描方式。常用方式有三種:逐行掃描、逐列掃描、逐點(diǎn)掃描。例如,如果希望第一個(gè)LED(第1行,第1列)點(diǎn)亮,就要給如圖所示的等效電路引腳9接高電平、引腳13接低電平。(a)8×8共陽(yáng)極點(diǎn)陣等效電路(b)點(diǎn)陣第一個(gè)LED被點(diǎn)亮(a)LED點(diǎn)陣及管腳編號(hào)8×8LED點(diǎn)陣及應(yīng)用點(diǎn)陣的驅(qū)動(dòng)控制工程上,常外加專用多位LED驅(qū)動(dòng)電路,如MAX7219/MAX7221,74HC595等驅(qū)動(dòng)芯片(圖3-52),將單片機(jī)I/O端口串行輸出的控制信號(hào),轉(zhuǎn)換成并行輸出后驅(qū)動(dòng)控制LED。注意,使用74HC595驅(qū)動(dòng)8×8LED點(diǎn)陣,需要兩片595級(jí)聯(lián),探索者Bigfish擴(kuò)展板用一片MAX7219驅(qū)動(dòng)。8×8LED點(diǎn)陣及應(yīng)用MAX7219/MAX7221是一款集成的串入/并出共陰極顯示驅(qū)動(dòng)器。它采用3線串行接口傳送數(shù)據(jù),可直接與Arduino的I/O端口相連接。內(nèi)含硬件動(dòng)態(tài)掃描電路、BCD譯碼器、段驅(qū)動(dòng)器和位驅(qū)動(dòng)器以及8X8位靜態(tài)RAM。可直接驅(qū)動(dòng)8×8LED點(diǎn)陣顯示器或8位7段數(shù)碼管,也可以多片MAX7219級(jí)聯(lián),控制更多的LED點(diǎn)陣顯示器。MAX7219各個(gè)引腳的功能如表3-5所示。8×8LED點(diǎn)陣及應(yīng)用

8×8LED點(diǎn)陣的應(yīng)用【設(shè)計(jì)要求】應(yīng)用MAX7219驅(qū)動(dòng),控制實(shí)現(xiàn)從0到9的數(shù)字圖案循環(huán)顯示?!緦?shí)踐材料】Arduino或任何Mega328系列主控板1塊、Bigfish控制板1塊(或者M(jìn)AX7219驅(qū)動(dòng)1片、8×8共陰極LED點(diǎn)陣1個(gè),限流電阻8個(gè)、面板1塊及面板導(dǎo)線若干)。【設(shè)計(jì)思路】圖案二進(jìn)制碼十六進(jìn)制碼

B00000000,B00011000B00100100,B00100100B00100100,B00100100B00011000,B00000000{0x00,0x18,0x24,0x24,0x24,0x24,0x18,0x00}8×8LED點(diǎn)陣及應(yīng)用電路設(shè)計(jì)MAX7219與Arduino主控板之間可采用三根線(DIN、CLK、LOAD)連接,且其串行接口與SPI完全兼容。其引腳分配關(guān)系如下表所示。8×8LED點(diǎn)陣及應(yīng)用

軟件設(shè)計(jì)第1步引用庫(kù)函數(shù)#include<LedControl.h>;構(gòu)造一個(gè)屬于LedControl的函數(shù)對(duì)象lc=LedControl(12,11,13,1),并分配I/O端口。其中,MAX7219的DataIn、CLK、LOAD的管腳分別連接Arduino的數(shù)字腳12、11、13(端口可自由選擇)。第2步定義二維的字節(jié)型數(shù)組,用于存儲(chǔ)數(shù)字0-9的圖案的十六進(jìn)制碼。第3步在setup()函數(shù)中初始化顯示器的狀態(tài),如設(shè)置顯示器的工作模式、顯示亮度、清顯示屏等。第4步在loop()函數(shù)中編寫(xiě)顯示程序。這里通過(guò)調(diào)用setRow()函數(shù)設(shè)置每行8個(gè)LED的狀態(tài)。setRow()是一個(gè)有參函數(shù),函數(shù)原型及調(diào)用格式如下:8×8LED點(diǎn)陣及應(yīng)用

參考代碼OLED有機(jī)發(fā)光二極管及應(yīng)用

OLED顯示模塊簡(jiǎn)介

OLED是有機(jī)發(fā)光二極管OrganicLight-EmittingDiode的簡(jiǎn)稱。它是一種利用多層有機(jī)薄膜結(jié)構(gòu)產(chǎn)生電致發(fā)光的器件,是無(wú)需背光源、無(wú)液晶的自發(fā)光顯示。OLED具有更輕薄、亮度高、功耗低、響應(yīng)快、清晰度高、柔性好、發(fā)光效率高等優(yōu)點(diǎn),深受顯示屏制造商和消費(fèi)者青睞。

OLED分為主動(dòng)式和被動(dòng)式。主動(dòng)式一般為有源驅(qū)動(dòng),主要用于高分辨率的產(chǎn)品;被動(dòng)式的為無(wú)源驅(qū)動(dòng),更適合尺寸比較小的顯示器。OLED有機(jī)發(fā)光二極管及應(yīng)用

提取字模提取字模是將圖文信息轉(zhuǎn)換到能被計(jì)算機(jī)識(shí)別處理的數(shù)字信息的過(guò)程。字模是圖文信息在點(diǎn)陣上顯示的對(duì)應(yīng)編碼,二進(jìn)制或十六進(jìn)制。假設(shè)使用16×16點(diǎn)陣顯示漢字“上”。點(diǎn)陣中高亮部分對(duì)應(yīng)于二進(jìn)制編碼中的1,其余為0,如第一行,二進(jìn)制的編碼應(yīng)該為0000001000000000,用十六進(jìn)制表示剛好兩個(gè)字節(jié)’0x02,0x00,,這樣“上”字共有32個(gè)字節(jié)(2×16行),這32個(gè)字節(jié)就是“上”的字模,如果將字模放入單片機(jī)控制程序,就可以控制OLED顯示出該漢字。OLED有機(jī)發(fā)光二極管及應(yīng)用

提取字模工具——PCtolCD2002安裝提字模工具,請(qǐng)?jiān)谂涮踪Y源中下載PCtolCD2002提取字符字模雙擊PCtolCD2002.exe可執(zhí)行文件,打開(kāi)軟件。選擇顯示信息字模類型:“模式→字符模式”。按照?qǐng)D示設(shè)置字模選項(xiàng):選項(xiàng)→字模選項(xiàng)→設(shè)置字模選項(xiàng)并確定。默認(rèn)點(diǎn)陣格式選擇陰碼,即1為亮,0為滅。選擇字符的型號(hào),默認(rèn)大小16×16。在字符輸入框中輸入準(zhǔn)備顯示的字符,然后單擊生成字模按鈕。此時(shí),在點(diǎn)陣數(shù)據(jù)輸出就可以看到該字的字模,以16進(jìn)制表示。保存字模到指定存儲(chǔ)路徑或者復(fù)制字模。OLED有機(jī)發(fā)光二極管及應(yīng)用顯示圖形信息需要先在Windows附件-畫(huà)圖軟件或其它畫(huà)圖軟件中,將圖片保存為“*.bmp”格式,然后再生成字模。首先,在畫(huà)圖工具的主界面中,選擇重新調(diào)整大小→取消保持縱橫比選項(xiàng)→設(shè)置與點(diǎn)陣相對(duì)的象素,如128*64需要128x64的點(diǎn)陣才能完整顯示,-點(diǎn)擊確定;并另存為單色位圖(*.bmp;*dib)格式,如左圖所示。然后,在字模軟件中打開(kāi)所保存的單色位圖文件。并按照前述的字符生成字模步驟,提取該圖形的字模,保存或復(fù)制待用。單色位圖OLED有機(jī)發(fā)光二極管及應(yīng)用

Arduino控制OLED實(shí)現(xiàn)字符顯示【設(shè)計(jì)要求】

(1)設(shè)計(jì)電路,用Arduino控制OLED顯示“中國(guó)?上海”

(2)修改例程或編寫(xiě)程序,實(shí)現(xiàn)在OLED屏上分行顯示,如城市名稱或?qū)W校LOGO等。【實(shí)踐材料】Arduino控制板1塊、OLED顯示模塊1個(gè),面包板1塊,面包板導(dǎo)線若干。【設(shè)計(jì)思路】

(1)電路連接Arduino的引腳SSD1306的引腳3.3VVCCGNDGNDA4SDAA5SCLOLED有機(jī)發(fā)光二極管及應(yīng)用

軟件設(shè)計(jì)顯示器使用了外部驅(qū)動(dòng)電路,需要引用第三方函數(shù)庫(kù)。驅(qū)動(dòng)芯片型號(hào)不同,有不同的庫(kù)函數(shù),使用時(shí)需要根據(jù)設(shè)計(jì)正確選用。第1步,第一次使用OLED,需要先加載庫(kù)。具體步驟:打開(kāi)AdurinoIDE菜單→工具→管理庫(kù)…→庫(kù)管理器。在庫(kù)管理器搜索框中輸入OLED,在結(jié)果中選擇與OLED驅(qū)動(dòng)芯片相匹配的函數(shù)庫(kù),選擇最新版本號(hào),點(diǎn)擊安裝。安裝成功,可在項(xiàng)目-加載庫(kù)-貢獻(xiàn)庫(kù),查看到U8glib庫(kù)文件。注意:與SSD1306驅(qū)動(dòng)芯片匹配的庫(kù)文件有多個(gè),這里選擇了U8glib函數(shù)庫(kù)。第2步,引用U8glib庫(kù)函數(shù)。手動(dòng)輸入#include<U8glib.h>,或者單擊鼠標(biāo)左鍵選中項(xiàng)目-加載庫(kù)-U8glib。第3步,構(gòu)造一個(gè)函數(shù)u8g(),指明它的驅(qū)動(dòng)芯片、分辨率以及使用I2C協(xié)議,如U8GLIB_SSD1306_128X64u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);

或者:U8GLIB_SSD1306_128X64u8g(SDA|SCL);第4步,用PROGMEM定義一組數(shù)組,將待顯示的字模存儲(chǔ)在flash中,數(shù)據(jù)類型constuint8_t,注意每個(gè)漢字需要獨(dú)立存儲(chǔ)。如,“中國(guó)●上?!保枰x5個(gè)數(shù)組:constuint8_tchinese_n[]PROGMEM={};第5步,打開(kāi)提字模軟件,分別提取“中國(guó)”和“上?!钡淖帜#缓笤賹?xiě)出字節(jié)符“●”字模,見(jiàn)程序代碼。第6步,編寫(xiě)loop函數(shù)。由于OLED像素是128×64,默認(rèn)字符大小16×16,轉(zhuǎn)換成字模數(shù)2×16。如果以位圖形式輸出,調(diào)用函數(shù)u8g.drawBitmapP()函數(shù)時(shí),要注意設(shè)定合適的參數(shù),否則將不能正確顯示。調(diào)用格式:對(duì)象名●函數(shù)名,如u8g.drawBitmap(i,20,2,16,chinese[j]);顯示參數(shù)選擇:表示第一個(gè)字符從第i列、20行開(kāi)始顯示,每個(gè)字符大小2×16(占位16列16行),有j個(gè)字符。實(shí)際顯示時(shí)因?yàn)橛?個(gè)字符要顯示,程序中使用了for循環(huán),每個(gè)字符依次順序向右移16列。3.6常用執(zhí)行機(jī)構(gòu)及應(yīng)用舵機(jī)及其控制

舵機(jī)舵機(jī)是一種位置(角度/速度)伺服的驅(qū)動(dòng)器。它由外殼、控制電路板、驅(qū)動(dòng)馬達(dá)、減速器與位置檢測(cè)元件所構(gòu)成(圖3-60)。舵機(jī)分為角度舵機(jī)和速度舵機(jī)兩種,主要適用于那些需要角度/速度不斷變化并可以保持的控制系統(tǒng)。例如關(guān)節(jié)型機(jī)器人、飛機(jī)輪船的航向控制、導(dǎo)彈制導(dǎo)、云臺(tái)等。周期不同,analogWrite不能直接用于控制舵機(jī)標(biāo)準(zhǔn)舵機(jī)0?90?180(轉(zhuǎn)動(dòng)角度范圍)即以90為中心,左右各擺動(dòng)90。舵機(jī)轉(zhuǎn)動(dòng)的角度是通過(guò)調(diào)節(jié)PWM(脈沖寬度調(diào)制)信號(hào)的占空比來(lái)實(shí)現(xiàn)的。舵機(jī)控制例程#include<Servo.h>//調(diào)用<Servo.h>庫(kù)Servomyservo;//創(chuàng)建一個(gè)舵機(jī)對(duì)象voidsetup(){myservo.attach(9);//舵機(jī)連接數(shù)字口9}voidloop(){myservo.write(30);//寫(xiě)角度到舵機(jī)

delay(1000);//延時(shí)1smyservo.write(90);delay(1000);myservo.write(150);delay(1000);myservo.write(90);delay(1000);}與之前不同,庫(kù)函數(shù)的調(diào)用要先指出對(duì)象名,再指出函數(shù)名。項(xiàng)目-導(dǎo)入庫(kù)-Servo對(duì)象名.函數(shù)名(參數(shù))30?90?1501秒鐘換1個(gè)角度實(shí)現(xiàn)功能:直流電動(dòng)機(jī)及其控制

直流電動(dòng)機(jī)直流電動(dòng)機(jī)是電能轉(zhuǎn)換為機(jī)械能的裝置,常簡(jiǎn)稱直流電機(jī),它是移動(dòng)機(jī)器人的重要組成部分。根據(jù)是否加裝減速裝置,直流電機(jī)可分為普通直流電機(jī)、直流減速電機(jī)單片機(jī)的I/O端口輸出電流比較小,一般在10~20mA,而直流電機(jī)啟動(dòng)與運(yùn)行電流比較大,通常在100mA以上,是無(wú)法直接驅(qū)動(dòng)電機(jī)運(yùn)行的,需要增加驅(qū)動(dòng)電路提高驅(qū)動(dòng)能力。避免電機(jī)運(yùn)行時(shí)產(chǎn)生的電磁干擾影響控制系統(tǒng)正常工作,使用時(shí),一般采用獨(dú)立供電,必要時(shí)可以通過(guò)光耦、繼電器等器件將強(qiáng)弱電信號(hào)進(jìn)行隔離。

常用直流電動(dòng)機(jī)的驅(qū)動(dòng)(1)分立驅(qū)動(dòng)電路(2)集成驅(qū)動(dòng)電路電機(jī)專用集成驅(qū)動(dòng)芯片很多,如L9170、L293D、L298N、GC8549等目前已逐步被集成H橋式驅(qū)動(dòng)電路所替代直流電機(jī)的驅(qū)動(dòng)控制應(yīng)用實(shí)例

專用集成驅(qū)動(dòng)電路L9170L9170是一款DC雙向馬達(dá)驅(qū)動(dòng)芯片,其最大輸出峰值電流Iout=5A(Vcc為6v,Iout=3A),待機(jī)電流小于2μA,工作電壓范圍3-15V,具有緊急停止、過(guò)熱、過(guò)流、欠流及短路保護(hù)等功能和良好的抗干擾性,同時(shí),還內(nèi)置二極管釋放感性負(fù)載的方向沖擊電流,比較適用于自動(dòng)閥門、電磁門鎖、玩具類等電機(jī)的驅(qū)動(dòng)。直流電機(jī)的驅(qū)動(dòng)控制應(yīng)用實(shí)例L9170驅(qū)動(dòng)IC的應(yīng)用設(shè)計(jì)【設(shè)計(jì)要求】按鍵控制實(shí)現(xiàn)直流電機(jī)的正、反轉(zhuǎn)和調(diào)速?!緦?shí)踐材料】Arduino控制板1塊、Bigfish驅(qū)動(dòng)板(或L9170驅(qū)動(dòng)模塊)1個(gè)、按鍵2個(gè)、10k電阻2個(gè),直流電機(jī)1個(gè)、面包板1塊、0.1uF電容1個(gè)、470uF電解電容1個(gè)以及導(dǎo)線若干?!驹O(shè)計(jì)思路】電路設(shè)計(jì)配置I/O端口按鍵連接數(shù)字腳2、3,為輸入模式;數(shù)字腳5、6連接INF和INR,如果控制信號(hào)為邏輯值,則5、6配置為輸出模式。如果控制信號(hào)為PWM信號(hào),5、6可以無(wú)需初始化。直流電機(jī)的驅(qū)動(dòng)控制應(yīng)用實(shí)例軟件設(shè)計(jì)假設(shè),CPU讀取到數(shù)字腳2的引腳電平為L(zhǎng)OW、數(shù)字腳3為HIGH,表示Key1被按下,這時(shí)向數(shù)字腳5、6分別寫(xiě)數(shù)字信號(hào)1和0,電機(jī)將順時(shí)針旋轉(zhuǎn);如果向5寫(xiě)占空比為127的PWM信號(hào),6寫(xiě)占空比為0的PWM信號(hào),電機(jī)將以半速順時(shí)針旋轉(zhuǎn)。同理,如果讀取到數(shù)字腳3的引腳電平為L(zhǎng)OW,數(shù)字腳2為HIGH,說(shuō)明按鍵Key2被按下,向5、6分別寫(xiě)占空比為0,200的PWM信號(hào),電機(jī)將以約80%的速度逆時(shí)針旋轉(zhuǎn)。#defineKey12#defineKey23#defineINF5#defineINR6voidsetup(){pinMode(Key1,INPUT);pinMode(Key2,INPUT);}

voidloop(){if(digitalRead(Key1)==LOW&&digitalRead(Key2)==HIGH){analogWrite(INF,127);analogWrite(INR,0);delay(500);}if(digitalRead(Key2)==LOW&&digitalRead(Key1)==HIGH){analogWrite(INF,0);analogWrite(INR,200);delay(500);}}電磁繼電器及其應(yīng)用電磁繼電器是一種利用電磁鐵控制電路系統(tǒng)通斷的開(kāi)關(guān)。它主要由電磁鐵、銜鐵、彈簧和動(dòng)觸點(diǎn)、靜觸點(diǎn)等構(gòu)成,如圖3-68所示。在電路中,繼電器主要起自動(dòng)調(diào)節(jié)、安全保護(hù)、轉(zhuǎn)換電路等作用。工作原理:如果線圈兩端加上一定電壓,線圈中就會(huì)有電流流過(guò),從而產(chǎn)生電磁效應(yīng)。銜鐵在電磁力的作用下吸合,帶動(dòng)公共觸點(diǎn)COM動(dòng)作,使常開(kāi)觸點(diǎn)NO閉合,常閉觸點(diǎn)NC斷開(kāi);當(dāng)線圈斷電后,電磁力也隨之消失,銜鐵就會(huì)在彈簧彈力的作用下釋放,使動(dòng)觸點(diǎn)COM復(fù)位,常開(kāi)觸點(diǎn)NO斷開(kāi),常閉觸點(diǎn)NC閉合。如此吸合、釋放,實(shí)現(xiàn)了小電流控制大功率電路的導(dǎo)通與切斷的目的。電磁繼電器及其應(yīng)用#defineRelay7voidsetup(){pinMode(Relay,OUTPUT);}voidloop(){digitalWrite(Relay,HIGH);delay(10000);digitalWrie(Relay,LOW);delay(5000);}參考代碼電路設(shè)計(jì)謝謝大家機(jī)器人的機(jī)構(gòu)設(shè)計(jì)基礎(chǔ)半導(dǎo)體器件的應(yīng)用分析但目

錄CONTENT1機(jī)構(gòu)的基本組成及分析2常用的平面機(jī)構(gòu)3個(gè)性化的機(jī)構(gòu)設(shè)計(jì)基礎(chǔ)4.1機(jī)構(gòu)的基本組成及分析機(jī)構(gòu)的基本組成及分析構(gòu)件

機(jī)構(gòu)是由許多構(gòu)件組成的,其功能在于傳遞運(yùn)動(dòng)或改變運(yùn)動(dòng)的形式。一般可分為平面機(jī)構(gòu)和空間機(jī)構(gòu)。本章重點(diǎn)介紹平面機(jī)構(gòu)的基本組成和基本概念。構(gòu)件是機(jī)構(gòu)的基本運(yùn)動(dòng)單元。通常由若干個(gè)機(jī)械零件剛性連接而成。構(gòu)件與零件的區(qū)別:構(gòu)件是運(yùn)動(dòng)的單元,而零件是制造的單元。不受任何約束的構(gòu)件稱為自由構(gòu)件。在平面坐標(biāo)系中,需要3個(gè)基本運(yùn)動(dòng)描述自由構(gòu)件,而空間坐標(biāo)系中,需要6個(gè)基本運(yùn)動(dòng)描述自由構(gòu)件。機(jī)構(gòu)的基本組成及分析兩構(gòu)件直接接觸并能產(chǎn)生相對(duì)運(yùn)動(dòng)的可動(dòng)連接稱為運(yùn)動(dòng)副。運(yùn)動(dòng)副分為高副和低副。(a)高副機(jī)構(gòu)(b)低副機(jī)構(gòu)運(yùn)動(dòng)副低副:面和面接觸高副:點(diǎn)或線接觸機(jī)構(gòu)的基本組成及分析約束約束是限制構(gòu)件獨(dú)立運(yùn)動(dòng)的條件。約束是由機(jī)構(gòu)中各構(gòu)件的相互接觸引起的,接觸方式不同,約束不同低副:2個(gè)約束,1個(gè)自由度;①轉(zhuǎn)動(dòng)副:兩個(gè)構(gòu)件間只能作相對(duì)旋轉(zhuǎn)運(yùn)動(dòng)的運(yùn)動(dòng)副;②移動(dòng)副:兩個(gè)構(gòu)件間只能作相對(duì)移動(dòng)運(yùn)動(dòng)的運(yùn)動(dòng)副。高副:1個(gè)約束,2個(gè)自由度。①齒輪副;②凸輪副。低運(yùn)動(dòng)副對(duì)構(gòu)件的約束(b)高運(yùn)動(dòng)副對(duì)構(gòu)件的約束機(jī)構(gòu)的基本組成及分析運(yùn)動(dòng)鏈閉鏈開(kāi)鏈若干個(gè)構(gòu)件通過(guò)運(yùn)動(dòng)副聯(lián)接組成的系統(tǒng),分為閉環(huán)和開(kāi)環(huán)。分為平面運(yùn)動(dòng)鏈和空間運(yùn)動(dòng)鏈機(jī)構(gòu)的基本組成及分析自由度圖4-4平面機(jī)構(gòu)自由度

獨(dú)立運(yùn)動(dòng)參數(shù)的數(shù)目。機(jī)構(gòu)的自由度等于廣義坐標(biāo)的數(shù)目,用F表示。分為平面機(jī)構(gòu)自由度和空間機(jī)構(gòu)自由度。平面機(jī)構(gòu)的自由度計(jì)算假設(shè),設(shè)平面機(jī)構(gòu)中共有n個(gè)活動(dòng)構(gòu)件(機(jī)架不是活動(dòng)構(gòu)件),在構(gòu)件未構(gòu)成運(yùn)動(dòng)副時(shí)共有3n個(gè)自由度;各構(gòu)件構(gòu)成運(yùn)動(dòng)副后,設(shè)共有PL個(gè)低副和PH個(gè)高副,則機(jī)構(gòu)將受到2PL+PH個(gè)約束,平面機(jī)構(gòu)的自由度F為:如果F>0,即機(jī)構(gòu)的自由度至少為1,且機(jī)構(gòu)的原動(dòng)件數(shù)目應(yīng)等于機(jī)構(gòu)的自由度數(shù)目。如果F=0,則機(jī)構(gòu)已退化為一個(gè)構(gòu)件,即它將是一個(gè)結(jié)構(gòu)(structure)。機(jī)構(gòu)的基本組成及分析平面機(jī)構(gòu)運(yùn)動(dòng)簡(jiǎn)圖常見(jiàn)運(yùn)動(dòng)副和構(gòu)件的規(guī)定畫(huà)法運(yùn)動(dòng)簡(jiǎn)圖的繪制方法和步驟第1步分析機(jī)構(gòu)的功能和運(yùn)動(dòng)情況,分清固定件、原動(dòng)件和從動(dòng)件,確定構(gòu)件數(shù)目;第2步從原動(dòng)件開(kāi)始,按照運(yùn)動(dòng)的傳遞順序,分析各構(gòu)件之間的相對(duì)運(yùn)動(dòng)性質(zhì),確定所有運(yùn)動(dòng)副的類型和數(shù)目;第3步選擇合理的位置(即能充分反映機(jī)構(gòu)的特性);第4步確定比例尺,測(cè)出運(yùn)動(dòng)副的相對(duì)位置和尺寸;如果只是為了表達(dá)清楚傳動(dòng)關(guān)系,也可以不用特別精確,如果是在實(shí)際生產(chǎn)中使用那就必須非常精確。第5步用規(guī)定的符號(hào)和線條繪制成簡(jiǎn)圖。(從原動(dòng)件開(kāi)始畫(huà))4.2常用的平面機(jī)構(gòu)平面四桿機(jī)構(gòu)的基礎(chǔ)知識(shí)

曲柄搖桿機(jī)構(gòu)連桿機(jī)構(gòu)是一種常見(jiàn)的傳動(dòng)機(jī)構(gòu)。它是由多個(gè)有確定運(yùn)動(dòng)的構(gòu)件用低副(轉(zhuǎn)動(dòng)副或移動(dòng)副)聯(lián)接組成的平面機(jī)構(gòu)。如圖4-6所示,在機(jī)構(gòu)中四個(gè)運(yùn)動(dòng)副都是轉(zhuǎn)動(dòng)副的四桿機(jī)構(gòu)也稱為鉸鏈四桿機(jī)構(gòu)最常見(jiàn)的基本形式有三種

曲柄搖桿機(jī)構(gòu)是指具有一個(gè)曲柄和一個(gè)搖桿的鉸鏈四桿機(jī)構(gòu)(圖4-7)。曲柄為主動(dòng)件作整周轉(zhuǎn)動(dòng),搖桿為從動(dòng)件作擺動(dòng),連桿作平面運(yùn)動(dòng)。平面四桿機(jī)構(gòu)的基礎(chǔ)知識(shí)雙曲柄機(jī)構(gòu)若兩連架桿均為曲柄的鉸鏈四連桿機(jī)構(gòu)稱為雙曲柄機(jī)構(gòu)。在雙曲柄機(jī)構(gòu)中,主動(dòng)曲柄做等速運(yùn)動(dòng),從動(dòng)曲柄做變速運(yùn)動(dòng),二者都做整周運(yùn)動(dòng)。1.雙搖桿機(jī)構(gòu)兩連架桿都是搖桿(擺桿)的鉸鏈四桿

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論