91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Arduino函數(shù)簡(jiǎn)化代碼

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Jeremy S. Cook ? 2022-08-16 09:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Arduino 板和 Arduino IDE 非常適合創(chuàng)建可以激活 LED、讀取傳感器、激活伺服或任何數(shù)量的獨(dú)特物理計(jì)算應(yīng)用程序的小代碼片段。此類(lèi)操作通常開(kāi)始時(shí)很簡(jiǎn)單——例如,讓計(jì)時(shí)器上的 LED 閃爍——但隨著程序的擴(kuò)展和程序員技能的提高,最終會(huì)變得相當(dāng)復(fù)雜。

組織擴(kuò)展代碼的一種出色技術(shù)是使用函數(shù),即可以根據(jù)需要從程序的其他部分(例如通過(guò)主循環(huán))調(diào)用的代碼片段。對(duì)于有經(jīng)驗(yàn)的程序員來(lái)說(shuō),這種技術(shù)可能已經(jīng)過(guò)時(shí)了,但對(duì)于那些從其他學(xué)科進(jìn)入 Arduino 的人來(lái)說(shuō),盡早接受函數(shù)范式通常會(huì)對(duì)你有好處。

聲明一個(gè)函數(shù)

在最基本的形式中,額外函數(shù)看起來(lái)幾乎與您在開(kāi)始新草圖時(shí)在第 1 行和第 6 行看到的設(shè)置和循環(huán)函數(shù)一樣(圖 1)。這些函數(shù)需要在另一個(gè)函數(shù)之外聲明,并且具有唯一的名稱(chēng)。事實(shí)上,主循環(huán)函數(shù)的簡(jiǎn)單復(fù)制/過(guò)去/修改可用于在您的代碼中創(chuàng)建一個(gè)新函數(shù)。

poYBAGL68dOAaEKlAACCXUp6_JI398.png

圖 1. 新功能 copypasta。

調(diào)用函數(shù),繼續(xù)

當(dāng)然,聲明一個(gè)從不被調(diào)用且不做任何事情的函數(shù)純粹是浪費(fèi)空間,所以讓我們讓它做一些有趣的事情(圖 2)。下面的示例基本上重新格式化了 Arduino Blink 草圖以將閃爍放入一個(gè)函數(shù)中,并添加一個(gè)串行輸出以讓您知道它“延遲閃爍打開(kāi)和關(guān)閉”。

pYYBAGL68dmAd3UJAACoptgTOVQ871.png

雖然這對(duì)簡(jiǎn)化代碼沒(méi)有任何作用,但如果您想在主循環(huán)中的多個(gè)點(diǎn)執(zhí)行相同類(lèi)型的閃爍/響應(yīng)操作,請(qǐng)考慮如何簡(jiǎn)化事情。無(wú)需編寫(xiě) 5 行代碼,您只需使用 blinkAndTalk(); 調(diào)用新函數(shù)。

不需要太多用處就能看出這種簡(jiǎn)化是如何疊加起來(lái)的,尤其是在函數(shù)更復(fù)雜的情況下。這種代碼分段還有助于在其他程序中重用代碼,因?yàn)槟梢愿鶕?jù)需要在那里復(fù)制/粘貼。在 Arduino IDE 中,將函數(shù)放在最后很好,但如果您使用不同的環(huán)境(例如 PlatformIO),順序可能很重要。

函數(shù)返回值

除了將代碼簡(jiǎn)化為易于重用的塊外,函數(shù)還可以返回一個(gè)值。Arduino.cc 提供了如何執(zhí)行此操作的示例,將 myMultiplyFunction 稱(chēng)為 k = myMultiplyFunction(i, j);。這里的括號(hào)不是空的,而是將變量傳遞給函數(shù)本身,并且 k 由返回結(jié)果設(shè)置;函數(shù)中的行(圖 3)。

pYYBAGL68d-AIcEnAACX8x_iNLg323.png

圖 3.來(lái)自 Arduino 示例的代碼。

另一種傳遞值的方法是在函數(shù)中設(shè)置一個(gè)全局變量,它可以在主循環(huán)或任何你需要結(jié)果的地方使用。出于多種原因,包括生成更復(fù)雜的代碼以及使這些函數(shù)更難重用,使用 return 是這里更好的選擇。如果您很好奇,下面顯示了如何做到這一點(diǎn)的示例:

pYYBAGL68eaAUfmLAACfahn3UiY284.png

圖 4. 可能,但通常不推薦。

一旦您準(zhǔn)備好將幾行代碼轉(zhuǎn)移到編程上更有趣的應(yīng)用程序中,請(qǐng)記住函數(shù)是您的朋友。他們?cè)谧畛踉O(shè)置時(shí)會(huì)花一些心思,但隨著事情變得更加復(fù)雜,他們可以支付巨額紅利。

我最近寫(xiě)了一段代碼,其中一小部分如下所示,接近 300 行。然而,主循環(huán)在括號(hào)內(nèi)只有 4 行,主要是為了調(diào)用一些單獨(dú)的函數(shù)。老實(shí)說(shuō),我應(yīng)該將其進(jìn)一步分解為功能塊,從而可能會(huì)減小程序的大小并為自己省去一些麻煩。規(guī)劃在這里有很長(zhǎng)的路要走。

pYYBAGL68eyAPaIrAABcsioxRVM434.png

圖 5. 對(duì)于主循環(huán)中的代碼行(注釋省略)

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2576

    文章

    55035

    瀏覽量

    791269
  • led
    led
    +關(guān)注

    關(guān)注

    243

    文章

    24595

    瀏覽量

    690828
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6526

    瀏覽量

    196914
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    內(nèi)聯(lián)函數(shù)介紹

    內(nèi)聯(lián)函數(shù)禁用所有的編譯選項(xiàng)。使用__inline修飾函數(shù)導(dǎo)致函數(shù)在調(diào)用處直接替換為函數(shù)體。這樣代碼調(diào)用
    發(fā)表于 12-12 07:08

    Arduino plc和termux esp

    Arduino plc和termux esp
    的頭像 發(fā)表于 12-06 06:41 ?1855次閱讀

    使用 LinkBoy 將程序?qū)С鰹?C 語(yǔ)言代碼并燒錄至 Arduino ESP32 開(kāi)發(fā)板

    以下是使用 LinkBoy 將程序?qū)С鰹?C 語(yǔ)言代碼并燒錄至 Arduino ESP32 開(kāi)發(fā)板的詳細(xì)步驟指南: 一、準(zhǔn)備工作 ? 硬件需求: 項(xiàng)目 要求 開(kāi)發(fā)板 Arduino ESP32(支持
    發(fā)表于 10-16 12:41

    如何用Arduino Nano/UNO R3開(kāi)發(fā)板給另一個(gè)Arduino IDE不能下載的Arduino Nano/UNO R3開(kāi)發(fā)板重新燒錄引導(dǎo)程序bootlaoder

    本文介紹了如何用能夠Arduino IDE下載的Arduino Nano/UNO R3開(kāi)發(fā)板給另一個(gè)Arduino IDE不能下載的Arduino Nano/UNO R3開(kāi)發(fā)板重新燒錄
    的頭像 發(fā)表于 08-08 20:16 ?3570次閱讀
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3開(kāi)發(fā)板給另一個(gè)<b class='flag-5'>Arduino</b> IDE不能下載的<b class='flag-5'>Arduino</b> Nano/UNO R3開(kāi)發(fā)板重新燒錄引導(dǎo)程序bootlaoder

    歐時(shí)RS創(chuàng)客沙龍Arduino主題開(kāi)放日成功舉辦

    Arduino技術(shù)專(zhuān)家詳解了AI助手如何深度集成開(kāi)發(fā)工作流:該工具可智能生成高質(zhì)量代碼框架,精準(zhǔn)理解開(kāi)發(fā)者設(shè)計(jì)意圖;具備實(shí)時(shí)錯(cuò)誤診斷與修復(fù)建議能力,大幅縮短調(diào)試周期;同時(shí)通過(guò)自動(dòng)化解析復(fù)雜代碼邏輯,顯著降低技術(shù)理解門(mén)檻。
    的頭像 發(fā)表于 08-06 17:40 ?1066次閱讀

    詳解hal_entry入口函數(shù)

    hal_entry函數(shù)開(kāi)始執(zhí)行。我們直接打開(kāi)“srchal_entry.c”文件,在hal_entry函數(shù)里面編寫(xiě)我們的代碼
    的頭像 發(fā)表于 07-25 15:34 ?1983次閱讀

    【Milk-V Duo S 開(kāi)發(fā)板免費(fèi)體驗(yàn)】Milk-V DuoS之使用Arduino開(kāi)發(fā)小核

    Milk-V DuoS之使用Arduino開(kāi)發(fā) Arduino 是一個(gè)很流行的開(kāi)源硬件平臺(tái),具有簡(jiǎn)潔性、易用性和開(kāi)放性等優(yōu)點(diǎn)。它提供了豐富的庫(kù)函數(shù)和示例代碼,使得即使對(duì)于沒(méi)有編程經(jīng)驗(yàn)的
    發(fā)表于 07-17 21:01

    深入理解C語(yǔ)言:函數(shù)—編程中的“積木塊”藝術(shù)

    在編程的世界里,函數(shù)就像建筑中的“積木塊”——它們是構(gòu)建復(fù)雜程序的基石。通過(guò)靈活組合這些模塊,開(kāi)發(fā)者能打造出功能強(qiáng)大且結(jié)構(gòu)清晰的代碼。函數(shù)之所以成為C語(yǔ)言的核心,正是因?yàn)樗鉀Q了編程中的三大關(guān)
    的頭像 發(fā)表于 06-30 17:26 ?1859次閱讀
    深入理解C語(yǔ)言:<b class='flag-5'>函數(shù)</b>—編程中的“積木塊”藝術(shù)

    突破LuatOS開(kāi)發(fā)瓶頸:三個(gè)二次開(kāi)發(fā)必備知識(shí)揭秘!

    。 ? 一、匿名函數(shù) 在Lua代碼里面,經(jīng)??吹?jīng)]有名字的函數(shù)。 這種函數(shù)定義之后,要么馬上運(yùn)行,要么作為另一個(gè)函數(shù)的返回值賦給其他變量,所
    的頭像 發(fā)表于 06-23 15:05 ?411次閱讀
    突破LuatOS開(kāi)發(fā)瓶頸:三個(gè)二次開(kāi)發(fā)必備知識(shí)揭秘!

    免費(fèi)分享Arduino入門(mén)+進(jìn)階(全套例程+書(shū)籍)

    Arduino是一款開(kāi)源電子原型平臺(tái),由硬件(單片機(jī)開(kāi)發(fā)板)和軟件(編程環(huán)境)組成,旨在讓非專(zhuān)業(yè)用戶也能輕松入門(mén)電子制作和編程。它的核心思想是簡(jiǎn)化硬件開(kāi)發(fā),通過(guò)直觀的編程和模塊化設(shè)計(jì),讓用戶快速實(shí)現(xiàn)
    的頭像 發(fā)表于 05-22 11:40 ?1123次閱讀
    免費(fèi)分享<b class='flag-5'>Arduino</b>入門(mén)+進(jìn)階(全套例程+書(shū)籍)

    下一代物聯(lián)網(wǎng):芯科科技和Arduino借助邊緣AI和ML簡(jiǎn)化Matter設(shè)計(jì)和應(yīng)用

    Silicon Labs(芯科科技)和Arduino宣布建立合作伙伴關(guān)系,旨在通過(guò)Arduino Nano Matter開(kāi)發(fā)板(基于芯科科技的MGM240系列多協(xié)議無(wú)線模塊)的兩階段合作來(lái)簡(jiǎn)化Matter協(xié)議的設(shè)計(jì)和應(yīng)用
    的頭像 發(fā)表于 05-19 11:15 ?783次閱讀
    下一代物聯(lián)網(wǎng):芯科科技和<b class='flag-5'>Arduino</b>借助邊緣AI和ML<b class='flag-5'>簡(jiǎn)化</b>Matter設(shè)計(jì)和應(yīng)用

    《ESP32S3 Arduino開(kāi)發(fā)指南》第二章 Arduino基礎(chǔ)知識(shí)

    setup() {// 在這里填寫(xiě)setup函數(shù)代碼,它只會(huì)運(yùn)行一次} void loop() {// 在這里編寫(xiě)loop函數(shù)代碼,它會(huì)不斷重復(fù)運(yùn)行}
    發(fā)表于 05-13 09:28

    函數(shù)指針的六個(gè)常見(jiàn)應(yīng)用場(chǎng)景

    函數(shù)指針在嵌入式開(kāi)發(fā)中有著廣泛的應(yīng)用,它讓代碼更加靈活,減少冗余,提高可擴(kuò)展性。很多時(shí)候,我們需要根據(jù)不同的情況動(dòng)態(tài)調(diào)用不同的函數(shù),而函數(shù)指針正是實(shí)現(xiàn)這一需求的重要工具。本文將介紹六個(gè)
    的頭像 發(fā)表于 04-07 11:58 ?1476次閱讀
    <b class='flag-5'>函數(shù)</b>指針的六個(gè)常見(jiàn)應(yīng)用場(chǎng)景

    如何將調(diào)用方函數(shù)的MATLAB代碼導(dǎo)入到DS?

    我最近制作了一個(gè)包含調(diào)用方函數(shù)的模型(我已將模型附加到 zip 文件中)。代碼構(gòu)建正常。但是當(dāng)我在 design studio 中導(dǎo)入代碼時(shí),它會(huì)引發(fā)錯(cuò)誤,因?yàn)樗鼰o(wú)法編譯或?qū)胨形募?所有其他模型都在 Design Stud
    發(fā)表于 04-02 06:51

    詳解RTOS中的Hook函數(shù)

    Hook函數(shù)是RTOS中的一個(gè)關(guān)鍵特性,通過(guò)該函數(shù),用戶可以增強(qiáng)對(duì)任務(wù)管理的控制,定義系統(tǒng)行為。
    的頭像 發(fā)表于 03-24 16:14 ?1077次閱讀