




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一、Arduino環(huán)境都很簡(jiǎn)單、易理解的特點(diǎn)??梢钥焖偈褂肁rduino做出有趣的東西。并且開放源碼的硬件平臺(tái),和一套為Arduino板編寫程序的開發(fā)環(huán)境組成。Arduino可以用來開發(fā)交互產(chǎn)品,比如它可以大量的開關(guān)和傳感器信號(hào),并且可以控制各式各樣的電燈、電機(jī)和其他物理設(shè)備。Arduino項(xiàng)目可以是單MaxMSP)進(jìn)行通訊。Arduino開源的IDE可以免費(fèi)得到。特色描開放原始碼的電路圖設(shè)計(jì),開發(fā)界面免費(fèi),也可依需求自己修改!!程(如:LED燈、蜂鳴器、按鍵、光敏電阻等等)性能描數(shù)字輸入/輸出端口0—13。模擬輸入/輸出端口0-5。支持ISP功能 出來32位的MCU平臺(tái)支持arduino。幾個(gè)比較特殊的端口說明VIN端口:VINinputvoltage的縮寫,表示有外部電源時(shí)的輸入端口。電,電池正構(gòu)接VIN端口,負(fù)構(gòu)接GND端口)。AREF:Referencevoltagefortheoginputs模擬輸入的基準(zhǔn)電壓)。使用ogReference()命令調(diào)用。二、ArduinoC語法介AVR單片機(jī)(微控制器)的朋友也能輕松上手。那么這里我就簡(jiǎn)單的注釋一下Arduino語法。關(guān)鍵 語法符運(yùn)算---數(shù)據(jù)類布爾類型字符類型字節(jié)類型整數(shù)類型無符號(hào)長(zhǎng)整型實(shí)數(shù)類型常表示數(shù)字IO口的電平,HIGH表示高電平(1),LOW表示低IO口的方向,INPUT表示輸入(高阻態(tài)),OUTPUT表示輸出(AVR5V電壓40mA電流)。true|falsetrue表示真(1),false表示假(0)結(jié)voidloop():連續(xù)執(zhí)行函數(shù)內(nèi)的語句功13,ModeINPUTOUTPUTdigitalWrite(pin,value)IO口輸出電平定義函數(shù),pin0~13,valueHIGHLOWHIGHLED。表示為HIGH或LOW感器(10位AD,0~5V表示為0~1023)。ogWrite(pin,value)_數(shù)字IO口 的IO口可使用該函數(shù),pin表示3,5,6,9,10,11,value表示為0~255。比如可用于電機(jī) 調(diào)速或音樂。時(shí)間函delay(ms):延時(shí)函數(shù)(單位ms)delayMicroseconds(us):延時(shí)函數(shù)(單位us)數(shù)學(xué)函min(xy)abs(x)map(value,fromLowfromHigh,toLowtoHigh):約束函數(shù),valuefromLowtoLowfromHightoHighpow(base,exponent):開方函數(shù),baseexponentsq(x)sqrt(x)三、 入門--課前準(zhǔn)第一步,arduino開發(fā)環(huán)(需要把ArduinoIDE回來(IDE就是arduino的軟件程序開發(fā)環(huán)境)進(jìn)行MacOS第二步,安arduino拆了包裝,usb數(shù)據(jù)線連接到電腦,本帖以winxpwin7兩種系統(tǒng)為例,演示一下arduino原版驅(qū)動(dòng)何如安裝。winxp使用方頭 找驅(qū)動(dòng)的位置。驅(qū)動(dòng)在IDE軟件中的win7腦中查找arduino驅(qū)動(dòng)。 當(dāng)出現(xiàn)如上提示的時(shí)候,證明arduino原版驅(qū)動(dòng)已經(jīng)安裝完成。為了查看可以看到我們的arduino驅(qū)動(dòng)已經(jīng)安裝成功,并且com是COM9第三步,軟件的使 。然后就可以看到arduino.exe文件,雙擊打開IDE。菜單欄上,首先看File菜單~接下來看Edit菜單~SketchToolsHelp(2)程發(fā)板程序。找到IDE接著我們?cè)诠ぞ逤OM9COM9即可。之后點(diǎn)擊上傳按鈕,也就是程序的意思,這個(gè)時(shí)候要保證arduino載程序的步驟您已經(jīng)成功了!可以說你的arduino已經(jīng)有入門基礎(chǔ)了!四、Arduino入門—實(shí)戰(zhàn)操作 oWorld!void{Serial.begin(9600);//opensserialport,setsdatarateto9600bps oWorld!");}void{}Serial.begin(9600);這個(gè)函數(shù)是為串口數(shù)據(jù)傳輸設(shè)置每秒數(shù)據(jù)傳輸速率,每率“300,1200,2400,4800,9600,14400,19200,28800,38400,57600或115200”。把代碼到arduino控制板2)成功后,先選擇選項(xiàng)“tool”工具按鈕,選擇相應(yīng)的arduino控制板,和對(duì)應(yīng)的“com”口。打開串口工具,在新打開的串口工具窗口的“右下角”選擇相應(yīng)的波特率。第二章板載LED閃爍實(shí)按照上圖好電路后,就可以開始編寫程序了,我們還是讓LED小燈閃爍,int =13;//定義數(shù)字13void{pinMode(ledPin,OUTPUT);//定義小燈接口}void{digitalWrite(ledPin,HIGH);//點(diǎn)亮小燈delay(1000);//延時(shí)1秒digitalWrite(ledPin, //熄滅小燈 延時(shí)1秒}第三LED閃爍實(shí)PN結(jié)組成,也具有單向?qū)щ娦?。?dāng)給發(fā)光PN結(jié)附近數(shù)微米內(nèi)分別與N區(qū)的電子和P區(qū)的空穴復(fù)合,產(chǎn)生自發(fā)輻射的必須串聯(lián)限流電阻以控制通過管子的電流。限流電阻R可用下式計(jì)算:R=(E-VF)/I式中E為電源電壓,VFLED的正向壓降,ILED的一般工作電流。發(fā)光二1.5~2.0V10~20mA5v的數(shù)字邏輯電路中,可使用220Ω的電阻作為限流電阻。3、LedLed燈有兩種連線方法:當(dāng)led燈的陽極通過限流電阻與板子上的數(shù)字I/O電平時(shí),led截止,發(fā)光二極管熄滅。如圖:止,發(fā)光二極管熄滅;數(shù)字口輸出低電平,led燈導(dǎo)通,發(fā)光二極管點(diǎn)亮。本實(shí)驗(yàn)選擇了接線方法1連接發(fā)光二極管,將220Ω電阻的一端插在PrototypeShield8digitalI/O口,電阻的另一端插在面包板上,簡(jiǎn)單的控制一個(gè)ledLed燈:1按照Arduino使用介紹將控制板、板子、面包板連接好,線插好。最led快速閃爍,可以將延時(shí)時(shí)間設(shè)置的小一些,但不能led燈一直在亮著;如果想led慢一點(diǎn)閃爍,可以將延時(shí)時(shí)間設(shè)置的大一些,但也不能過大,過大的話void{}void{delay(1000);//設(shè)定延時(shí)時(shí)間,1000=1秒digitalWrite(ledPin,LOW);//PIN8LOW=0Vdelay(1000);//設(shè)定延時(shí)時(shí)間,1000=1秒}setup()IO口輸入輸出模式定義函數(shù)pinMode(pin,mode),將數(shù)字的第8引腳設(shè)置為輸出模式。時(shí)1000ms,讓發(fā)光二極管亮1s;再用數(shù)字IO口輸出電平定義函數(shù)delay(ms)(ms)1000ms1s。因?yàn)榘凑?中的程序方法將本程序到實(shí)驗(yàn)板中第四章控制實(shí)PulseWidthModulation就是通常所說的PWM,號(hào)電平進(jìn)行數(shù)字編碼的方法,由于計(jì)算機(jī)不能輸出模擬電壓,只能輸出0或5V的的數(shù)字電壓值,我們就通過使用高分辨率計(jì)數(shù)器,利用方波的占空比被調(diào)制的方法來對(duì)一個(gè)具體模擬信號(hào)的電平進(jìn)行編碼。PWM信號(hào)仍然是數(shù)字的,因?yàn)樵诮o定的任何時(shí)刻,滿幅值的直流供電要么是5V(ON),要么是0V(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)(接通時(shí)間/脈沖時(shí)間)*最大電壓值PulseWidthation就是通常所說的PWM,譯為脈沖寬度調(diào)制,簡(jiǎn)稱脈寬調(diào)制。脈平進(jìn)行編碼。PWM信號(hào)仍然是數(shù)字的,因?yàn)樵诮o定的任何時(shí)刻,滿幅值的帶寬足夠,任何模擬值都可以使用PWM進(jìn)行編碼。輸出的電壓值是通過通辦…,也許你會(huì)說串聯(lián)電阻?OK,這個(gè)方法是正確的。但是如果1V,3V,3.5V等等之間來回變動(dòng)怎么辦呢?不可能不停地切換電阻吧。這種情況下…,就需要使用 了。他是怎么控制的呢,對(duì)于arduino的數(shù)字端口電壓輸出只有LOW與HIGH兩個(gè)開關(guān),對(duì)應(yīng)的就是0V與5V的電壓輸出,我們?nèi)绻?10101010101這樣輸出,剛好一半一半,這樣輸出端口實(shí)際的輸出電壓是2.5V。這個(gè)類似我們放映,我們所看的并不是完全連續(xù)的,它其實(shí)是每秒輸出25張,在這種情況下人眼是分辨不出來的,看上去就是連 也是同樣的道理,如果想要不同的電壓,就控制0與1的輸出比例就ok。當(dāng)然…這和真實(shí)的連續(xù)輸出還是有差別的,單位時(shí)間內(nèi)輸出的0,1在上圖中,綠線之間代表一個(gè)周期,其值也是頻率的倒數(shù)。換句話說,如果arduino ogWrite()命令中可以操控的范圍為0-255, ogWrite(255)表示100%占空比(常開 ogWrite(127)占空比大約為50%(一半的時(shí)間) ogWrite()ogWrite():作用是給端口寫入一個(gè)模擬值( LED燈的亮度變化,或者以不同的速度驅(qū)動(dòng)馬達(dá)。當(dāng)執(zhí)行ogWrite()命令后,端口會(huì)輸出一個(gè)穩(wěn)定的占空比的方波。除非有下一個(gè)命令來改變它。信號(hào)的頻率大約為490Hz.ATmega168ATmega328UNOarduino控制板上,其工作3,5,6,9,10,11ArduinoMega,25602-13號(hào)端作于9,10,11號(hào)端口。在使用ogWrite()命令前,可以不使用pinMode()命Pin 輸出與5,6號(hào)端,會(huì)產(chǎn)生比預(yù)期更高的占空比。原因是Led燈:1按照Arduino使用介紹將控制板、面包板連接好最后,按照?qǐng)D將發(fā)光二級(jí)管2209引腳。這樣我們就完成了實(shí)驗(yàn)的連線部分。5intbrightness0;//brightness與其初始值,此變量用來表示LED的亮度。intfadeAmount5;//fadeAmount,此變量用來做亮度變化voidsetup()}voidloop()ogWrite(9,brightness);//brightness9brightnessbrightnessfadeAmount;//brightness值,使亮度在下一if(brightness==0||brightness==255)fadeAmountfadeAmount}}5)程按照 中的程序方法將本程序到實(shí)驗(yàn)板中6)將程序到實(shí)驗(yàn)板后我們可以觀察到,通過 PulseWidthModulation脈沖寬度調(diào)制,簡(jiǎn)稱脈寬調(diào)制。是利用微處理器的0V5V的數(shù)字電壓值,(0V0;5V1)所以通過高分辨率計(jì)數(shù)器,利用方波的占空比被調(diào)制的方法對(duì)一個(gè)具體但信號(hào)仍然是數(shù)字的,因?yàn)樵诮o定的任意時(shí)刻,直流供電要么進(jìn)行編碼。輸出電=(接通時(shí)間/)*最大電壓值1、脈沖寬度變化幅度(最小值/最大值2、脈沖周期(1秒內(nèi)脈沖頻率個(gè)數(shù)的倒數(shù)3、電壓高度(例如:0V- 接口分別是數(shù)字接口、、、、第五章流水燈實(shí)Led燈:6LED燈依次接到數(shù)字1~6圖1.6燈實(shí)驗(yàn)的接在生活中我們經(jīng)常會(huì)看到一些由各種顏色的led燈組成的燈,燈是利用led燈編程模擬燈的效果。在程序中我們?cè)O(shè)置led燈亮滅的次序和時(shí)間,這樣就可以組成不同的效果。樣式一子程序:led首先從左邊的綠燈開始間隔200ms依次點(diǎn)亮六個(gè)led燈,led200msled燈全部熄滅,這個(gè)過程循環(huán)兩次就實(shí)現(xiàn)了閃爍的效果。樣式二子程序設(shè)置k和j的值讓中間執(zhí)行一遍后改發(fā)k和j的值讓讓兩邊的綠燈先熄滅,接著兩邊的紅燈熄滅,最后中間的兩個(gè)黃燈熄滅。樣式程序:設(shè)置k和j的值,讓兩邊的綠燈亮400ms后再熄滅,接著讓兩邊的紅燈亮400ms后再熄滅,最后讓中間的兩個(gè)黃接著讓兩邊的綠燈亮400ms后熄滅??吹竭@是arduino編程軟件窗口,上面有本實(shí)驗(yàn)的程序代碼。//LedIOintLed1=1;intLed2=2;intLed3=intLed4=intLed5=5;intLed6=//led1void{unsignedcharfor(j=1;j<=6;j++)//200ms1~6led{digitalWrite(j,HIGH);//jleddelay(200);//延時(shí)}for(j=6;j>=1;j--)//200ms6~1led{digitalWrite(j,LOW);//jleddelay(200);//延時(shí)}}void{unsignedcharfor(k=0;k<=1;k++)//閃爍兩{for(j=1;j<=6;j++)//1~6led燈digitalWrite(j,HIGH);//jled燈delay(200);//延時(shí)200msfor(j=1;j<=6;j++)//1~6led燈digitalWrite(j,LOW);//jled燈delay(200);//延時(shí)200ms}}//led2void{unsignedcharj,k;{delay(400);//延時(shí)400msk=2;//k}{delay(400);//延時(shí)400ms}}//led3void{{delay(400);//延時(shí)400msdigitalWrite(j,LOW);//熄滅k-=2;//k值減2}{delay(400);//延時(shí)400msk+=2;//k值加2}}void{unsignedcharfor(i=1;i<=6;i++)//依次設(shè)置1~6pinMode(i,OUTPUT);//設(shè)置第i}void{}for(i=1;i<=6;i++)//依次設(shè)置1~6個(gè)數(shù)字引腳為輸出模pinMode(i,OUTPUT);//設(shè)置第i個(gè)引腳為輸出模for循環(huán)。它的一般形式為for(<初始化條件表達(dá)式增量語句初始化總是一個(gè)賦值語句它用來給循環(huán)控制發(fā)量賦初值條件表達(dá)式是一個(gè)關(guān)系表達(dá)式它決定什么時(shí)候退出循環(huán)增量定義循環(huán)控制發(fā)量每循環(huán)一次后按什么方式變化。這三個(gè)部分之間用";"分開。例如:for(i=1;i<=10;i+語句i1,i10,若是則執(zhí)行語句,1。再重新判斷,直到條件為假,i>10時(shí),結(jié)束循環(huán)。(5)程按照 中的程序方法將本程序到實(shí)驗(yàn)板中(6)程序—>閃爍子程序—>樣式二子程序—>閃爍子程序—>樣式程序—>第六章交通燈設(shè)計(jì)實(shí)Led燈:3的電阻:3圖1.6燈實(shí)驗(yàn)的接arduinodelay()函數(shù)來控制延時(shí)時(shí)間,這相對(duì)于C語言就要簡(jiǎn)單trafficLed.pdearduino編程intledred=10;//10紅燈intledyellow=7;//7黃燈intledgreen=4;//4綠燈voidsetup(){}void{delay(1000);//延時(shí)1000毫秒=1秒delay(200);//延時(shí)200毫秒//delay(1000);//延時(shí)1000毫秒}(4)程按照 中的程序方法將本程序到實(shí)驗(yàn)板中(5)第七章蜂鳴器實(shí)蜂鳴器是一種結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、、復(fù)印機(jī)、器、電子玩具、設(shè)備、機(jī)、定時(shí)器等電子產(chǎn)品中作器件。2.1(外部驅(qū)動(dòng)積小(llmm)、重量輕、價(jià)格低、結(jié)構(gòu)牢靠,而廣泛地應(yīng)用在各種需要觀如圖a、b所示。a)有源b)無源。有源蜂鳴器a,高度為9mm,而無源蜂鳴器b的高度為8mm。如將兩種蜂鳴Rxl檔測(cè)試:用黑表筆接蜂鳴器"+"引腳,紅表筆在另一引腳上來回碰覺,如果覺發(fā)出咔、咔聲的且電阻只有8Ω(或16Ω)的是無源蜂鳴器;如果能發(fā)出持續(xù)聲音的,且電阻在幾百歐以上的,是有源蜂鳴器。有源蜂鳴器直接接上額定電源(新的蜂鳴器在上都有注明)就可連續(xù);而無源蜂鳴器則和電磁揚(yáng)聲器一樣,需要接在音頻輸出電路中才能。由晶體管或集成電路構(gòu)成。當(dāng)接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號(hào),阻抗匹配器推動(dòng)壓電蜂鳴片壓電經(jīng)極化和老化處理后,再不黃銅片或不銹鋼片粘在一起。電磁式蜂鳴器由振蕩的相互作用下,周期性地振動(dòng)。蜂鳴器原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場(chǎng)來驅(qū)動(dòng)振動(dòng)膜發(fā)數(shù)字口,蜂鳴器的負(fù)極連接到GND插口中。如下圖:1、實(shí)驗(yàn)器件按照Arduino將控制板、面包板連接好,線插好。然后按照蜂鳴器的接法將蜂鳴器連接到數(shù)字7口上,連線完畢。蜂鳴器發(fā)出聲音的時(shí)間間隔不同,頻率就不同,所以發(fā)出就不同。根模擬各種聲音。本程序首先讓蜂鳴器間隔1ms發(fā)出一種頻率,循環(huán)80次;接著讓蜂鳴器間隔2ms發(fā)出另一種頻率,循環(huán)100次。4、程序代碼void{pinMode(buzzer,OUTPUT);//設(shè)置數(shù)字IO腳模式,OUTPUT}void{{for(i=0;i<80;i++)//輸出一個(gè)頻率{delay(1);//延時(shí)1msdelay(1);//延時(shí)ms}for(i=0;i<100;i++)//輸出另一個(gè)頻率{delay(2);//延時(shí)2msdelay(2);//延時(shí)2ms}}}在loop()中用的whilewhile(表達(dá)式表達(dá)式是循環(huán)條件,語句是循環(huán)體。語義是:計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí),執(zhí)行循環(huán)體語句。其執(zhí)行過程可用下圖表:作用:實(shí)現(xiàn)“當(dāng)型”循環(huán)。當(dāng)“表達(dá)式”非0(真)時(shí),執(zhí)行“語句”?!罢Z句”是被循環(huán)執(zhí)行的程序,按照 中的程序方法將本程序到實(shí)驗(yàn)板中 第八章模擬值實(shí)66個(gè)接口可ogRead();語句就可以讀出模擬口的值,ArduinoUNO10位的ArduinoPCArduino的波特率應(yīng)與 intpotpin=0;//定義模擬接口0intledpin1313voidsetup(){pinMode(ledpin,OUTPUT);//設(shè)置數(shù)字13Serial.begin(9600);//設(shè)置波特率}void{delay(50);//延時(shí)0.05秒delay(50);//延時(shí)0.05秒val= Serial.println(val);//顯示出val的值}每一次值,arduino自帶的意只做參考):候就可以看到屏幕上的數(shù)值變化了。這種模擬值是我們很常用的功能。第九章光控聲音實(shí)6.1光敏電阻:1蜂鳴器:1使用模擬口模擬值。程序代碼在“光控聲音實(shí)驗(yàn)”文件夾中intphotocellPin= intledPin //ledPin=12ledintval //valvoidsetup()pinMode(ledPin,OUTPUT);//ledPin}voidloop()val }}}4、程按照 中的程序方法將本程序到實(shí)驗(yàn)板中本次實(shí)驗(yàn)設(shè)計(jì)的效果是,當(dāng)光照正常的時(shí)候 leddelay(1000);//1}{delay(500);//延時(shí)0.5秒鐘}}}會(huì)亮1秒鐘。第十章LM35溫度傳感器實(shí)LM35溫度傳感器。如下圖:每升高1℃,輸出電壓增加10mV。轉(zhuǎn)換公式如下:VOUT(電壓值輸出引腳,接板子上的模擬引腳),GND二、溫度實(shí)驗(yàn)溫度傳感器模塊:1從LM35溫度傳感器的工作原理可知,溫度每升高1℃,vout口輸出的電10MV。根據(jù)這一原理程序中實(shí)時(shí)讀出模擬0口的電壓值,由于模擬口讀出的電壓值使用0~10230V0、5V1023。void{Serial.begin(9600);//設(shè)置波特}void{intval;//定義變量val= dat=(125*val)>>8;//溫度計(jì)算公式Serial.print(dat);//輸出顯示dat的值delay(500);//延時(shí)0.5秒}將程序到實(shí)驗(yàn)板,打開監(jiān)視器,就可以看到當(dāng)前的環(huán)境溫度了。(實(shí)第十一章(多一個(gè)小數(shù)點(diǎn)顯示共陽枀數(shù)碼管內(nèi)部結(jié)碼管。共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共PWR接到電源輸入PWR上,當(dāng)某一字段3.4共陰枀數(shù)碼管引腳接到+5V,如果是共陰極的就接到GND。數(shù)碼管:1癿電阻:8按照Arduino將控制板、面包板連接好,線插好。按數(shù)碼管癿接法g93.4中的(a)圖,f段通過限流電阻與數(shù)字8引腳相連,共陽極與5V插口相連,同樣的接法a、b分7、6引腳,e、d10、11引腳,第二個(gè)共陽極可以不接,c、DP分別接5、4引腳,連線完畢。如下圖:3.5將每個(gè)數(shù)字寫成一個(gè)子程序。在主程序中每隔2s顯示一個(gè)數(shù)字,讓數(shù)碼管循//設(shè)置控制各段的數(shù)字IOinta=7;intintc=5;inte=10;intf=8;intg=9;int//void{unsignedchardigitalWrite(b,LOW);//點(diǎn)亮b段}//void{unsignedchar}//void{unsignedcharj;}//void{}//void{unsignedcharj;}//void{unsignedcharj;}//void{unsignedcharj;}//void{unsignedcharj;}void{inti;//定義發(fā)量pinMode(i,OUTPUT);//設(shè)置4~11}void{{digital_1();//數(shù)字1}5、程按照 中的程序方法將本程序到實(shí)驗(yàn)板中第十二4位數(shù)碼管實(shí)15.2I/O中,另一端不數(shù)碼管的字段引腳相連,剩下的接到+5VGND412個(gè)引腳,小數(shù)1,其他管腳順序?yàn)槟鏁r(shí)針旋轉(zhuǎn)。左上角為最大的12號(hào)管腳。位數(shù)碼管:1的電阻:8d1-d4陽極接,總共接4顆。這種接法好處是需求電阻比較少,但是會(huì)產(chǎn)生每8個(gè)引腳上接,這種接法亮度顯示均勻,但是用電阻較多。本次實(shí)驗(yàn)使用8顆,inta=1;intb=2;intc=3;intd=4;inte=5;intf=6;intg=7;intp=intd4=9;intd3=10;intd2=11;intd1=設(shè)置變量longn=0;intxintdel=55;//此處數(shù)值對(duì)時(shí)鐘進(jìn)行微調(diào)voidsetup(){pinMode(d1,OUTPUT);pinMode(d2,OUTPUT);pinMode(d3,OUTPUT);pinMode(a,OUTPUT);pinMode(b,OUTPUT);pinMode(c,OUTPUT);pinMode(d,OUTPUT);pinMode(e,OUTPUT);pinMode(f,OUTPUT);pinMode(g,OUTPUT);pinMode(p,OUTPUT);}void{if(digitalRead(13)=={n=}}voidpickDigit(intx)//pickDigit(x),dx{digitalWrite(d1,HIGH);digitalWrite(d2,HIGH);digitalWrite(d3,digitalWrite(d4,{casecasecase}}voidpickNumber(int //定義pickNumber(x),其作用是顯示數(shù)字{{case1:case2:case3:case4:case5:case6:case7:case8:case9:}}voiddispDec(intx)//{digitalWrite(p,}voidclearLEDs()//{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);digitalWrite(p,LOW);}voidzero()//0{digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,LOW);}voidone()//1{digitalWrite(a,LOW);digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);}voidtwo()//2{digitalWrite(c,LOW);digitalWrite(f,LOW);}voidthree()//3{digitalWrite(c,HIGH);digitalWrite(e,LOW);digitalWrite(f,LOW);}voidfour4{digitalWrite(a,LOW);digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,HIGH);digitalWrite(g,}voidfive()//5{digitalWrite(b,LOW);digitalWrite(c,HIGH);digitalWrite(e,LOW);digitalWrite(f,HIGH);digitalWrite(g,}voidsix()//6{digitalWrite(a,HIGH);digitalWrite(b,LOW);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,}voidseven(7{digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);}voideight()//8{digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,}voidnine()//9{digitalWrite(c,HIGH);digitalWrite(e,LOW);digitalWrite(f,HIGH);digitalWrite(g,}5、程按照 中的程序方法將本程序到實(shí)驗(yàn)板中第十三章74HC5958I/O8arduino74HC595I/O74HC595以后,我們可以用3I/O8LED小燈,豈不美哉!constintON=HIGH;constintOFF=LOWintlatchPin //595intclockPin //5595intdataPin //595//59516intledState=0;void{pinMode(latchPin,OUTPUT);pinMode(clockPin,OUTPUT);pinMode(dataPin,}voidloop()intdelayTime=100;{ }}void EDs(int{shiftOut(dataPin,clockPin,MSBFIRST,value);}void EDsLong(int{for(inti=0;i<8;i++){intbit=value&B value=value<<1;{}{}}}intbits[] intmasks[] voidchangeLED(intled,int{ledState=ledState&if(state==ON){ledState=ledState|bits[led];} }第十8x8LEDs下圖是矩陣LED8X8LEDLED//thepintocontrolconstintrow1=2;//thenumberoftherowpin9constintrow2=3;//thenumberoftherowpin14constintrow3=4;//thenumberoftherowpin8constintrow4=5;//thenumberoftherowpin12constintrow5=17;//thenumberoftherowpin1constintrow6=16;//thenumberoftherowpin7constintrow7=15;//thenumberoftherowpin2constintrow8=14;//thenumberoftherowpin//thepintocontrolconstintcol1=6;//thenumberofthecolpin13constintcol2=7;//thenumberofthecolpin3constintcol3=8;//thenumberofthecolpin4constintcol4=9;//thenumberofthecolpin10constintcol5=10;//thenumberofthecolpinconstintcol6=11;//thenumberofthecolpin11constintcol7=12;//thenumberofthecolpin15constintcol8=13;//thenumberofthecolpin16setup(){inti=0;{pinMode(i,}pinMode(row5,OUTPUT);pinMode(row6,OUTPUT);pinMode(row7,OUTPUT);pinMode(row8,OUTPUT);for(i=2;i<18;i++){digitalWrite(i,}digitalWrite(row5,LOW);digitalWrite(row6,LOW);digitalWrite(row7,}loop(){int//therow#1andcol#1oftheLEDsturnondigitalWrite(row1,HIGH);digitalWrite(row2,LOW);digitalWrite(row3,LOW);digitalWrite(row4,LOW);digitalWrite(row5,LOW);digitalWrite(row6,LOW);digitalWrite(row7,LOW);digitalWrite(col1,LOW);digitalWrite(col2,HIGH);digitalWrite(col3,HIGH);digitalWrite(col4,HIGH);digitalWrite(col5,HIGH);digitalWrite(col6,HIGH);digitalWrite(col7,digitalWrite(col8,//turnoffalldigitalWrite(i,}}第十五章紅外實(shí)紅外發(fā)出的信號(hào)是一連串的二進(jìn)制脈沖碼。為了使其在無線傳輸過程中后還原為發(fā)射出的原始編碼,經(jīng)由接收頭的信號(hào)輸出腳輸入到電器上的用的時(shí)候?qū)OUT接到模擬口,GND接到實(shí)驗(yàn)板上的GND,VCC接到實(shí)驗(yàn)板上紅外:1紅外接收頭:1蜂鳴器:1百戰(zhàn)不殆。本產(chǎn)品使用的的編碼方式為:NEC協(xié)議。下面就介紹一下NEC協(xié)議:1.125ms低位)0x590x16。一個(gè)消息是由長(zhǎng)度重復(fù)。如果你不感,你可以忽略這個(gè)可靠性取反,也可以擴(kuò)大地址和命令,以每16位!一個(gè)110ms的脈沖不上圖一樣,之后每110ms代碼是由一個(gè)9ms的高電平脈沖和一個(gè)2.25ms低電平和560μs 注意:脈沖波形進(jìn)入接收頭以后,因?yàn)榻邮疹^里要進(jìn)行、信址的取反)16位(88位命令位的取反)(9ms、2.25ms、560us脈沖組成)。利用定時(shí)器對(duì)接收到的波形的高電平段和低電平段進(jìn)量,根據(jù)測(cè)量到的時(shí)間來區(qū)分:邏輯“0”、邏輯“1”、但是命令碼必須,因?yàn)槊總€(gè)按鍵令碼都不同,4字端口8口,參照以下圖:#defineIR_IN8//紅外接收intPulse_Width=0;//脈寬intir_code=0x00;//用戶編碼值charadrL_code=0x00;//命令碼charadrH_code0x00;//命令碼反碼 timer1_init(void)//定時(shí)器初始化函{TCCR1A=TCCR1B0X05;//給定時(shí)器時(shí)鐘源TCCR1C=0X00;TCNT1=TIMSK1=0X00;//定時(shí)器溢出中} remote_deal(void)//執(zhí)行譯碼結(jié)果函 }{TCNT1=if(Pulse_Width>=7&&Pulse_Width<=10)//低電平{return0;return1;}return-}{inti;intir_code=0x00;//清零adrL_code=0x00;//清零;//for(i=0;i<16;{if(logic_value()==1)//是1}//解析編碼中令for(i=0;i<8;{if(logic_value()==1)//是1}//解析編碼中令碼反for(j=0;j<8;{if(logic_value()==1)//是1}} remote_decode(void)//譯碼函{while(digitalRead(IR_IN))//是高就等{if(TCNT1>=1563)100ms下{ir_code=0x00ff;//用戶編碼值}}{{}else{{}}}}void{}void{{remote_decode();//譯碼 }}第十六章超聲波測(cè)距科學(xué)家們將每秒鐘振動(dòng)的次數(shù)稱為聲音的頻率,它的單位是(Hz)。我們?nèi)?0Hz~20000Hz20Hz或稱為“超聲波”。由于超聲波指向性強(qiáng),能量消耗緩慢,在介質(zhì)中的距離較超聲波測(cè)距原理超聲波向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開始計(jì)時(shí),超聲波在空氣中,途中碰到物就立即返回來,超聲波收到反射波就立即停止計(jì)時(shí)。超聲波在空氣中的速度為340m/s,根據(jù)計(jì)時(shí)器記錄的時(shí)間t,就可以計(jì)算出發(fā)射點(diǎn)距物的距離(s),即:s=340t/2。這就是所謂的時(shí)間差超聲波測(cè)距的原理是利用超聲波在空氣中的速度為已知,測(cè)量聲波在發(fā)射后遇到物反射回來的時(shí)間,根據(jù)發(fā)射和接收的時(shí)間差計(jì)算出發(fā)射點(diǎn)到物的實(shí)際距離。由此可見,超聲波測(cè)距原理與原理是一樣的。式中L為測(cè)量的距離長(zhǎng)度;C為超聲波在空氣中的速度;T為測(cè)量距離的時(shí)間差(T為發(fā)射到接收時(shí)間數(shù)值的一半)。SR04超聲波模塊來進(jìn)行距離測(cè)量。會(huì)用到上constintTrigPin=8;constintEchoPin9;floatcm;void{pinMode(EchoPin,INPUT);}void{digitalWrite(TrigPin,LOW);cmpulseIn(EchoPin,HIGH)58.0;cm}第十七章舵機(jī)控制實(shí)舵機(jī)是一種位置伺服的驅(qū)動(dòng)器,主要是由外殼、電路板、無馬達(dá)、齒輪與動(dòng)方向,再驅(qū)動(dòng)無馬達(dá)開始轉(zhuǎn)動(dòng),透過齒輪將動(dòng)力傳至擺臂,同時(shí)由并可以保持的控制系統(tǒng)。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),通過級(jí)聯(lián)齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為0,電機(jī)停止轉(zhuǎn)動(dòng)。一般舵機(jī)旋轉(zhuǎn)的角度范圍是0180舵機(jī)的轉(zhuǎn)動(dòng)的角度是通過調(diào)節(jié)(脈沖寬度調(diào)制)信號(hào)的占空比來實(shí)現(xiàn)的,標(biāo)準(zhǔn)(脈沖寬度調(diào)制)信號(hào)的周期固定為20ms(50Hz),理論上脈寬分1ms2ms0.5ms2.5ms之間,脈寬和舵機(jī)的轉(zhuǎn)角0°~180°相對(duì)應(yīng)。有一點(diǎn)值得注意的地方,由于舵機(jī)牌子不同,SG90舵機(jī)面包板跳線*1ArduinoArduino的普通數(shù)字傳感器接ArduinoServo函數(shù)進(jìn)行舵機(jī)的控制,這種控制方法的優(yōu)點(diǎn)在于程#includeServomyservo;intpos= void{myservo.attach(9);}void{for(pos=0;pos<180;pos+={}for(pos=180;pos>=1;pos-{}}Arduino0180第十八章步進(jìn)電機(jī)控制實(shí) 直徑28mm步進(jìn)角度:5.625x該步進(jìn)電機(jī)空載耗電在50mA以下,帶64倍器,輸出力矩比較大,可arduinoIDEStepper.h#include//#defineSTEPSattachedtoStepperstepper(STEPS,8,9,10,//定義變量用來歷史讀intprevious=void{}void{intval=stepper.step(val-previous=}第十九章火焰實(shí)火焰的亮轉(zhuǎn)化為高變化的電信號(hào),輸?shù)教幤?,理器根?jù)信號(hào)電阻的另一端連接GND。在三極管與電阻之間接一根導(dǎo)線接到模擬端口A0上,當(dāng)有火焰靠近時(shí),模擬口讀出的電壓就是變化的,所以在實(shí)驗(yàn)開始時(shí)可以先一鳴器。intflame=A0;//0接口intBeep=8;//8接口intval=0;//定義數(shù)字變量void{voidloop(){ if(val>=600)//當(dāng)模擬值大于600時(shí)蜂鳴器鳴響{}{}}A0A1上去,導(dǎo)致線路圖與程序不想符,寫入程序出現(xiàn)錯(cuò)誤;另第二十章液晶文字顯易于實(shí)現(xiàn)全彩色顯示的特點(diǎn),目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字機(jī)、PDA移動(dòng)通信工具等眾多領(lǐng)域。1602液晶、1KΩ電阻1個(gè)、面包跳線若干、面包板、Arduino3.3V接法,串聯(lián)1KΩ電阻后接GND。程序代碼:intDI=12;intRWintDB{345678910};//使用數(shù)組來定義總線需要的管腳intEnable=2; mandWrite(intvalue)inti=for(i=DB[0iDI;i+{digitalWrite(i,value&01);//1602D7-D0(D0-D7),value>>=}delayMicroseconds(11msdelayMicroseconds(11ms}voidLcdDataWrite(intvalue)inti=0;digitalWrite(DI,HIGH);digitalWrite(RW,for(i=DB[0];i<=DB[7];i++)digitalWrite(i,value&value>>=}delayMicroseconds(11ms}voidsetup{inti=for(i=Enable;i<=DI;{}mandWrite(0x38);8-bit接口,2行顯示,5x7mandWrite(0x38);8-bit接口,2行顯示,5x7mandWrite(0x38);8-bit接口,2行顯示,5x7mandWrite(0x06);//mandWrite(0x0E);//mandWrite(0x01);//mandWrite(0x80);//}voidloop(void)mandWrite(0x01);////寫入歡迎信息LcdDataWrite('');mandWrite(0xc0+1);//mandWrite(0x01);//LcdDataWrite('');LcdDataWrite('');mandWrite(0xc0+1);//LcdDataWrite('');mandWrite(0x01);//mandWrite(0xc0+1);//LcdDataWrite('');LcdDataWrite('');mandWrite(0x01);//LcdDataWrite('');LcdDataWrite('');mandWrite(0xc0+1);//LcdDataWrite('');}第二十一章亮度實(shí)由于計(jì)算機(jī)不能輸出模擬電壓,只能輸出0或5V的的數(shù)字電壓值,我們就通號(hào)的電平進(jìn)行編碼。信號(hào)仍然是數(shù)字的,因?yàn)樵诮o定的任何時(shí)刻,滿幅值的直流供電要么是5V(ON),要么是0V(OFF)。電壓或電流源是以一種通(ON)值都可以使用進(jìn)行編碼。輸出的電壓值是通過通和斷的時(shí)間進(jìn)行計(jì)算的。被用在許多地方,調(diào)光燈具、電機(jī)調(diào)速、聲音的制作等等。下面介紹一下的三個(gè)基本參數(shù):1、脈沖寬度變化幅度(最小值/最大值2、脈沖周期(1秒內(nèi)脈沖頻率個(gè)數(shù)的倒數(shù)3、電壓高度(例如:0V-Arduino控制器有6個(gè)接口分別是數(shù)字接口、、、、 電位計(jì)模塊面包板面包板跳線*1樣通過產(chǎn)生不同的信號(hào)就可以讓小燈有亮度不同的變化。在編寫程序的過程中,我們會(huì)用到模擬寫入ogWrite( 驗(yàn)中電位計(jì)的模擬值信號(hào)并將其賦給接口使小燈產(chǎn)生相應(yīng)的亮度變化,再在屏幕上顯示出的模擬值,大家可以理解為此程序是在模擬值的實(shí)驗(yàn)程序中多加了將模擬值賦給接口這一部分,下面給大家提供一段 輸出intval=0;//void{pinMode(ledpin,OUTPUT);//定義數(shù)字接口11Serial.begin(9600);//設(shè)置波特率為}void{ Serial.println(val);//顯示val變量delay(10);//延時(shí)0.01秒}可以清楚的看到我們面包板上的LED小燈的亮度也在隨之變化。第二十實(shí)一、中斷的基本原電視,突然家里座機(jī)響了,你起身去接,接完后繼續(xù)回來看電視。這二、什么是中斷排的事件,引起CPU中斷正在運(yùn)行的程序,而轉(zhuǎn)到為內(nèi)部/外部事件或?yàn)轭A(yù)先根據(jù)中斷源的位置,有兩種類型的中斷。有的中斷源在CPU的內(nèi)部,稱為內(nèi)或者CPU響應(yīng)中斷的不同條件,也可以把中斷劃分為可中斷和不可中三、使用中斷的好1、實(shí)行分時(shí)操作。提高CPU的效率只有當(dāng)服務(wù)對(duì)象向CPU發(fā)出中斷申請(qǐng)時(shí)才去為它服務(wù)這樣我們就可以利用中斷功能同時(shí)為多個(gè)對(duì)象服務(wù)從而大大提高了CPU的工作效率。2、實(shí)現(xiàn)實(shí)時(shí)處理。利用中斷技術(shù)各個(gè)服務(wù)對(duì)象可以根據(jù)需要隨時(shí)向CPU發(fā)出中斷申請(qǐng)及時(shí)發(fā)現(xiàn)和處理中斷請(qǐng)求。在我們的實(shí)驗(yàn)中,有兩個(gè)可以使用的外部中斷,0(數(shù)字引腳2)和1(數(shù)字四、標(biāo)準(zhǔn)的數(shù)字輸入與輸出--沒有Arduino。代碼用來你輸入的值,然后作為條件進(jìn)行比較,intpbIn intledOut intstate void{//pinMode(pbIn,INPUT);}void{state= digitalWrite(ledOut, //把的狀態(tài)賦予LED指示for(inti=0;i<100;i++){//10}} 五、使下面的代碼進(jìn)入控制板中,當(dāng)按下按鈕時(shí),LED的狀態(tài)就會(huì)立刻改變,盡intpbIn intledOut volatileintstate void{}void{for(inti=0;i<100;{}}void{state=!state;} 六、中斷命令語法介interruptmode:定義何時(shí)發(fā)生中斷以下四個(gè)contstants 執(zhí)行的程序。大多數(shù)的Arduino板有兩個(gè)外部中斷:0(數(shù)字引腳2)和1(數(shù)字引腳3)。七、注當(dāng)中斷函數(shù)發(fā)生時(shí),delya()millis()的數(shù)值將不會(huì)繼續(xù)變化。當(dāng)中斷發(fā)生時(shí),串口收到的數(shù)據(jù)可能會(huì)丟失。你應(yīng)該一個(gè)變量來在未發(fā)生中斷時(shí)變量。八、重新分配中九、啟用\停止執(zhí)行noInterrupts()命令。當(dāng)這段代碼執(zhí)行完以后,你可以使用interrupts()命十、刪 detachInterrupt(interrupt_number)命令進(jìn)行刪除第二十實(shí)用Arduino做0-5V量程的電壓表.本實(shí)驗(yàn)電路設(shè)計(jì)沒有設(shè)計(jì)相對(duì)復(fù)雜的保護(hù)電一、電Arduino控制 一面包 一面包 六1KΩ電 一USB連接 一二、電路連接三、程序源代float //創(chuàng)建一個(gè)浮點(diǎn)型變量temp作為空間準(zhǔn)備存放數(shù)void{ //使用9600}void{intV1 為0-5V返回的值為0-1024floatvol=V1*(5.0/if(vol==temp){temp=vol; 的變量temp}{ //串口輸出電壓值,并且不Serial.println("V"); temp=vol; }}四、打開串口監(jiān)視I/O口的意思即INPUT接口和OUTPUT接口,到目前為止我們?cè)O(shè)計(jì)的小燈實(shí)驗(yàn)都還只是應(yīng)用到Arduino的I/O口的輸出功能,這出結(jié)合使用的實(shí)驗(yàn),讓大家能簡(jiǎn)單了解I/O的作用。按鍵開關(guān)大家按鍵開關(guān)面包板面包板跳線*1按鍵接到數(shù)字7接口,紅色小燈接到數(shù)字11接(Arduino控制0-13I/O接口都可以用來接按鍵和小燈,但能外也是串口通口,程序時(shí)屬于與PC機(jī)通信故應(yīng)保持01接口懸空,所以為避免插拔線的麻煩盡量不01接口),實(shí)驗(yàn)的程序中多加了一條條件判斷語句,這里我們使用if語句,Arduino的程序便寫語句是基于C語言的,所以C的條件判斷語句自然也適用于Arduino,像while、swich等等。這里根據(jù)個(gè)人喜好我們習(xí)慣于使用簡(jiǎn)單易于理解的if語句給大家做演示例程。我們分析電路可知當(dāng)按鍵按下時(shí),數(shù)字7接口可讀出為高這時(shí)我們使數(shù)字11口輸出高電平可使小燈亮起,程序中我們判斷參考源程序intinpin=7;//定義數(shù)字7接口intval;//定義變量valvoid{}void{val=digitalRead(inpin);//數(shù)字7口電平值賦給val{}{}}難在各種設(shè)備上發(fā)現(xiàn),例如大家的當(dāng)按下任一按鍵時(shí)背光燈就中應(yīng)用實(shí)例搶答器。第二十驗(yàn)了,本實(shí)驗(yàn)就是將上面的按鍵控制小燈的實(shí)驗(yàn)擴(kuò)展成3個(gè)按鍵3個(gè)小燈,占6個(gè)數(shù)字I/O接口。原理這里就不多說了同上面下面附上參考原理圖和實(shí)物連參考源程序如下intredled=10;intgreenled=8;intredpin=7;intgreenpin=5;intred;intyellow;intgreen;{}void{{}{}{}{}{}{}}分析。完程序,我們自己制作的簡(jiǎn)易搶答器就完成了。第二十六章馨水a(chǎn)rduino控制 1面包 1面包板 1紅黃藍(lán) 各1 3lm35溫度傳感 1USB數(shù)據(jù) 12、電路原3、電路接4、程序如void{pinMode(13,OUTPUT);pinMode(12,OUTPUT);pinMode(11,OUTPUT);}voidloop()intvol=ogRead(A0)*(5.0/ //LM35溫度if //低溫區(qū)的溫度值設(shè)置、以及l(fā)ed{digitalWrite(13,HIGH);digitalWrite(12,LOW);digitalWrite(11,LOW);}elseif(vol>=32&&{digitalWrite(13,LOW);digitalWrite(12,HIGH);digitalWrite(11,LOW);}elseif //高溫區(qū)溫度設(shè){digitalWrite(12,LOW);}}第二十開關(guān)1、了解傾路的目的。目前滾珠開關(guān)在市場(chǎng)上使用的常用型號(hào)有SW-200D、SW-460、SW-300DA等,本節(jié)使用的是SW-200D型號(hào)的。這類開關(guān)不象傳統(tǒng)的水銀開關(guān),它2、工作原尋針。金色一端為<ON>導(dǎo)通觸發(fā)端銀色一端為<OFF>開路端當(dāng)受到外力搖性會(huì)產(chǎn)生短時(shí)間導(dǎo)通或持續(xù)導(dǎo)通<ON>狀態(tài)。而當(dāng)電氣特性要恢復(fù)開路狀態(tài)<OFF>時(shí)開關(guān)設(shè)置環(huán)境必須為靜止,且銀色一端設(shè)置角度需低于水平 3、傾斜開4、傾斜開led燈的亮傾斜開關(guān)模塊:1當(dāng)金色一端低于水平位置傾斜,開關(guān)尋通,模擬口電壓值為5V左右(數(shù)開關(guān)連接到模擬5引腳。void{pinMode(8,OUTPUT);//設(shè)置數(shù)字8}void{{i=ogRead(5);//模擬5口電壓if(i>200)//如果大于{digitalWrite(8,HIGH);//點(diǎn)亮led}else//{digitalWrite(8,LOW);//熄滅led}}}按照 中的程序方法將本程序到實(shí)驗(yàn)板中(6)將程序到實(shí)驗(yàn)板后大家可以將板子傾斜觀察 led燈;當(dāng)銀色一端低于水平位置傾斜,開關(guān)截止,模擬口電壓值為0V左右(數(shù)字二進(jìn)制表示為0),led燈。第二十八章燈實(shí)1、什么是紅外接收頭2、工作原IC內(nèi)部放大器進(jìn)行放大,然后通過自動(dòng)增益控制、帶通濾波、解調(diào)變、波形整形3、紅外接收頭的引腳與連二、紅外實(shí)1、實(shí)驗(yàn)器紅外:1紅外接收頭:1LED燈:6220Ω電阻:6多彩面包線:若2、實(shí)驗(yàn)連VOUT11口引腳,將LED燈通過電阻接到數(shù)字引腳2,3,4,5,6,7。返樣就完成了電路3、實(shí)驗(yàn)原的碼方式為:NEC協(xié)議。下面就介紹一下NEC協(xié)議:上面顯示了NEC的協(xié)議典型的脈沖序列。注意:這首先發(fā)送LSB(最低位)的協(xié)議。在上面癿脈沖傳輸?shù)牡刂窞?x59命令為0x16。一個(gè)消息是由一個(gè)9ms的高電平開始,隨后有一個(gè)4.5ms的低電平,(返兩段電平組成引尋碼)然果你不感,你可以忽略這個(gè)可靠性取反,也可以擴(kuò)大地址和命令,以每16位!一個(gè)命令發(fā)送一次,即使在上的按鍵仍然按下。當(dāng)按鍵一直按下時(shí),第是由一個(gè)9ms的高電平脈沖和一個(gè)2.25ms低電平和560μs癿高電平組成。鍵值0x00FFA25D;0x00FFE01F=0x00FF629D;0x00FFA857;0x00FFE21D0x00FF906F;0x00FF22DD0x00FF6897;0x00FF02FD;=0x00FF9867;=0x00FFC23D;四排三=0x00FFB047;程序代intRECV_PIN=11;intLED1=2;intLED2=3;intLED3=4;intLED4=5;intLED5=6;intLED6=longon1=0x00FFA25D;longoff1=0x00FFE01F;longon2=0x00FF629D;longoff2=0x00FFA857;longon3=0x00FFE21D;longoff3=0x00FF906F;longon4=0x00FF22DD;longoff4=0x00FF6897;longon5=longoff5=0x00FF9867;longon6=0x00FFC23D;longoff6=0x00FFB047;IRrecvirrecv(RECV_PIN);decode_resultsresults;//Dumpsoutthedecode_results//Callthisafter//void*toworkaroundcompiler//voiddump(void*v)//decode_results*results=(decode_results*)vvoiddump(decode_results*results){intcount=results-if(results->decode_type=={}{if(results->decode_type=={}elseif(results->decode_type=={}elseif(results->decode_type=={}elseif(results->decode_type=={}Serial.print("(");Serial.print(results->bits,DEC);Serial.println("bits)");}Serial.print("Raw(");Serial.print("):");for(inti=0;i<count;{if((i%2)==1)Serial.print(results- }{Serial.print(-(int)results- }}}void{pinMode(LED1,OUTPUT);pinMode(LED2,OUTPUT);pinMode(LED3,OUTPUT);pinMode(LED4,OUTPUT);pinMode(LED5,OUTPUT);pinMode(LED6,OUTPUT);irrecv.enableIRIn();//Startthe}inton=unsignedlonglast=void{if{//Ifit'sbeenatleast1/4secondsincethe//IRreceived,toggletherelayif(millis()-last>250){on=//digitalWrite(8,on?HIGH:LOW);digitalWrite(13,on?HIGH:LOW);}if(results.value==on1)if(results.value==off1)if(results.value==on2)if(results.value==off2if(results.value==on3)if(results.value==off3)if(results.value==on4)if(results.value==off4)if(results.value==on5)if(results.value==off5)if(results.value==on6)if(results.value==off6)last=irrecv.resume();//Receivethenext}}五、程序功 第二十DHT11溫濕概DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。它應(yīng)用的數(shù)字模塊技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長(zhǎng)期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC8、、DHT11傳感器都在極為精確的濕度校驗(yàn)室行校校準(zhǔn)以程形式在OTP內(nèi)存中,傳感器內(nèi)20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場(chǎng)合的最佳選則。DHT113針PH2.0供電電壓:3-供電電流:最大溫度范圍:0-50℃誤差1/e(636-測(cè)量分辨率分別為8bit(溫度)、8bit(濕度傳感器的時(shí)DATA于微處DHT11間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時(shí)間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格下:一次完整的數(shù)據(jù)傳輸為40bit,先出。數(shù)據(jù)格式8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)+8bit校驗(yàn)數(shù)據(jù)傳送正確時(shí)校驗(yàn)和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末位。用戶MCU發(fā)送一次開始信號(hào)后,DHT11從低功耗模式轉(zhuǎn)速模式,等待主機(jī)開始信號(hào)結(jié)束后,DHT11發(fā)送響應(yīng)信40bit的數(shù)據(jù),并觸發(fā)一次信號(hào),用戶可選擇部分?jǐn)?shù)據(jù).從模式機(jī)發(fā)送開始信號(hào),DHT11不會(huì)主動(dòng)進(jìn)行溫濕度.數(shù)據(jù)后轉(zhuǎn)換模塊的使DHT11塊接到Arduino感器擴(kuò)展板的#defineDHT11_PIN0ADC0模擬0byteread_dht11_dat(){bytei=byteresult=0;for(i=0;i<8;i++){while(!(PINC&_BV(DHT11_PIN)));//waitfor50usif(PINC&result|=(1<<(7-while((PINC&_BV(DHT11_PIN)));//wait'1'}return}void{DDRC|=_BV(DHT11_PIN);PORTC|=_BV(DHT11_PIN);}void{bytedht11_in;bytei;//start//1.pull-downi/opinfrom18msPORTC&=~_BV(DHT11_PIN);PORTC|=DDRC&=~_BV(DHT11_PIN);dht11_in=PINC&_BV(DHT11_PIN);Serial.println("dht11startcondition1notmet");}dht11_in=PINC&_BV(DHT11_PIN);Serial.println("dht11startcondition2notmet");}//nowreadyfordatareceptionfor(i=0;i<5;i++)dht11_dat[i]=read_dht11_dat();DDRCPORTC|=bytedht11_check_sum=//checkcheck_sum{Serial.println("DHT11checksum}Serial.print("Currenthumdity=Serial.print("%");Serial.print("temperature=");Serial.println("C");}編譯代碼后到Arduino中,打開串口助手即可看見實(shí)際測(cè)第三十章紅外對(duì)管接收實(shí)1、電路連PC838(2.5v-2、代碼并程#includeIRrecvirrecv(RECV_PIN);void{}voidloop()irrecv.resume();//接收下一個(gè)值}}3、記錄紅第三十感首先科普一下,當(dāng)一塊通有電流的金屬或半導(dǎo)體薄片垂直地放在磁場(chǎng)中時(shí),薄片的兩端就會(huì)產(chǎn)生電位差,這種現(xiàn)象就稱為霍爾效應(yīng)?;魻栭_關(guān)則是利用霍爾效應(yīng)的一種傳感器,它可以很方便的把磁信號(hào)轉(zhuǎn)換成電信號(hào),具有很高的可靠性和靈敏度。編程的話使用最簡(jiǎn)單的數(shù)字輸入函 digitalRead()進(jìn)行就可以了intledPin=13;intswitchPin=19;intvalue=0;voidsetup()pinMode(switchPin,}voidloop()value=digitalRead(switchPin);if(HIGH==value){digitalWrite(ledPin,}elsedigitalWrite(ledPin,}}使用的時(shí)候當(dāng)霍爾開關(guān)靠近磁鐵的時(shí)候,從AduioAduio的另一極使用噢。第三十電器實(shí)一、實(shí)驗(yàn)ArduinounoR3USB線一LED 二、實(shí)驗(yàn)?zāi)康娜?、?shí)驗(yàn)備:5V電源、萬用表。步驟:1K歐姆左右的兩個(gè)腳是線圈引腳。注意有些繼電器的線圈分正負(fù)極,反接雖然不至于損壞,但不動(dòng)作2、找出常、將我提供的調(diào)試程序到Arduino開發(fā)板中、看LED4、實(shí)驗(yàn)程voidsetup(){pinMode(jdqPin,OUTPUT);//設(shè)定數(shù)字接口13、12、 Serial.begin(9600);//設(shè)置串口波特率為}voidloop()digitalWrite(jdqPin,LOW);delay(1000);}第三十三章亮RGBLED實(shí)在這一課中,您將學(xué)習(xí)如何用Arduino控制共陽RGB(紅綠藍(lán))LED,您將使用Arduino中的 ogWrite的功能控制RGBLED。下圖是一個(gè)直徑一厘米的RGBLED。同的是RGBLEDLED,一個(gè)紅色,一個(gè)綠色的,一個(gè)LED共陽RGBLED共有4個(gè)引腳,常見的正極是第二管腳,也是最長(zhǎng)的那個(gè)引線。此管腳將被連接到+5V。其余的每個(gè)LED的需要串聯(lián)220Ω的電阻,以防止太大的電流流過燒毀。三個(gè)正管腳的LED(一個(gè)紅色,一個(gè)綠色以及一個(gè)藍(lán)色)連接到電阻然后連接到Arduino的 引腳,這里我們用到了D9、D10、D11號(hào)管腳。intredPin=11;intgreenPin=10;intbluePin=9;void{pinMode(redPin,OUTPUT);pinMode(bluePin,OUTPUT);}void{setColor(2550,0);//setColor(0,255,0);//setColor(0,0,255);//setColor(255255,0);//setColor(80,0,80);//setColor(0,255,255);//}voidsetColor(intred,intgreen,int{ogWrite(redPin,255-red);ogWrite(bluePin,255-blue);}如果你熟悉網(wǎng)頁編程,你可能會(huì),顏色通常表示為一個(gè)“十六來。讓我們嘗試這種淺綠顏色(#32B16C)。setColor(0x32,0xB1,0x6C)//了在setColor函數(shù)后面加上延時(shí)函數(shù),這樣就可以顯示你所需第三十四章數(shù)字實(shí)種器件的基本用法。這次使用數(shù)碼管與按鍵進(jìn)行組合,做一個(gè)簡(jiǎn)易數(shù)字。1-8之間循環(huán)跳動(dòng),當(dāng)按下按鍵時(shí),數(shù)碼inta=7;intb=6;intc=5;inte=10;intf=8;intg=9;int//void{unsignedchardigitalWrite(b,LOW);//點(diǎn)亮b段}//void{unsignedcharj;}//void{unsignedcharj;}//void{}//void{unsignedcharj;}//void{unsignedcharj;}//void{unsignedcharj;}//void{unsignedcharj;}void{inti;{pinMode(i,OUTPUT);//設(shè)置4~11}}void{{digital_1();//顯示數(shù)字 ogRead(0)>1000);//如果讀到模擬0口的值1000 }}第三十五章訊線水位器模void{ //讓模擬口A5作為數(shù)字口輸}void{intn= if(n>=1){digitalWrite(A5,HIGH); }}第三十六章電位控制的十六進(jìn)制顯將電位器采樣值map到0~255后以16進(jìn)制顯示,其中用數(shù)碼管顯示,低位用4個(gè)LED顯示(4位二進(jìn)制)。如果點(diǎn)亮數(shù)字“5”的話,則要讓table1中的第五行從右向左分別為a~h段輸出,讓b,e和h段不亮。04位的值);再將二進(jìn)制數(shù)“”進(jìn)行“與”運(yùn)算,#defineLED1#defineLED2#defineLED3#defineLED4#defineSEG_a2IO#defineSEG_b#defineSEG_c#defineSEG_d#defineSEG_e#defineSEG_f#definePotA0bytei;bytea;byteintPotBuffer=//0-9unsignedchartable1[16][8] //1,168{ {0,0,1,1,1,1,1,},{0,0,0,0,0,1,1,},{0,1,0,1,1,0,1,},{0,1,0,0,1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2018春冀少版八年級(jí)生物下冊(cè)第六單元第4章教學(xué)設(shè)計(jì):6.4現(xiàn)代生物技術(shù)
- Module 5 Unit 2教學(xué)設(shè)計(jì)2024-2025學(xué)年外研版英語九年級(jí)上冊(cè)
- 16夏天里的成長(zhǎng)(第二課時(shí))教學(xué)設(shè)計(jì)-2024-2025學(xué)年語文六年級(jí)上冊(cè)統(tǒng)編版
- 2024秋八年級(jí)英語下冊(cè) Module 7 Summer in Los Angeles Unit 3 Language in use教學(xué)設(shè)計(jì)含教學(xué)反思(新版)外研版
- 生產(chǎn)設(shè)備安全操作培訓(xùn)
- 2024-2025學(xué)年高中政治上學(xué)期第1周《體味文化》教學(xué)設(shè)計(jì)
- Unit6 第3課時(shí) (教學(xué)設(shè)計(jì))Wrap-up time三年級(jí)英語上冊(cè)同步高效課堂系列(譯林版三起·2024秋)
- 2023八年級(jí)物理上冊(cè) 第一章 打開物理世界的大門第一節(jié) 走進(jìn)神奇教學(xué)設(shè)計(jì) (新版)滬科版
- 4.1線段、射線、直線 教學(xué)設(shè)計(jì) 2024-2025學(xué)年北師大版(2024)數(shù)學(xué)七年級(jí)上冊(cè)
- 血液透析護(hù)士長(zhǎng)述職報(bào)告
- 醫(yī)院臨時(shí)用藥申請(qǐng)表
- 護(hù)理人員儀容儀表及行為規(guī)范
- 農(nóng)民合作社財(cái)務(wù)報(bào)表(專業(yè)應(yīng)用)
- T∕CIS 71001-2021 化工安全儀表系統(tǒng)安全要求規(guī)格書編制導(dǎo)則
- 第4章-3D構(gòu)型圖-Chem3D
- 第六章廣播電視的傳播符號(hào)
- 預(yù)制梁質(zhì)量控制要點(diǎn)及注意事項(xiàng)手冊(cè)
- 家庭《弟子規(guī)》力行表
- 水利部《水利工程維修養(yǎng)護(hù)定額標(biāo)準(zhǔn)》(試點(diǎn))
- 校園避震有辦法PPT課件
- 農(nóng)產(chǎn)品質(zhì)量檢測(cè)實(shí)驗(yàn)室100條評(píng)審準(zhǔn)備要點(diǎn)
評(píng)論
0/150
提交評(píng)論