ardinuo分享-04-的數(shù)學(xué)函數(shù)和時(shí)間函數(shù)

一疑故、時(shí)間函數(shù)

(一)delay()函數(shù)

? 1.delay()函數(shù)簡(jiǎn)介

描述:將程序暫停給定參數(shù)的時(shí)間量(以毫秒為單位)

函數(shù)原型:delay(ms)

參數(shù):ms - 暫停的毫秒數(shù)

返回值:無(wú)

? ? ? 2.什么是函數(shù)险绘?

? ? ? Delay()函數(shù)是常用的時(shí)間函數(shù)之一覆山,當(dāng)程序運(yùn)行到delay這一行時(shí)俐东,會(huì)暫停一段時(shí)間,暫停的時(shí)間據(jù)取決于括號(hào)中的數(shù)字了公给,例如基协,delay(100),則函數(shù)會(huì)暫停100ms之后繼續(xù)往下執(zhí)行剑按,delay(200)則會(huì)在200ms之后繼續(xù)執(zhí)行疾就,但這個(gè)總不是那么的準(zhǔn)確,與我們所用的CPU吕座,各種軟硬件的參數(shù)密切相關(guān)虐译,切記不要用它進(jìn)行太過(guò)精密的計(jì)算,他的選擇或是根據(jù)一遍遍測(cè)驗(yàn)得到的吴趴,有些經(jīng)驗(yàn)豐富的人憑經(jīng)驗(yàn)就可大體估計(jì)出他的數(shù)值漆诽。

? ? 3.延時(shí)函數(shù)的作用

? ? 或許有的人會(huì)問(wèn),為什么我們要使用延遲函數(shù)锣枝,而且就延遲了或許不到一秒鐘厢拭,這不是增加了指令的響應(yīng)時(shí)間么?猜想一下代碼的讀取速度和人的反應(yīng)速度撇叁,這個(gè)差別不是十幾二十倍的關(guān)系供鸠,舉個(gè)單片機(jī)的例子,我們都知道單片機(jī)的處理速度是很快的陨闹,有的時(shí)候?yàn)榱俗屛覀儽阌谟^察需要加入延時(shí)楞捂,例如一個(gè)指示燈的亮滅薄坏,如果不加入延時(shí)是看不出來(lái)的,再有就是鍵盤(pán)去抖動(dòng)寨闹,一般按鍵都有20ms左右的抖動(dòng)胶坠,為了更好的檢測(cè)防止干擾,也需要延時(shí)一段時(shí)間在進(jìn)行判斷繁堡,否則鍵盤(pán)的抖動(dòng)會(huì)影響我們的檢測(cè)結(jié)果沈善,總之延時(shí)的作用在不同的情況下也不同。

? ? ? 4.Delay()函數(shù)在arduino函數(shù)中的應(yīng)用

? ? ? 在之前的Blink程序中椭蹄,我們通過(guò)使用延時(shí)函數(shù)闻牡,使LED按一定頻率閃爍。Arduino提供了毫秒級(jí)和微秒級(jí)兩種延時(shí)函數(shù)绳矩。運(yùn)行延時(shí)函數(shù)時(shí)罩润,會(huì)等待指定的時(shí)間,再運(yùn)行此后的程序埋酬,我們可以通過(guò)參數(shù)設(shè)定延時(shí)時(shí)間哨啃。以下就是延時(shí)函數(shù)在arduino函數(shù)中的應(yīng)用,延時(shí)函數(shù)就是為了使觀測(cè)效果更明顯写妥。

圖 1 LED燈閃爍


圖 2 判斷按鈕的按下?tīng)顟B(tài)

圖 3 LED漸變色



(二)millis()函數(shù)

? 1拳球、millis()函數(shù)簡(jiǎn)介

描述:返回自Arduino板開(kāi)始運(yùn)行當(dāng)前程序以來(lái)的毫秒數(shù)。大約50天后珍特,此數(shù)字將溢出(回到零)

語(yǔ)法: time = millis()

參數(shù):無(wú)

返回值:程序啟動(dòng)后的毫秒數(shù)(unsigned long 類(lèi)型)

? 2.什么是millis()函數(shù)祝峻?

? ? millis在英語(yǔ)中解釋為微秒,millis()函數(shù)會(huì)返回一個(gè)值扎筒,這個(gè)值代表的是當(dāng)前cpu的時(shí)間莱找,單位為微秒,舉個(gè)例子long begintime=mills();? endtime=mills();然后用endtime的值減去begintime的值就能算出時(shí)間差嗜桌,這樣可以用來(lái)定時(shí)奥溺,也可以不用占用cpu時(shí)間,所以當(dāng)寫(xiě)的程序比較長(zhǎng)時(shí)骨宠,這個(gè)函數(shù)很有用浮定。而且我們身邊也有很多使用million函數(shù)的例子啊,我們都知道层亿,在電腦中我們可以使用左右鍵來(lái)實(shí)現(xiàn)不同的操作桦卒,然而在手機(jī)中我們并沒(méi)有左右鍵,手機(jī)沒(méi)辦法判斷我們是用左手進(jìn)行操作還是右手進(jìn)行操作匿又,這時(shí)候方灾,millis函數(shù)就發(fā)揮其作用了,他通過(guò)判斷人手按屏幕時(shí)間的長(zhǎng)短來(lái)執(zhí)行不同的操作碌更,按屏幕時(shí)間的長(zhǎng)短便是通過(guò)millis函數(shù)來(lái)計(jì)算的裕偿,還記得以前的按鍵手機(jī)洞慎,長(zhǎng)按“#”鍵解鎖,不知道你們能否想起這樣的例子來(lái)呢嘿棘。

? ? 3.millis()函數(shù)和delay()函數(shù)的區(qū)別

? ? 上文中我們主要介紹的是millis() 函數(shù)作為定時(shí)器的用處拢蛋,我們都知道delay()函數(shù)一個(gè)主要的作用就是延時(shí),然而這個(gè)功能也被millis()函數(shù)竊取到了蔫巩,millis()函數(shù)可以替代delay()函數(shù),實(shí)現(xiàn)其延時(shí)功能快压,而且milis()函數(shù)在用作延時(shí)函數(shù)時(shí)可以在每次延遲中加入自定義邏輯圆仔,在每次延遲的過(guò)程中完成多個(gè)操作。


圖 4 紅外設(shè)備的響應(yīng)


? 4.millis()函數(shù)在ardinuo中的應(yīng)用


二蔫劣、數(shù)學(xué)函數(shù)

? ? ? 數(shù)學(xué)函數(shù)的掌握比較的簡(jiǎn)單坪郭,他們?cè)诔绦蜷_(kāi)頭均需加上#include<math.h>,min()函數(shù)脉幢、max()函數(shù)歪沃、abs()函數(shù)、三角函數(shù)和我們數(shù)學(xué)上接觸的并無(wú)區(qū)別嫌松,我大致粗略的講解一下沪曙,主要給大家介紹的是map()函數(shù)和constrain()函數(shù)。


? ? (一)map()函數(shù)

? 1萎羔、map()函數(shù)簡(jiǎn)介:

描述:將數(shù)字從一個(gè)范圍重新映射到另一個(gè)范圍液走。

函數(shù)原型:map(value, fromLow, fromHigh, toLow, toHigh)

參數(shù):

value:要映射的數(shù)

fromLow:當(dāng)前值范圍的下限

fromHigh:當(dāng)前值范圍的下限

toLow:目標(biāo)值范圍的下限

toHigh:目標(biāo)值范圍的上限

返回值:映射后的值


? ? 2.map()函數(shù)的應(yīng)用

? ? Map在英文中解釋為地圖,那么map()函數(shù)就應(yīng)該具有地圖的一些性質(zhì)贾陷,即一對(duì)一缘眶,在map()函數(shù)中輸入一個(gè)值,那么就會(huì)輸出唯一的一個(gè)值髓废。Map函數(shù)有五個(gè)參數(shù)巷懈,其中第一個(gè)值是我們輸入的值,第二個(gè)參數(shù)和第三個(gè)參數(shù)是可輸入的第一個(gè)參數(shù)的范圍慌洪,第四五個(gè)參數(shù)則是我們將要映射的值的范圍顶燕,如果我們不想限制值得范圍,也可以不用填寫(xiě)值得范圍蒋譬,因?yàn)橛袝r(shí)候我們需要的值不在規(guī)定的區(qū)間內(nèi)割岛。map()函數(shù)使用整型數(shù)進(jìn)行運(yùn)算因此不會(huì)產(chǎn)生分?jǐn)?shù)。小數(shù)的余數(shù)部分會(huì)被舍去犯助,不會(huì)四舍五入或者平均癣漆。


? ? 3.map()函數(shù)在ardinuo中的應(yīng)用

? ? 如圖所示是一個(gè)Arduino 溫度傳感器NTC測(cè)溫的代碼片段,因?yàn)榍耙粋€(gè)代碼的AD值飄得厲害剂买,所以溫度值也就飄惠爽,這次的代碼嘗試調(diào)整線(xiàn)性函數(shù)和映射AD值癌蓖,從2^10位降到8位、7位測(cè)試其穩(wěn)定性婚肆。而這一功能的實(shí)現(xiàn)就是依賴(lài)于map()函數(shù)租副,圖中標(biāo)黃的部分就是我們的map()函數(shù)。當(dāng)出現(xiàn)的值的范圍太小或者太大以至于我們操作很難進(jìn)行下去的時(shí)候较性,map()函數(shù)就發(fā)揮其作用啦用僧。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖 5 arduino 溫度傳感器NTC測(cè)溫


? (二)constrain()函數(shù)

? ? 1、constrain()函數(shù)簡(jiǎn)介

描述:將數(shù)字約束在一個(gè)范圍內(nèi)赞咙。如果此數(shù)小于該區(qū)間的最小值則返回最小值责循,若在此區(qū)間內(nèi)則顯示該值,若大于該區(qū)間的最大值則顯示最大值攀操。

函數(shù)原型:constrain(x, a, b)

參數(shù):

? ? ? ? x:要約束的數(shù)字

? ? ? ? a:范圍的下限

? ? ? ? ? b:范圍的上限

返回值:

? ? ? ? ? ? 如果 x 在(a, b) 范圍內(nèi):返回 x

? ? ? ? ? ? 如果 x 小于 a:返回 a

? ? ? ? ? ? ? 如果 x 大于 b:返回 b


? ? 2.什么是constrain()函數(shù)

? ? Constrain是強(qiáng)制院仿、限制的意思,他就是為了把某些東西限制在一定范圍內(nèi)速和,他作為數(shù)學(xué)函數(shù)歹垫,那么自然也不例外了,我們可以輕而易舉的推理出它的作用就是把數(shù)限制在一定范圍內(nèi)颠放,舉個(gè)例子吧排惨,假如你是一位老師在批改學(xué)生的卷子,一個(gè)學(xué)生卷面整潔碰凶,解題正確詳細(xì)若贮,在你心里已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)100分了,但是呢痒留,滿(mǎn)分就是100分谴麦,所以你只能給予他最高分,相反一個(gè)同學(xué)不寫(xiě)卷子還亂涂亂花伸头,縱然你很氣憤匾效,但你的理智告訴你,你只能給他打最低分0分恤磷。Constrain()函數(shù)在程序中的作用就相當(dāng)我們的理智面哼,不能計(jì)算機(jī)給我們什么數(shù)我們就輸出什么數(shù),計(jì)算機(jī)也要有自己的判斷和思考扫步,而constrain()函數(shù)的作用就是計(jì)算機(jī)的判斷依據(jù)魔策。


? ? 3.constrain()函數(shù)的應(yīng)用

? ? 如圖所示是根據(jù)RGB值來(lái)改變LED燈的代碼,通過(guò)這種方式河胎,如果發(fā)來(lái)的值超過(guò)了PWM的允許值闯袒,也能夠正常執(zhí)行。 這些值還要用255減一下,以適配共陽(yáng)RGB LED政敢,作差后才是在0時(shí)LED關(guān)閉其徙,在255時(shí)LED打開(kāi)。在約束和數(shù)學(xué)運(yùn)算完成后喷户,RGB LED內(nèi)的三個(gè)小LED就能夠工作了唾那。

圖 6 改變LED燈亮度



? ? (三) min()函數(shù)、max()函數(shù)

? ? Min()函數(shù)和max()函數(shù)看起來(lái)很簡(jiǎn)單褪尝,但在輸入?yún)?shù)的時(shí)候要注意相比較的參數(shù)類(lèi)型需要是相同的闹获,min(a,b)的值等于a、b兩者之間的最小值河哑,max(a,b)則等于兩者之間的最大值昌罩,代碼實(shí)例如圖所示:


? ? (四)? abs()函數(shù)

? ? Abs(x)函數(shù)就是一個(gè)絕對(duì)值的求值運(yùn)算,其思想很簡(jiǎn)單灾馒,就是我們小學(xué)學(xué)的那種|5|=5,|-5|=5這種簡(jiǎn)單的運(yùn)算遣总,調(diào)用他的方式有兩種睬罗,一種是直接在函數(shù)中定義y=abs(x),當(dāng)我們?cè)诔绦蛑袑?duì)這個(gè)函數(shù)調(diào)用較少,而且計(jì)算很簡(jiǎn)單時(shí)旭斥,我們可以直接定義容达,這個(gè)方法簡(jiǎn)單易學(xué):而第二方法是在頭文件中定義,這個(gè)就比較困難而且有點(diǎn)難度垂券,我們必須要注意括號(hào)的運(yùn)用花盐,下圖中我就用兩個(gè)abs()函數(shù),來(lái)區(qū)分一下他們的區(qū)別菇爪。

? ? 對(duì)于abs1(x)來(lái)說(shuō)算芯,如果函數(shù)式子如圖所示。Test(abs1(-1)+2)凳宙,則先判斷x是否小于零熙揍,當(dāng)x小于零時(shí),直接就為-x了氏涩,當(dāng)x大于零時(shí)届囚,才會(huì)+2,原程序就相當(dāng)于abs1(x) (x<0)? -x:x+2是尖;對(duì)于abs2(x)來(lái)說(shuō)意系,函數(shù)相當(dāng)于((x<0)? -(x+2):x+2)。


? ? (五)? 三角函數(shù)

? ? 三角函數(shù)包括sin(rad)饺汹、cos(rad)蛔添、tan(rad),分別返回rad的正弦值、余弦值作郭、正切值陨囊。這個(gè)函數(shù)大家應(yīng)該都不陌生,想必學(xué)過(guò)三角函數(shù)的人都不陌生這個(gè)函數(shù)9的應(yīng)用吧夹攒,他的用法和數(shù)學(xué)函數(shù)的用法一樣蜘醋,只不過(guò)寫(xiě)到了計(jì)算機(jī)內(nèi)部,方便我們進(jìn)行快速準(zhǔn)確的運(yùn)算咏尝,下面就是一個(gè)三角函數(shù)的例子压语。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市编检,隨后出現(xiàn)的幾起案子胎食,更是在濱河造成了極大的恐慌,老刑警劉巖允懂,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厕怜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蕾总,警方通過(guò)查閱死者的電腦和手機(jī)粥航,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)生百,“玉大人递雀,你說(shuō)我怎么就攤上這事∈唇” “怎么了缀程?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)市俊。 經(jīng)常有香客問(wèn)我杨凑,道長(zhǎng),這世上最難降的妖魔是什么摆昧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任蠢甲,我火速辦了婚禮,結(jié)果婚禮上据忘,老公的妹妹穿的比我還像新娘鹦牛。我一直安慰自己,他們只是感情好勇吊,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布曼追。 她就那樣靜靜地躺著,像睡著了一般汉规。 火紅的嫁衣襯著肌膚如雪礼殊。 梳的紋絲不亂的頭發(fā)上驹吮,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音晶伦,去河邊找鬼碟狞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛婚陪,可吹牛的內(nèi)容都是我干的族沃。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼泌参,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼脆淹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起沽一,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤盖溺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后铣缠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體烘嘱,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蝗蛙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝇庭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡歼郭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辐棒,到底是詐尸還是另有隱情病曾,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布漾根,位于F島的核電站泰涂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辐怕。R本人自食惡果不足惜逼蒙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寄疏。 院中可真熱鬧是牢,春花似錦、人聲如沸陕截。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)农曲。三九已至社搅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背形葬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工合呐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笙以。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓淌实,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親源织。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翩伪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345