色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Arduino函數簡化代碼

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Jeremy S. Cook ? 2022-08-16 09:23 ? 次閱讀

Arduino 板和 Arduino IDE 非常適合創建可以激活 LED、讀取傳感器、激活伺服或任何數量的獨特物理計算應用程序的小代碼片段。此類操作通常開始時很簡單——例如,讓計時器上的 LED 閃爍——但隨著程序的擴展和程序員技能的提高,最終會變得相當復雜。

組織擴展代碼的一種出色技術是使用函數,即可以根據需要從程序的其他部分(例如通過主循環)調用的代碼片段。對于有經驗的程序員來說,這種技術可能已經過時了,但對于那些從其他學科進入 Arduino 的人來說,盡早接受函數范式通常會對你有好處。

聲明一個函數

在最基本的形式中,額外函數看起來幾乎與您在開始新草圖時在第 1 行和第 6 行看到的設置和循環函數一樣(圖 1)。這些函數需要在另一個函數之外聲明,并且具有唯一的名稱。事實上,主循環函數的簡單復制/過去/修改可用于在您的代碼中創建一個新函數。

poYBAGL68dOAaEKlAACCXUp6_JI398.png

圖 1. 新功能 copypasta。

調用函數,繼續

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

pYYBAGL68dmAd3UJAACoptgTOVQ871.png

雖然這對簡化代碼沒有任何作用,但如果您想在主循環中的多個點執行相同類型的閃爍/響應操作,請考慮如何簡化事情。無需編寫 5 行代碼,您只需使用 blinkAndTalk(); 調用新函數。

不需要太多用處就能看出這種簡化是如何疊加起來的,尤其是在函數更復雜的情況下。這種代碼分段還有助于在其他程序中重用代碼,因為您可以根據需要在那里復制/粘貼。在 Arduino IDE 中,將函數放在最后很好,但如果您使用不同的環境(例如 PlatformIO),順序可能很重要。

函數返回值

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

pYYBAGL68d-AIcEnAACX8x_iNLg323.png

圖 3.來自 Arduino 示例的代碼。

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

pYYBAGL68eaAUfmLAACfahn3UiY284.png

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

一旦您準備好將幾行代碼轉移到編程上更有趣的應用程序中,請記住函數是您的朋友。他們在最初設置時會花一些心思,但隨著事情變得更加復雜,他們可以支付巨額紅利。

我最近寫了一段代碼,其中一小部分如下所示,接近 300 行。然而,主循環在括號內只有 4 行,主要是為了調用一些單獨的函數。老實說,我應該將其進一步分解為功能塊,從而可能會減小程序的大小并為自己省去一些麻煩。規劃在這里有很長的路要走。

pYYBAGL68eyAPaIrAABcsioxRVM434.png

圖 5. 對于主循環中的代碼行(注釋省略)

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2550

    文章

    51035

    瀏覽量

    753080
  • led
    led
    +關注

    關注

    242

    文章

    23252

    瀏覽量

    660580
  • Arduino
    +關注

    關注

    188

    文章

    6468

    瀏覽量

    186955
收藏 人收藏

    評論

    相關推薦

    HAL庫在Arduino平臺上的使用

    ,適合于快速原型開發和教育。HAL(硬件抽象層)庫是一種在Arduino平臺上使用的軟件庫,它提供了一種標準化的方式來訪問硬件功能,使得開發者可以編寫更通用、更可移植的代碼。 1. 什么是HAL庫 HAL庫是硬件抽象層庫的簡稱,它是一種軟件架構,用于將硬件特定的
    的頭像 發表于 12-02 14:04 ?244次閱讀

    面試常考+1:函數指針與指針函數、數組指針與指針數組

    函數是指返回值為指針的函數。語法:返回值類型*函數名(參數列表)。示例代碼:#include#includeint*getNumber(inta,intb){in
    的頭像 發表于 08-10 08:11 ?830次閱讀
    面試常考+1:<b class='flag-5'>函數</b>指針與指針<b class='flag-5'>函數</b>、數組指針與指針數組

    怎樣用Arduino測試鋰電池容量

    本文詳細介紹了如何用Arduino測量鋰電池的容量。并附有電路圖和Arduino的程序代碼
    的頭像 發表于 07-30 09:14 ?855次閱讀
    怎樣用<b class='flag-5'>Arduino</b>測試鋰電池容量

    能將ESP8266連接到arduino UNO上,使用mesh組網嗎?

    現在已將ESP8266連接到了arduino,并且成功驅動,但是有個問題就是組網的問題,想使用mesh,但是還有有些疑問。1、將帶有mesh的固件燒錄到ESP8266中,就能自動尋找節點了嗎?或者是下載mesh的庫函數,從arduino
    發表于 07-11 06:46

    鴻蒙TypeScript入門學習第8天:【TypeScript 函數

    函數是一組一起執行一個任務的語句。 您可以把代碼劃分到不同的函數中。如何劃分代碼到不同的函數中是由您來決定的,但在邏輯上,劃分通常是根
    的頭像 發表于 04-03 14:54 ?416次閱讀
    鴻蒙TypeScript入門學習第8天:【TypeScript <b class='flag-5'>函數</b>】

    Arduino Uno R3開發版簡化

    本人小白,想把Atmega328p-AU芯片單獨拿出來用來控制LED陣列,但Arduino R3開發板的原理圖真看不懂!想知道除了328芯片還需要什么以及線路怎么連接,感謝各位大佬!
    發表于 04-02 08:38

    verilog function函數的用法

    Verilog 中被廣泛用于對電路進行模塊化設計,以簡化和組織代碼。 本文將詳細介紹 Verilog 函數的用法,并探討函數在硬件設計中的重要性和實際應用場景。 一. Verilog
    的頭像 發表于 02-22 15:49 ?5529次閱讀

    內聯函數定義 為什么需要內聯函數

    inline關鍵字是C99標準的型關鍵字,其作用是將函數展開,把函數代碼復制到每一個調用處。
    的頭像 發表于 02-19 12:20 ?540次閱讀

    arduino控制步進電機代碼

    Arduino是一種開放源代碼的電路板平臺,它可以用于控制各種不同的電子設備,包括步進電機。步進電機是一種電動機,可以通過下達特定的指令來控制每個步進的角度,從而使電機旋轉到指定的位置。在本文
    的頭像 發表于 02-14 16:29 ?2014次閱讀

    arduino中while循環怎么跳出

    Arduino 是一款開源的硬件平臺,廣泛應用于各種物聯網和嵌入式系統項目。在 Arduino 上編寫代碼時,循環結構起到了至關重要的作用。而其中的 while 循環更是常用于需要根據特定條件重復
    的頭像 發表于 02-14 16:22 ?2557次閱讀

    verilog中函數和任務對比

    在verilog中,函數和任務均用來描述共同的代碼段,并且在模式內任意位置被調用,提高代碼效率,讓代碼更加的直觀,提高代碼可讀性。但是在實際
    的頭像 發表于 02-12 18:43 ?882次閱讀

    2023年Arduino開放原碼報告:持續茁壯的Arduino生態系!

    所謂出錢就是買一片Arduino開發板或是付費訂閱Arduino Cloud云端服務,或單純資金贊助;出力就是撰寫Arduino相關的程序并無私的分享程序代碼或回報錯誤或投入翻譯等,筆
    的頭像 發表于 01-25 16:45 ?1426次閱讀
    2023年<b class='flag-5'>Arduino</b>開放原碼報告:持續茁壯的<b class='flag-5'>Arduino</b>生態系!

    如何用Rust過程宏魔法簡化SQL函數呢?

    這是 RisingWave 中一個 SQL 函數的實現。只需短短幾行代碼,通過在 Rust 函數上加一行過程宏,我們就把它包裝成了一個 SQL 函數
    的頭像 發表于 01-23 09:43 ?945次閱讀
    如何用Rust過程宏魔法<b class='flag-5'>簡化</b>SQL<b class='flag-5'>函數</b>呢?

    Cocotb驗證平臺時鐘的產生代碼

    Clock函數采用不同的時間單位時需要確保與代碼的timescale匹配,也就是說Clock函數的時間單位應大于等于timescale的時間單位。
    的頭像 發表于 01-08 16:26 ?557次閱讀
    Cocotb驗證平臺時鐘的產生<b class='flag-5'>代碼</b>

    arduino和單片機的區別比較

    和軟件的微控制器平臺,它通過一種簡化和標準化的方式,使電子開發變得更加容易。Arduino主板上集成了處理器、輸入輸出引腳、電源供應等電路,能夠連接各種傳感器和執行器,通過編程進行控制和交互。Arduino的優點在于其使用簡單、
    的頭像 發表于 01-02 16:18 ?9716次閱讀
    主站蜘蛛池模板: 久热这里在线精品| 午夜伦理yy44008影院| 国产在线观看免费观看| 99在线精品免费视频| 野花韩国免费高清电影| 乳女教师欲乱动漫无修版动画| 男女边吃奶边做边爱视频| 美女gif趴跪式动态图| 久久久久久极精品久久久| 精品成人在线视频| 国产成人精品区在线观看| 高清无码中文字幕在线观看视频| 97国产在线观看| 99精品观看| qovd电影| 凤楼app| 99热都是精品| YELLOW日本动漫高清免费| 办公室里呻吟的丰满老师电影| 波多结衣一区二区三区| 不卡一区二区高清观看视频| vr亚洲成年网址在线观看| 成人在线视频观看| 国产AV白丝爆浆在线播放| 国产精品久久久亚洲偷窥女厕| 国产欧美亚洲综合第一页| 国产不卡免费| 韩国伦理电影在线神马网| 精品欧美18videosex欧美| 久久高清一本无码| 免费夜里18款禁用软粉色| 欧美精品专区免费观看| 色狠狠色综合吹潮| 亚洲欧美国产旡码专区| 在线涩涩免费观看国产精品| 91麻豆精品| 贵妇局长的蕾丝乳罩| 好男人在线观看免费视频WWW| 久久综合给会久久狠狠狠| 欧美三级不卡在线观线看| 日韩久久影院|