玩轉Mixly – 5、Arduino AVR編程 之 邏輯

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

https://mixly.readthedocs.io/zh_CN/latest/Arduino/AVR/04Logic.html

 

邏輯

邏輯模塊中的指令大多是邏輯運算處理內容,具體可分爲:條件判斷、邏輯運算、?運算。

比較運算符

1

0 == 0;

 

 

描述

註解

比較運算符適用於比較兩個值的運算符號,用比較運算符比較兩個值時,結果是一個邏輯值,不是TRUE就是FALSE。

等於(=)

等於用在變量之間、變量和自變量之間以及其他類型的信息之間的比較,判斷符號兩側的數據值是否相等,要求兩側數據類型相同時才能比較。

規則是:如果兩個數據值相等,數據類型相同,則結果爲TRUE,否則輸出FALSE。

範例

1=1,返回True;1=“1”,不成立

1

2

3

4

5

6

7

8

9

10

void setup(){

Serial.begin(9600);

if (1 == 1) {

Serial.print("True");

}

}

void loop(){

0 == "1";

1;

}

 

 

不相等(≠)

不等於是等於符號的相反判斷。

規則:符號兩邊的數據值相等時,返回FALSE,否則返回TRUE。

小於(<)

小於符號進行有順序的比較,如果符號左邊的數據值小於右邊的數據值,則返回TRUE,否則返回FALSE。

小於等於(≤)

小於等於符號與小於符號類似,多出一種返回TRUE的情況,如果符號左邊的數據值小於等於右邊的數據值,則返回TRUE,否則返回FALSE。

大於(>)

大於符號進行有順序的比較,如果符號左邊的數據值大於右邊的數據值,則返回TRUE,否則返回FALSE。

大於等於(≥)

大於等於符號與大於符號類似,多出一種返回TRUE的情況,如果符號左邊的數據值大於等於右邊的數據值,則返回TRUE,否則返回FALSE。

範例

在A0連接電位器,D9連接LED。轉動電位器,大於600燈一直亮,在400和600之間,燈滅,小於400燈閃。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

void setup(){

Serial.begin(9600);

pinMode(9, OUTPUT);

}

void loop(){

Serial.println(analogRead(A0));

delay(1000);

if (analogRead(A0) >= 600) {

digitalWrite(9,HIGH);

} else if (analogRead(A0) <= 400) {

digitalWrite(9,HIGH);

delay(200);

digitalWrite(9,LOW);

delay(200);

} else {

digitalWrite(9,LOW);

}

}

 

 

邏輯運算符

1

false && false;

 

 

描述

註解

邏輯運算符用於判定變量或值之間的邏輯。

且的含義同邏輯運算符與,只有當符號兩邊的表達式均爲真時,才被判斷爲真,否則爲假。

或也是邏輯運算符的一種,只有當兩邊的表達式均爲假時,才被判斷爲假,否則爲真。

範例

光控按鈕燈:A0連接光線傳感器,D4連接LED,D3連接按鈕,當A0<50光線暗)並按鈕被被下時,LED爲高電平;否則,LED爲低電電平

1

2

3

4

5

6

7

8

9

10

11

void setup(){

pinMode(3, INPUT);

pinMode(4, OUTPUT);

}

void loop(){

if (analogRead(A0) < 50 && digitalRead(3)) {

digitalWrite(4,HIGH);

} else {

digitalWrite(4,LOW);

}

}

 

 

?:語句

1

(0 > 0)?false:false;

 

 

描述

註解

對於條件表達式b ? x : y,先計算條件b,然後進行判斷。如果b的值爲true,計算x的值,運算結果爲x的值;否則,計算y的值,運算結果爲y的值。一個條件表達式絕不會既計算x,又計算y。條件運算符是右結合的,也就是說,從右向左分組計算。例如,a ? b : c ? d : e將按a ? b : (c ? d : e)執行。

參數

  • 判斷條件:先計算判斷條件的值

  • x:當判斷條件的值爲true,運算結果爲x的值

  • y:當判斷條件的值爲false,運算結果爲y的值

範例

聲控燈:A0連接聲音傳感器,D2連接LED,當A0>50時,LED爲高電平;否則,LED爲低電平

1

2

3

4

5

6

7

8

void setup(){

Serial.begin(9600);

pinMode(2, OUTPUT);

}

void loop(){

Serial.println(analogRead(A0));

digitalWrite(2,(analogRead(A0) > 50)?HIGH:LOW);

}

 

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章