久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 53967|回復: 7
打印 上一主題 下一主題
收起左側

Arduino教程-另一種時間延遲

[復制鏈接]
跳轉到指定樓層
樓主
Hi,大家好!經過前幾次的學習,我們對Arduino有了基本的了解。接下來我們將繼續深入的學習。
還記得嗎?在前幾次的學習過程中,我們曾經多次使用到了delay()這個可以讓時間延遲的方法。為了在接下來的學習過程中,能夠更靈活的對延時進行控制,這一次,我們試著挑戰一下如何在不使用delay()方法的情況下,依然可以做到時間延時!
開始之前,還讓我們準備一下所需的材料。
硬件方面
圖片來源:Arduino 電路配件
具體包括如下:
  • Arduino UNO電路板(1塊)
  • mini面包板(1塊)
  • 220歐姆電阻(1個)
  • LED燈(1盞)
  • 面包線(2根)
配件看起來是不是很眼熟?其實和點亮LED神燈所需的配件一樣的。不僅如此,電路的連接上也是一樣的呢!
軟件方面
Arduino官方提供的IDE。
連接電路
圖片來源:Arduino連接LED電路示意圖
看看是不是和之前學過的點亮LED神燈的電路連接是一樣的?畢竟這次我們的重點在程序,電路起到的是一個輔助的角色。好!關于這個就不啰嗦了,下面重點看程序!
添加幾行代碼
首先打開Arduino的IDE,新建一個Arduino項目窗口。
圖片來源:Arduino官方IDE
新建完成之后,向其中添加幾行代碼。如下:

  1. // 定義LED燈針腳號
  2. const int ledPin =  13;
  3. // 定義LED燈點亮狀態
  4. int ledState = LOW;
  5. // 定義上一次loop到當前loop的時間間隔,
  6. // 數值類型為毫秒,
  7. // 變量類型為無符號長整型。
  8. unsigned long previousMillis = 0;
  9. // 定義常量來表示固定的時間間隔,
  10. // 此處為1000毫秒,也即1秒鐘,
  11. // 變量類型為長整型。
  12. const long interval = 1000;

  13. // 對Arduino電路板或相關狀態進行初始化方法
  14. void setup() {
  15.   // 設置LED針腳類型為狀態輸出針腳
  16.   pinMode(ledPin, OUTPUT);

  17. }
  18. // 系統調用,無限循環方法
  19. void loop() {
  20.   // 記錄程序執行到此處的時間,
  21.   // 數值類型為毫秒,
  22.   // 變量類型為無符號長整型。
  23.   unsigned long currentMillis = millis();

  24.   // 判斷當前的時間與上一次記錄時間的時間
  25.   // 間隔是否大于等于internal數值,
  26.   // 此處的internal是我們自定義的時間間隔。
  27.   // 如果大于等于internal數值,則執行內部操作,
  28.   // 否則進入下一次loop循環。
  29.   if (currentMillis - previousMillis >= interval) {
  30.     // 更新previousMillis變量數值,
  31.     // 也即更新上一次時間記錄為
  32.     // 當前時間。
  33.     previousMillis = currentMillis;
  34.     // 判斷LED燈狀態,并進行更改,
  35.     // 如果為亮,則變為滅。
  36.     // 如果為滅,則變為亮。
  37.     if (ledState == LOW) {
  38.       ledState = HIGH;
  39.     } else {
  40.       ledState = LOW;
  41.     }
  42.     // 將LED狀態變量的更改結果發送給LED燈元器件。
  43.     digitalWrite(ledPin, ledState);
  44.   }
  45. }
復制代碼



哈!今天的代碼猛然看起來有點長。其實吧,還好,還好!如果刪除代碼注釋,其實也是很簡短滴!叫板的話,今天的代碼里其實也只出現了一個新面孔,那就是millis()方法。這個方法的作用是獲取當前的時間,返回的數值為無符號長整型,時間單位是毫秒。loop()方法中的if語句,作用就是判斷上一次的時間和當前時間的間隔是否大于等于interval數值,此處設置的為1秒鐘。如果大于等于1秒鐘,則重新記錄,將previousMillis變量設置為當前時間,即currentMillis數值。
圖片來源:Arduino官方IDE的文件編輯菜單選項
最后點擊上圖中指向右側的箭頭圖標,將代碼燒入Arduino UNO電路板中。現在看看LED燈是否是每隔1秒鐘閃爍一次?你還可以在interval數值定義的地方更改其數值,重新將代碼燒入Arduino UNO電路板,以加快或減慢LED燈閃爍的頻率。
總結
今天我們一起學習了如何在不使用delay()方法的情況下實現時間延遲。不使用delay()方法的好處是,可以在每次延遲中加入自定義邏輯,在每次延遲的過程中完成多個操作。
下期預告
前面的學習,我們每次只涉及一個元器件。接下來,我們將嘗試加入多個元器件。下一次,我們將嘗試用開關按鍵控制LED神燈的亮和滅!


ohcoder的系列精彩Arduino教程:
Arduino教程-初識Arduino(包含本教程目錄):http://www.zg4o1577.cn/bbs/dpj-41334-1.html
Arduino教程-開篇:http://www.zg4o1577.cn/bbs/dpj-41335-1.html
Arduino教程-點亮LED神燈:http://www.zg4o1577.cn/bbs/dpj-41336-1.html
Arduino教程-讓LED神燈閃爍:http://www.zg4o1577.cn/bbs/dpj-41337-1.html
Arduino教程-讓LED神燈亮度漸變:http://www.zg4o1577.cn/bbs/dpj-41338-1.html
Arduino教程-獲取輸入數字信號:http://www.zg4o1577.cn/bbs/dpj-41339-1.html
Arduino教程-獲取輸入模擬信號:http://www.zg4o1577.cn/bbs/dpj-41340-1.html
Arduino教程-另一種時間延遲:http://www.zg4o1577.cn/bbs/dpj-41331-1.html
Arduino教程-按鍵開關:http://www.zg4o1577.cn/bbs/dpj-41341-1.html
Arduino教程-停止抖動!:http://www.zg4o1577.cn/bbs/dpj-41333-1.html
Arduino教程-拋棄外部電阻!:http://www.zg4o1577.cn/bbs/dpj-41332-1.html
Arduino教程-用按鍵開關計數:http://www.zg4o1577.cn/bbs/dpj-41330-1.html

………后續持續更新中請打開:http://www.zg4o1577.cn/bbs/dpj-41334-1.html
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:150345 發表于 2016-11-26 15:19 | 只看該作者
謝謝分享。如果想要更改閃爍頻率,增加delay就可以了,如果將這個閃爍做成數碼管時間顯示的中間兩個點,那么要如何實現閃爍時長設定又不影響其他的顯示呢?
回復

使用道具 舉報

板凳
ID:164854 發表于 2017-2-15 22:59 來自手機 | 只看該作者
正需要
回復

使用道具 舉報

地板
ID:137736 發表于 2017-4-28 18:26 來自手機 | 只看該作者
interval函數可用于精確的定時和日歷
回復

使用道具 舉報

5#
ID:246093 發表于 2018-6-20 22:32 | 只看該作者
請問這個可以讓單片機不用等待嗎?例如執行播放一段語音,然后條件符合播放,程序同時繼續運行
回復

使用道具 舉報

6#
ID:432246 發表于 2018-11-24 10:44 | 只看該作者
適合初學者   很好
回復

使用道具 舉報

7#
ID:437501 發表于 2018-12-2 09:25 | 只看該作者
老師好!我是剛接觸ARDUINO愛好者,我想用它來控制步進機定時開關門,我想請教 一下如果在時間周期停電了怎么解決這個問題?
回復

使用道具 舉報

8#
ID:81365 發表于 2022-1-16 22:25 | 只看該作者
ARDUINO和Android還以為是一碼事呢
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久综合一区二区三区 | 亚洲影音先锋 | 日日综合| 国产婷婷色综合av蜜臀av | 高清18麻豆 | 国产精品伦一区二区三级视频 | 不卡欧美 | 91精品久久久久久久久久 | 不卡在线视频 | 久久亚洲一区二区 | 亚洲手机在线 | 国产亚洲一区二区三区 | 久久久国产一区二区三区 | 高清人人天天夜夜曰狠狠狠狠 | 欧美黄色录像 | 国产成人精品一区二区三区网站观看 | 小川阿佐美pgd-606在线 | 午夜在线视频 | 国产一二区在线 | 欧美日韩视频在线播放 | 午夜激情影院 | 成人妇女免费播放久久久 | 啪一啪在线视频 | 亚洲看片| 久久99精品久久久 | 欧美日一区二区 | 国产在线观看网站 | 国产一区不卡在线观看 | 亚洲97| 国产精品不卡视频 | 午夜欧美日韩 | 超碰在线人人 | 天天干天天色 | 亚洲美女网站 | 亚洲精品免费观看 | 国产在线不卡视频 | 国产亚洲精品久久yy50 | 青青草网| 一本色道精品久久一区二区三区 | 国产精品九九九 | 日韩成人av在线 |