女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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. 對于主循環中的代碼行(注釋省略)

審核編輯:郭婷

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

    關注

    2562

    文章

    52504

    瀏覽量

    763282
  • led
    led
    +關注

    關注

    242

    文章

    23684

    瀏覽量

    670556
  • Arduino
    +關注

    關注

    188

    文章

    6489

    瀏覽量

    190029
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    免費分享Arduino入門+進階(全套例程+書籍)

    Arduino是一款開源電子原型平臺,由硬件(單片機開發板)和軟件(編程環境)組成,旨在讓非專業用戶也能輕松入門電子制作和編程。它的核心思想是簡化硬件開發,通過直觀的編程和模塊化設計,讓用戶快速實現
    的頭像 發表于 05-22 11:40 ?55次閱讀
    免費分享<b class='flag-5'>Arduino</b>入門+進階(全套例程+書籍)

    下一代物聯網:芯科科技和Arduino借助邊緣AI和ML簡化Matter設計和應用

    Silicon Labs(芯科科技)和Arduino宣布建立合作伙伴關系,旨在通過Arduino Nano Matter開發板(基于芯科科技的MGM240系列多協議無線模塊)的兩階段合作來簡化Matter協議的設計和應用
    的頭像 發表于 05-19 11:15 ?132次閱讀
    下一代物聯網:芯科科技和<b class='flag-5'>Arduino</b>借助邊緣AI和ML<b class='flag-5'>簡化</b>Matter設計和應用

    《ESP32S3 Arduino開發指南》第二章 Arduino基礎知識

    setup() {// 在這里填寫setup函數代碼,它只會運行一次} void loop() {// 在這里編寫loop函數代碼,它會不斷重復運行}
    發表于 05-13 09:28

    函數指針的六個常見應用場景

    函數指針在嵌入式開發中有著廣泛的應用,它讓代碼更加靈活,減少冗余,提高可擴展性。很多時候,我們需要根據不同的情況動態調用不同的函數,而函數指針正是實現這一需求的重要工具。本文將介紹六個
    的頭像 發表于 04-07 11:58 ?322次閱讀
    <b class='flag-5'>函數</b>指針的六個常見應用場景

    分析C語言代碼結構的設計問題

    項目中遇到的,我拿過來給簡化了一下。 其實這樣的代碼可能會導致內存泄漏,如果第一個 malloc 申請成功,第二個 malloc 申請失敗,直接 return -1 退出函數,就會導致前面申請的內存沒有釋放,長期運行,極有可能導
    的頭像 發表于 02-11 09:31 ?295次閱讀

    用于 SPI 絕對編碼器的 Arduino 示例代碼

    作者:Damon Tarry, Design Applications Engineer, Same Sky 本 Arduino 示例代碼教程旨在為用戶提供一個堅實的起點,以便通過串行外設接口
    的頭像 發表于 01-26 21:35 ?717次閱讀
    用于 SPI 絕對編碼器的 <b class='flag-5'>Arduino</b> 示例<b class='flag-5'>代碼</b>

    C語言如何處理函數的返回值

    當你在函數的最后寫上 return 0 的時候,它是如何返回給調用函數的? 比如 test 函數,為了待會更好的看懂匯編代碼,我寫成了 return 1234。 處理
    的頭像 發表于 01-16 09:21 ?342次閱讀

    HAL庫在Arduino平臺上的使用

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

    SUMIF函數與SUMIFS函數的區別

    SUMIF函數和SUMIFS函數都是Excel中用于條件求和的函數,它們可以幫助用戶根據特定的條件對數據進行求和。盡管它們的基本功能相似,但在使用場景和功能上存在一些差異。以下是對這兩個函數
    的頭像 發表于 10-30 09:51 ?6932次閱讀

    Python常用函數大全

    在 Python 世界里,有一些寶藏函數和模塊,它們可以讓你編程更輕松、代碼更高效。這篇文章將帶你一一認識這些神器,讓你的開發生活瞬間輕松不少!
    的頭像 發表于 10-27 17:20 ?767次閱讀

    分享在arduino 單片機中浮點數轉換位數不夠,精度丟失的解決辦法

    arduino中由于硬件限制,浮點數只有2位小數。但經過這個函數處理可以達到7位
    的頭像 發表于 08-27 14:34 ?1111次閱讀

    開源項目!基于 Arduino DIY 漂亮的宏機械鍵盤

    大大簡化你的工作流程。 舉個例子,你可以將宏鍵盤上的一個按鍵設置為 CTRL+C 快捷鍵的映射,這樣,在需要復制文本或文件時,只需一鍵即可輕松完成。當你按下這個按鍵時,內置的 Arduino 會立即
    發表于 08-19 17:02

    面試???1:函數指針與指針函數、數組指針與指針數組

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

    怎樣用Arduino測試鋰電池容量

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

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

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