智能垃圾分類機(jī)器人_第1頁
智能垃圾分類機(jī)器人_第2頁
智能垃圾分類機(jī)器人_第3頁
智能垃圾分類機(jī)器人_第4頁
智能垃圾分類機(jī)器人_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.,智能垃圾分類機(jī)器人, arduino基礎(chǔ),.,2,01,A,什么是Arduino?,02,B,Arduino能做什么?,03,C,Arduino怎么用?,.,一、Arduino的由來,Arduino創(chuàng)始人Massimo Banzi之前是意大利Ivrea一家高科技設(shè)計(jì)學(xué)校的老師。他的學(xué)生們經(jīng)常抱怨找不到便宜好用的微控制器。 2005年冬天, Massimo Banzi跟David Cuartielles討論了這個(gè)問題。 David Cuartielles是一個(gè)西班牙籍晶片工程師,當(dāng)時(shí)在這所學(xué)校做訪問學(xué)者。 兩人決定設(shè)計(jì)自己的電路板,并引入了Banzi的學(xué)生David Mellis為電路板設(shè)計(jì)

2、編程語言。 兩天以后,David Mellis就寫出了程式碼。又過了三天,電路板就完工了。這塊電路板被命名為Arduino。,.,二、什么是Arduino?,Arduino 是一種開源的電子開發(fā)平臺(tái),該平臺(tái)最初主要基于 AVR 單片機(jī)的微控制器和相應(yīng)的開發(fā)軟件,目前在國內(nèi)正受到電子發(fā)燒友的廣泛關(guān)注。 自從 2005 年 Arduino 騰空出世以來,其硬件和開發(fā)環(huán)境一直進(jìn)行著更新迭代。 幾乎任何人, 即便不懂電腦編程, 利用這個(gè)開發(fā)板也能用 Arduino 做出炫酷有趣的東西,比如對(duì)感測(cè)器探測(cè)做出一些回應(yīng)、閃爍燈光、控制馬達(dá)等。,.,三、Arduino能做什么?,最簡單應(yīng)用: 通過Arduin

3、o開發(fā)板引腳輸出高電平點(diǎn)亮一盞LED燈。,.,三、Arduino能做什么?,利用Arduino板作為中央控制器實(shí)現(xiàn)家居智能化,語音口令開燈、開空調(diào),隨著室內(nèi)光線環(huán)境自動(dòng)調(diào)節(jié)亮度,手機(jī)APP控制家用電器等,.,讓你的arduino連入物聯(lián)網(wǎng),Arduino高端應(yīng)用,.,樂為聯(lián)網(wǎng)云數(shù)據(jù)平臺(tái),.,四、認(rèn)識(shí)Arduino開發(fā)板- Arduino UNO,.,四、認(rèn)識(shí)Arduino開發(fā)板- arduino Mega2560,.,五、Arduino開發(fā)環(huán)境,Arduino的編程是在Arduino IDE上進(jìn)行的,如左圖編程界面所示; 開發(fā)環(huán)境提供了最基本的模板,包含了setup()函數(shù)和loop()函數(shù);

4、 在setup()函數(shù)上方空白區(qū)域,可以插入需要用到的函數(shù).h頭文件以及申明要用到的函數(shù)。,.,六、函數(shù)的概念,定義:函數(shù)是一種能完成某種特定功能二端口通道,通過輸入合適的東西獲得想要的某種輸出; 舉例:例如數(shù)學(xué)上y=2x,這條函數(shù)可以完成將輸入值翻倍這樣一個(gè)工作;,注意: arduino提供了大量的基礎(chǔ)函數(shù),包括I/O控制、時(shí)間函數(shù)、中斷函數(shù)、串口通信函數(shù)等; arduino也提供了許多關(guān)于這些基礎(chǔ)函數(shù)的實(shí)例程序,這些例程可以在arduino開發(fā)環(huán)境的“File-Examples”菜單中找到。,.,七、Arduino的常用基本函數(shù),Arduino程序的主體包括:Setup( ) 函數(shù)和loo

5、p( )函數(shù); (1)setup( )函數(shù):在程序中只運(yùn)行一次,它的功能為完成程序的各類初始化工作; (2)loop( )函數(shù):程序的主函數(shù),程序運(yùn)行過程中l(wèi)oop()函數(shù)不斷循環(huán)。,.,Arduino常用函數(shù)- pinMode( ),功能:將指定的引腳配置成輸出或輸入 語法:pinMode(pin, mode) 參數(shù): pin:表示要設(shè)置模式的引腳 mode:包括INPUT 或 OUTPUT 返回值:無,例程: int ledPin = 13 ; / LED 連接到數(shù)字腳 13 void setup() pinMode(ledPin, OUTPUT ) ; /設(shè)置數(shù)字腳為輸出 void lo

6、op() digitalWrite (ledPin, HIGH ) ; /點(diǎn)亮 LED delay(1000); / 等待一秒 digitalWrite(ledPin, LOW); / 滅掉 LED 延遲(1000) ; /等待第二個(gè) ,.,Arduino常用函數(shù)-digitalWrite(),功能:給一個(gè)數(shù)字引腳寫入 HIGH 或者 LOW 。 語法:digitalWrite(pin, value) 參數(shù): pin: 引腳編號(hào) value: HIGH or LOW 返回值:無,例程: int ledPin = 13; / LED 連接到數(shù)字 13 號(hào)端口 void setup() pinMo

7、de(ledPin, OUTPUT); / 設(shè)置數(shù)字端口為輸入模式 void loop() digitalWrite(ledPin, HIGH); / 使 LED 亮 delay(1000); / 延遲一秒 digitalWrite(ledPin, LOW); / 使 LED 滅 delay(1000); / 延遲一秒 ,.,Arduino常用基本函數(shù)-digitalRead(),功能: 讀取指定引腳的值, HIGH 或 LOW 。 語法: digitalRead (PIN) 參數(shù): Pin:你想讀取的引腳號(hào) 返回值:HIGH 或 LOW,例程:int ledPin = ; / LED 連接到

8、 13 腳int inPin = 7; / 按鈕連接到數(shù)字引腳 7int val = 0; /定義變量以存儲(chǔ)讀值void setup()pinMode(ledPin, OUTPUT); / 將 13 腳設(shè)置為輸出pinMode(inPin, INPUT); / 將 7 腳設(shè)置為輸入void loop()val = digitalRead(inPin); / 讀取輸入腳digitalWrite(ledPin, val); /將 LED 值設(shè)置為按鈕的值,.,Arduino常用基本函數(shù)- analogRead(),功能:從指定的模擬引腳讀取模擬數(shù)據(jù)值。 語法:analogRead(PIN) 參數(shù):

9、 pin:從輸入引腳讀取數(shù)值 返回值: 從 0 到 1023 的整數(shù)值,例程:int analogPin = 3; /電位器(中間的引腳)連接到模擬輸入引腳 3/另外兩個(gè)引腳分別接地和 +5 Vint val = 0; /定義變量來存儲(chǔ)讀取的數(shù)值void setup()serial.begin(9600) ; /設(shè)置波特率( 9600)void loop()val = analogRead(analogPin) ; /從輸入引腳讀取數(shù)值serial.println (val) ; /顯示讀取的數(shù)值,.,Arduino常用基本函數(shù)- analogWrite(),功能:從一個(gè)引腳輸出模擬值( PW

10、M ) 語法:analogWrite (pin,value) 參數(shù): pin:用于輸入數(shù)值的引腳。 value:占空比: 0(完全關(guān)閉)到 255(完全打開)之間。 返回值:無,例程:通過讀取電位器的阻值控制 LED 的亮度int ledPin = 9; / LED 連接到數(shù)字引腳 9int analogPin = 3; /電位器連接到模擬引腳 3int val = 0; /定義變量存以儲(chǔ)讀值void setup()pinMode(ledPin,OUTPUT ) ; /設(shè)置引腳為輸出引腳void loop()val = analogRead(analogPin) ; /從輸入引腳讀取數(shù)值ana

11、logWrite(ledPin, val / 4) ; / 以 val / 4 的數(shù)值點(diǎn)亮 LED (因?yàn)?analogRead 讀取的數(shù)值從 0 到 1023,而 analogWrite 輸出的數(shù)值從 0 到 255),.,Arduino常用基本函數(shù)- delay(),功能:使程序延時(shí)特定的時(shí)間(毫秒) 語法:delay(ms) 參數(shù): ms:暫停的毫秒數(shù)( unsigned long) 返回值:無,例程: ledPin = 13 / / LED 連接到數(shù)字 13 腳 void setup() pinMode(ledPin, OUTPUT); / 設(shè)置引腳為輸出 void loop() di

12、gitalWrite(ledPin, HIGH); / 點(diǎn)亮 LED delay(1000); / 等待 1 秒 digitalWrite(ledPin, LOW); / 滅掉 LED delay(1000); / 等待一秒 ,.,中斷的定義: 由于某一隨機(jī)事件的發(fā)生,單片機(jī)暫停原程序的運(yùn)行,轉(zhuǎn)去執(zhí)行另一程序(隨機(jī)事件),處理完畢后又自動(dòng)返回原程序繼續(xù)運(yùn)行,其發(fā)生過程如右圖。 中斷的要素: 主程序:單片機(jī)正在運(yùn)行的程序。 中斷源:引起中斷的原因,或能發(fā)生中斷申請(qǐng)的來源。 中斷服務(wù)程序:處理中斷事件的程序。,Arduino常用基本函數(shù)- 中斷介紹,中斷發(fā)生的過程,.,Arduino常用基本函數(shù)-

13、中斷函數(shù),1、interrupts()函數(shù) 功能:負(fù)責(zé)打開總中斷 返回值:無 參數(shù):無,2、noInterrupts()函數(shù) 功能:負(fù)責(zé)關(guān)閉總中斷 返回值:無 參數(shù):無,3、attachInterrupt(interrput,function,mode) 功能:用于設(shè)置外部中斷 參數(shù):3個(gè),分別表示中斷源,中斷處理函數(shù)和觸發(fā)模式,它們的具體含義如下。 中斷源:可選中斷0或者1,對(duì)應(yīng)arduino的2或者3號(hào)數(shù)字引腳。 中斷處理函數(shù):是一段子程序,當(dāng)中斷發(fā)生時(shí)執(zhí)行該子程序部分,其中參數(shù)值為函數(shù)的指針。 觸發(fā)模式:有四種類型,LOW(低電平觸發(fā))、CHANGE(變化時(shí)觸發(fā))、RISING(低電平變

14、為高電平觸發(fā))、FALLING(高電平變?yōu)榈碗娖接|發(fā)),.,Arduino常用基本函數(shù)-中斷函數(shù),4、detachInterrupt(interrput)函數(shù) 功能:用于取消中斷 參數(shù): Interrupt:表示所要取消的中斷源,例程:用中斷源0(接引腳D2)作為觸發(fā)源控制arduino UNO板上的LED亮或滅 volatile int state = LOW; void setup() Serial.begin(9600); attachInterrupt(0, change, CHANGE);/當(dāng)D2電平改變時(shí),觸發(fā)中斷函數(shù) void loop() digitalWrite(13, st

15、ate); if(state=LOW) Serial.println(111); if(state=HIGH) Serial.println(222); void change()/中斷函數(shù) state = !state; ,.,Arduino常用基本函數(shù)-串口通信函數(shù),1、Serial.begin() 功能:用于設(shè)置串口的波特率 波特率是指每秒傳輸?shù)谋忍財(cái)?shù),除以8可得到每秒傳輸?shù)淖止?jié)數(shù)。 一般的波特率有9600、19200、 57600、115200等。,介紹:通過在頭文件HardwareSerial.h中定義一個(gè)HardwareSerial類的對(duì)象serial,然后直接使用該類的成員函數(shù)來

16、實(shí)現(xiàn)。,2、Serial.available() 功能:用來判斷串口是否收到數(shù)據(jù) 返回值:int型 3、Serial.read() 功能:用于讀入串口數(shù)據(jù) 返回值:int型的串口數(shù)據(jù)。,.,Arduino常用基本函數(shù)-串口通信函數(shù),4、Serial.print() 功能:用于從串口輸出數(shù)據(jù),數(shù)據(jù)可以是變量,也可以是字符串。 5、Serial.println() 功能:與Serial.print函數(shù)類似,都是從串口輸出數(shù)據(jù),只是Serial.println函數(shù)多了回車換行功能。,例程:讀取輸入的字符,并在監(jiān)視器中顯示出來的程序如下。 String val=; void setup() Seria

17、l.begin(9600); void loop() while (Serial.available() 0) val+=char(Serial.read(); delay(5); if (val.length() 0) Serial.println(val); val=; ,.,八、認(rèn)識(shí)函數(shù)庫,函數(shù)庫:由系統(tǒng)建立的具有一定功能的函數(shù)的集合。庫中存放函數(shù)的名稱和對(duì)應(yīng)的目標(biāo)代碼,以及連接過程中所需的重定位信息。用戶也可以根據(jù)自己的需要建立自己的用戶函數(shù)庫。 庫函數(shù):存放在函數(shù)庫中的函數(shù)。庫函數(shù)具有明確的功能、入口調(diào)用參數(shù)和返回值。 頭文件:有時(shí)也稱為包含文件。C語言庫函數(shù)與用戶程序之間進(jìn)行信息通

18、信時(shí)要使用的數(shù)據(jù)和變量,在使用某一庫函數(shù)時(shí),都要在程序中嵌入(用#include)該函數(shù)對(duì)應(yīng)的頭文件。,.,九、機(jī)器人包含的庫函數(shù),庫函數(shù)組成:由.h文件(頭文件)和.cpp文件(源程序文件)組成。,.,十、怎樣使用庫函數(shù),放置位置:一般是放到lib文件里 調(diào)用方法:將它所在的文件名用 #include,libraries所在的路徑,庫函數(shù)拷貝到的路徑,.,#ifndef ColSensor_h #define ColSensor_h class ColSensor private: /定義引腳 int S0, S1, S2, S3, OUT; /定義延時(shí) unsigned long time

19、; public: /定義計(jì)數(shù)器 unsigned long g_count; /定義數(shù)組,用來存放讀取到的RGB值 int g_array3; /定義數(shù)組,用來存放比例系數(shù) float g_SF3; /構(gòu)造函數(shù) ColSensor(int a, int b, int c, int d, int e, unsigned long f);,/將引腳配置為輸出,同時(shí)設(shè)置輸出比例因子 void Mode(int a = 1, int b = 1); /*控制數(shù)字引腳,切換濾波器。紅,綠,藍(lán)分別對(duì) 應(yīng)S2與S3的00,11,01電平;10時(shí)過濾所有顏色*/ void Digital_out(int a

20、, int b); /計(jì)算比例系數(shù) void Test(); /計(jì)算RGB值 void Get(); ; #endif,垃圾分類小車ColSensor.h文件內(nèi)代碼,.,#include #include ColSensor.h ColSensor:ColSensor(int a, int b, int c, int d, int e, unsigned long f) S0 = a; S1 = b; S2 = c; S3 = d; OUT = e; time = f; g_count = 0; void ColSensor:Mode(int a, int b) pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); pinMode(OUT, INPUT)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論