以下內容源自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開發問題: