玩转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開發問題:
?
總結
以上是生活随笔為你收集整理的玩转Mixly – 5、Arduino AVR编程 之 逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 玩转Mixly – 3、Arduino
- 下一篇: 玩转Mixly – 6、Arduino