C语言中的决策制定与修改版闪烁程序
立即解锁
发布时间: 2025-08-20 01:16:46 阅读量: 1 订阅数: 4 


Arduino C语言编程入门与实践
### C语言中的决策制定与修改版闪烁程序
#### 1. if语句的逻辑判断
在C语言中,if语句用于根据条件的真假来决定是否执行特定的代码块。以下是一个简单的示例:
```c
int b = 10;
// some more program statements…
if (b < 20) {
b = doSomethingNeat(); // Do this is b is less than 20
}
doSomethingElse(b);
```
在这个代码片段中,首先定义了一个整数变量`b`并初始化为10。然后执行一些未指定的语句,接着进行`if`测试。如果`b`的值仍然是10,由于`b < 20`为真,`if`语句块将被执行,调用`doSomethingNeat()`函数,并将其返回值赋给`b`。之后执行`doSomethingElse(b)`。
如果`if`测试的条件为假,`if`语句块将被跳过,直接执行`if`语句块后面的语句。
以下是`if`测试的执行路径流程图:
```mermaid
graph TD;
A[开始] --> B{expression 1是否为真};
B -- 真 --> C[执行if语句块];
B -- 假 --> D[跳过if语句块];
C --> E[执行后续语句];
D --> E;
E --> F[结束];
```
需要注意的是,在编写`if`语句时,可能会犯一个常见的错误,例如:
```c
if (val = 10)
{
size = 10;
}
```
这里使用了单个等号(赋值运算符)而不是正确的“等于”运算符(`==`),这将导致代码执行赋值语句而不是关系测试,这被称为“Flat Forehead Mistake (FFM)”。当你发现自己进入了不应该进入的`if`语句块时,要检查是否犯了这种错误。
#### 2. 花括号的使用
当`if`语句块只包含一条程序语句时,定义语句块的花括号是可选的。例如:
```c
if (b == 10)
b = doSomethingNeat();
doSomethingElse();
```
然而,建议始终使用花括号来定义`if`语句块,原因如下:
- 增加代码风格的一致性。
- 使`if`语句在阅读代码时更加突出。
- 后续测试和调试可能需要添加更多语句到语句块中,如果不使用花括号,可能会导致代码逻辑错误。
例如,以下代码:
```c
if (b == 10)
b = doSomethingNeat();
doBackupNow();
doSomethingElse();
```
缩进表明程序员希望只有当`b`等于10时才调用`doSomethingNeat()`和`doBackupNow()`,但实际上`doBackupNow()`总是会被调用。正确的写法应该是:
```c
if (b == 10) {
b = doSomethingNeat();
doBackupNow();
}
doSomethingElse();
```
#### 3. 修改版闪烁程序
接下来,我们将编写一个基于IDE中示例闪烁程序的修改版程序。原闪烁程序会闪烁Arduino的板载LED,而我们开发的程序将使用两个外部LED、两个电阻和一些面包板跳线。
##### 3.1 电路连接
电路连接如下:
- 从Arduino的数字I/O引脚10连接一根线到一个470欧姆的电阻。
- 电阻的另一端连接到LED的阳极(长脚)。
- LED的阴极连接到Arduino的接地(GND)引脚。
- 从Arduino的GND引脚连接一根线到原型板的接地轨。
通常,使用跳线的电路中,黑色线表示GND连接,红色线表示正电压连接,这有助于调试电路。
##### 3.2 电路电阻值
电阻值的选择取决于具体使用的LED。Arduino I/O引脚的最大负载不应超过40mA,建议将最大电流设为20mA。根据欧姆定律`Volts = Amps × Ohms`,可以计算出电阻值:
`Resistance = Volts / Amps`
由于Arduino板工作电压为5V,最大电流为20mA(即0.020A),计算得到的电阻值为250欧姆。但为了安全起见,将电阻值增加到470欧姆。对于大多数LED,电阻值在150到1000欧姆之间都可以正常工作。
LED的极性很重要,大多数LE
0
0
复制全文
相关推荐










