日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

玩转Mixly – 3、Arduino AVR编程 之 控制

發布時間:2025/4/5 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 玩转Mixly – 3、Arduino AVR编程 之 控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容源自Mixly官方技術文檔:

https://mixly.readthedocs.io/zh_CN/latest/Arduino/AVR/02Control.html

?

控制

控制類別中包括了時間延遲、條件執行、循環執行、獲取運行時間、初始化、Switch執行等 控制模塊中主要執行的內容是對程序結構進行的相應控制。

1.初始化

1

2

pinMode(3, OUTPUT);

digitalWrite(3,HIGH);

?

?

1.1 描述

在Arduino中程序運行時將首先調用 setup()函數。 用于初始化變量、設置針腳的輸出輸入類型、配置串口、引入類庫文件等等。

1.2 范例1

初始化時聲明變量。

1

2

3

4

5

6

volatile int item;

void setup(){

item = 0;

}

void loop(){

}

?

?

1.3 范例2

在初始化時定義中斷函數。

1

2

3

4

5

6

7

8

9

10

void attachInterrupt_fun_2() {

digitalWrite(13,HIGH);

}

void setup(){

pinMode(2, INPUT);

pinMode(13, OUTPUT);

attachInterrupt(digitalPinToInterrupt(2),attachInterrupt_fun_2,RISING);

}

void loop(){

}

?

?

注意

每次 Arduino 上電或重啟后,setup 函數只運行一次。

2.while 循環

2.1 描述

while循環會無限的循環,直到括號內的判斷語句變為假。 必須要有能改變判斷語句的東西,要不然while循環將永遠不會結束。你可以使用一個傳感器的值,或者一個變量來控制什么時候停止該循環。

2.2 參數

  • 滿足條件:為真或為假的一個條件。

2.3 范例

當溫度高于30度時,亮燈,否則滅燈。

1

2

3

4

5

6

7

8

9

void setup(){

pinMode(13, OUTPUT);

}

void loop(){

while (analogRead(A0)*0.488 > 30) {

digitalWrite(13,HIGH);

}

digitalWrite(13,LOW);

}

?

?

3.延時

1

delay(1000);

?

?

3.1 描述

使程序暫定設定的時間(單位毫秒)。(一秒等于1000毫秒)。

3.2 參數

  • 毫秒:暫停的毫秒數。

3.3 范例

13號引腳燈亮1秒,滅1秒,往復循環。

1

2

3

4

5

6

7

8

9

void setup(){

pinMode(13, OUTPUT);

}

void loop(){

digitalWrite(13,HIGH);

delay(1000);

digitalWrite(13,LOW);

delay(1000);

}

?

?

注意

雖然創建一個使用delay()的閃爍LED很簡單,并且許多例子將很短的delay用于消除開關抖動。

但delay()確實擁有很多顯著的缺點。在delay函數使用的過程中,讀取傳感器值、計算、引腳操作均無法執行,因此,它所帶來的后果就是使其他大多數活動暫停。大多數熟練的程序員通常避免超過10毫秒的delay(),除非arduino程序非常簡單。

利用定時器,就可以解決這個問題,可以避免由于delay()帶來的CPU暫停,也能很好地實現每隔一定時間執行動作。

4.如果(if)

1

2

if (false) {

}

?

?

4.1 描述

if 語句與比較運算符一起用于檢測某個條件是否達成,如某個傳感器的值是否等于某個值。

4.2 參數

  • 條件:比較表達式

4.3 用法

增加條件:如果需要增加條件,可以點開齒輪,然后將左側的“否則如果”或者“否則”模塊拖到右側的“如果”之中。

4.4 范例1

當連接在2號引腳的按鍵按下時,點亮13號引腳的燈。

1

2

3

4

5

6

7

8

9

void setup(){

pinMode(2, INPUT);

pinMode(13, OUTPUT);

}

void loop(){

if (digitalRead(2) == 1) {

digitalWrite(13,HIGH);

}

}

?

?

如果判斷的條件大于等于1時,可以省略等于判斷,因為只要 該表達式的結果不為0,則為真。

所以,上面的寫法與下面的寫法等效。

1

2

3

4

5

6

7

8

9

void setup(){

pinMode(2, INPUT);

pinMode(13, OUTPUT);

}

void loop(){

if (digitalRead(2)) {

digitalWrite(13,HIGH);

}

}

?

?

4.5 范例2

當連接在2號引腳的按鍵按下時,點亮13號引腳的燈;當按鍵松開時,燈滅。

?

注意

另外一種進行多種條件分支判斷的語句是switch case語句。

5.如果(switch)

?

5.1 描述

和if語句相同,switch…case通過設定的在不同條件下執行的代碼控制程序的流程。

特別地,switch語句將變量值和case語句中設定的值進行比較。當一個case語句中的設定值與變量值相同時,這條case語句將被執行。

關鍵字break可用于退出switch語句,通常每條case語句都以break結尾。如果沒有break語句,switch語句將會一直執行接下來的語句(一直向下)直到遇見一個break,或者直到switch語句結尾。

5.2 參數

  • var: 用于與下面的case中的標簽進行比較的變量值

  • label: 與變量進行比較的值

5.3 用法

增加case:如果需要增加條件,可以點開齒輪,然后將左側的“case”或者“default”模塊拖到右側的“switch”之中。

5.4 范例

當連接在2號引腳的按鍵按下時,點亮13號引腳的燈,否則13號引腳的燈滅

?

注意

每個switch可以有多個case,但是最多不超過一個default,當不滿足任何一個case時,執行default中的程序。

6.for循環

?

6.1 描述

for循環用于重復執行一段的程序。通常使用一個增量計數器計數并終止循環。

for循環用于重復性的操作非常有效,通常與數組結合起來使用來操作數據、引腳。

6.2 參數

  • 變量名:用于記錄for循環次數的變量名。

  • 起始值:循環的計數起始值,一般從0開頭,也可以從其他數值開始。

  • 終點值:循環的計數終點值。

  • 步長:每次循環的步長,一般為1,也可以是其他整數。

6.3 用法

可自行設置循環的變量名稱,并確定循環的開始和終止以及循環方向,最后一個數字可以為負數。

6.4 范例

將連接在3號引腳的燈制作成呼吸燈,每一次亮度變化之間間隔50毫秒

?

注意

for循環中定義的變量有名字,可以用字母i,j,k或單詞red,state等有意義的詞語表示。

7.跳出循環

?

7.1 描述

跳出循環用于終止一段重復的程序,一般使用時作為條件語句的執行部分,當循環中的變量滿足某個條件時,執行跳出循環語句。

跳出循環在處理循環中的特殊情況時十分有用。

7.2 參數

  • 操作:可以選擇跳出循環和跳到下一個循環兩種操作,結果不同。

7.3 范例

引腳3上的數字從0到255逐一增加,每一次增加之間間隔50毫秒,當數字增加到150時停止增加

?

注意

注意跳到下一個循環的使用,可以方便的將循環中不需要的步驟跳過。

8.系統運行時間

?

8.1 描述

返回自硬件啟動或重啟以來的時間值。

8.2 返回

自硬件啟動或重啟以來的時間,毫秒數或者微秒數。

8.3 范例

自動換行打印系統運行時間

?

9.MsTimer2 定時器

?

9.1 描述

每隔設置的毫秒數執行相應的程序

9.2 范例

利用定時器控制13號引腳LED每隔1秒亮滅一次。

?

注意

利用定時器可以提高硬件的工作效率。

但在一個程序中只能使用一個MsTimer2定時器,如果要實現多個時間的定時,可以配合變量計數來完成。

10.MsTimer2 定時器啟動

?

10.1 描述

MsTimer2定時器開始計時

11.MsTimer2 定時器停止

?

11.1 描述

MsTimer2定時器停止計時

12.簡單定時器

?

12.1 描述

設置不同的簡單定時器,每隔指定秒數執行相應的程序常用于多任務處理。

12.2 范例

D12,D13分別連接LED燈,每隔200ms,D12引腳LED燈切換亮滅; 每隔300ms,D13引腳LED燈切換亮滅;

?

13.允許中斷

?

13.1 描述

允許輸入/輸出模塊中管腳中斷的運行

13.2 范例

使用按鈕模擬開關,每次按下,LED燈切換亮滅

?

14.禁止中斷

?

14.1 描述

禁止輸入/輸出模塊中管腳中斷的運行

14.2 范例

在允許中斷范例的基礎上,嘗試禁止中斷

?

15.SCoop Task

?

15.1 描述

SCoop模塊用于執行多線程任務,最多支持8個任務。

15.2 范例

利用SCoop,控制13號引腳LED燈以2秒的頻率閃爍,同時控制12號引腳的LED燈以200毫秒的頻率閃爍。

微信關注圖中張十三的博客公眾號,與張十三一起探討更多mixly開發問題:

總結

以上是生活随笔為你收集整理的玩转Mixly – 3、Arduino AVR编程 之 控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。