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开发问题: