逻辑

逻辑模块中的指令大多是逻辑运算处理内容,具体可分为:条件判断、逻辑运算、?运算。

../../_images/logic1.png

比较运算符

../../_images/comparisonOperators.png
1
0 == 0;

描述

注解

比较运算符适用于比较两个值的运算符号,用比较运算符比较两个值时,结果是一个逻辑值,不是TRUE就是FALSE。

等于(=)

等于用在变量之间、变量和自变量之间以及其他类型的信息之间的比较,判断符号两侧的数据值是否相等,要求两侧数据类型相同时才能比较。

规则是:如果两个数据值相等,数据类型相同,则结果为TRUE,否则输出FALSE。

范例

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

../../_images/equal_example.png
 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灯闪。

../../_images/comparisonOperators_example.png
 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);
  }
}

逻辑运算符

../../_images/logicOperators.png
1
false && false;

描述

注解

逻辑运算符用于判定变量或值之间的逻辑。

且的含义同逻辑运算符与,只有当符号两边的表达式均为真时,才被判断为真,否则为假。

或也是逻辑运算符的一种,只有当两边的表达式均为假时,才被判断为假,否则为真。

范例

光控按钮灯:A0连接光线传感器,D4连接LED,D3连接按钮,当A0<50光线暗)并按钮被被下时,LED为高电平;否则,LED为低电电平

../../_images/logicOperators_example.png
 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);
  }
}

?:语句

../../_images/?statement.png
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为低电平

../../_images/?statement_example.png
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);
}