: .
Arduino 编程参考手册 首页
程序结构
setup()
loop()
控制结构
if
if...else
for
switch case
while
do...while
break
continue
return
goto
相关语法
; 分号
{ 大括号
.else
与基本的 if 语句相比,由于允许多个测试组合在一起, if/else 可以使用更多的控制流。例如,可
以测试一个模拟量输入,如果输入值小于 500,则采取一个动作,而如果输入值大于或等于 500,
则采取另一个动作。代码看起来像是这样:
if (pinFiveInput < 500)
.case 通过允许程序员根据不同的条件指定不同的应被执行的代码来控制程序流。特别地,一个
switch 语句对一个变量的值与 case 语句中指定的值进行比较。 当一个 case 语句被发现其值等于该 变量的值。就会运行这个 case 语句下的代码。
break 关键字将中止并跳出 switch 语句段,常常用于每个 case 语句的最后面。如果没有 break 语 句, switch 语句将继续执行下面的表达式( “持续下降” )直到遇到 break ,或者是到达 switch 语 句的末尾。
示例:
switch (var) {
case 1:
.while
do 循环
do 循环与 while 循环使用相同方式工作,不同的是条件是在循环的末尾被测试的,所以 do 循环总 是至少会运行一次。
do
{
.else] 的分支控制结构的一部分。
布尔运算符
它们可用于 if 语句中的条件
&& (逻辑与)
只有在两个操作数都为真时才返回真,例如:
if (digitalRead(2) == HIGH && digitalRead(3) == HIGH) { .
}
只在两个输入都为高时返回真
|| (逻辑或)
任意一个为真时返回真,例如:
if (x > 0 || y > 0) {
}
x或y任意一个大于0时返回真
! (非)
当操作数为假时返回真,例如:
if (!x) {
}
若 x 为假返回真(即如果 x 等于 0)
警告
确保你没有把布尔与运算符, &&(两个与符号)错认为按位与运算符 &(单个与符号) 。它们是完全
不同的概念。
同样,不要混淆布尔或运算符 || (双竖杠)与按位或运算符 | (单竖杠)。
按位取反 ~(波浪号)看起来与布尔非 ! 有很大不同(感叹号或程序员口中的“棒” ),但是你仍然必 须确保在什么地方用哪一个。
例如
if (a >= 10 && a <= 20){}
常被称为掩码屏蔽。 看如下示例:
在a和b的16位的每一位将使用按位与处理。且所有 16位结果存入C中,以二进制存入的结果值 01000100,即十进制的 68。
按位与的其中一个最常用的用途是从一个整型数中选择特定的位, 位或
按位或( | )
在C++中按位或运算符是垂直的条杆符号, |。就像&运算符,|独立地计算它周围的两个整型表达式
的每一位。(当然)它所做的是不同的(操作 )。两个输入位其中一个或都是 1 按位或将得到 1,否 则为 0。换句话说:
0 0 1 1 operand1
0 1 0 1 operand2
0 1 1 1 (operand1 | operand2) - returned result
这是一个使用一小断 C++弋码描述的按位或(运算)的例子:
int a = 92;
按位与和按位或的一个共同的工作是在端口上进行程序员称之为读 - 改-写的操作。在微控制器中,
每个端口是一个 8 位数字,每一位表示一个引脚的状态。写一个端口可以同时控制所有的引脚。
PORTD是内建的参照数字口 0, 1, 2, 3, 4, 5, 6, 7的输出状态的常量。如果一个比特位是 1,那
么该引脚置高。 (引脚总是需要用 pinMode() 指令设置为输出模式) 。所以如果我们写入 PORTD = B00110001;我们就会让引脚 2, 3和7输出高。一个小小的问题是,我们同时也改变了某些引脚的 0, 1 状态。这用于 Arduino 与串口通讯,所以我们可能会干扰串口通讯。
我们的程序规则是:
仅仅获取和清除我们想控制的与相应引脚对应的位(使用按位与) 。
合并要修改的PORTDt与所控制的引脚的新值(使用按位或) 。
int i; .
1 << 8 == 256
1
arduino编程参考手册中文 来自淘豆网m.daumloan.com转载请标明出处.