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

 

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