- 机器人等级考试
按键控制灯闪烁 & 电位器控灯亮灭
- 2025-7-20 14:33:58 @
Arduino C++ 编程入门学习笔记
一、基础概念
Arduino 是一个开源电子原型平台,它能让我们通过编写代码控制各种电子元件。在 Arduino 编程中,我们主要使用 C++ 语言,程序结构由 setup()
和 loop()
两个核心函数组成。
setup()
:初始化函数,只运行一次loop()
:循环函数,会一直重复运行
二、变量与数据类型
在编程中,变量就像一个小盒子,可以用来存放各种数据。Arduino 中有几种常见的数据类型:
int
:整数类型,如int number = 10;
const int
:常量整数,定义后不能修改,如const int pin = 13;
三、数字引脚与模拟引脚
Arduino 板上有两种引脚:
- 数字引脚:只能输入或输出高(1/HIGH)、低(0/LOW)两种电平
- 模拟引脚:可以读取 0-1023 范围内的模拟值
四、基本输入输出函数
pinMode(pin, mode)
:设置引脚模式(INPUT 或 OUTPUT)digitalRead(pin)
:读取数字引脚的值digitalWrite(pin, value)
:设置数字引脚的值analogRead(pin)
:读取模拟引脚的值(0-1023)Serial.begin(baudRate)
:初始化串口通信Serial.print()
和Serial.println()
:向串口监视器打印数据
五、实例项目
项目1:读取电位器的值并打印
电位器是一种可以旋转的传感器,旋转它时,我们可以得到不同的数值。
// 定义电位器连接的引脚
const int potPin = A0; // 电位器连接到模拟引脚A0
void setup() {
// 初始化串口通信,设置波特率为9600
Serial.begin(9600);
// 设置电位器引脚为输入模式(模拟引脚默认是输入,可以不写这行)
pinMode(potPin, INPUT);
}
void loop() {
// 读取电位器的值(范围0-1023)
int sensorValue = analogRead(potPin);
// 打印电位器的值到串口监视器
Serial.print("电位器值: ");
Serial.println(sensorValue);
// 延时20毫秒,让程序运行慢一点,方便我们查看
delay(20);
}
项目2:根据电位器值控制LED灯
我们可以根据电位器的值来控制 LED 灯的亮灭。当电位器的值大于 500 时,LED 灯点亮;否则熄灭。
// 定义电位器引脚和LED引脚
const int potentiometerPin = A0; // 电位器连接到模拟引脚A0
const int ledPin = 13; // LED连接到数字引脚13(板载LED)
void setup() {
// 初始化串口通信,用于打印电位器值
Serial.begin(9600);
// 设置LED引脚为输出模式
pinMode(ledPin, OUTPUT);
}
void loop() {
// 读取电位器的值(范围0-1023)
int sensorValue = analogRead(potentiometerPin);
// 打印电位器的值到串口监视器
Serial.print("电位器值: ");
Serial.println(sensorValue);
// 判断电位器值是否大于500
if (sensorValue > 500) {
digitalWrite(ledPin, HIGH); // 点亮LED
} else {
digitalWrite(ledPin, LOW); // 熄灭LED
}
// 延时200毫秒,避免读取和打印过于频繁
delay(200);
}
项目3:按键控制LED闪烁
接下来我们学习使用按键控制 LED 灯。当按下按键时,LED 灯会以 200ms 的频率闪烁;松开按键,LED 灯熄灭。
// 定义按键引脚和LED引脚
const int buttonPin = 2; // 按键连接到数字引脚2
const int ledPin = 13; // LED连接到数字引脚13(板载LED)
// 定义变量
int buttonState; // 存储按键状态
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 设置LED引脚为输出模式
pinMode(ledPin, OUTPUT);
// 设置按键引脚为输入模式
pinMode(buttonPin, INPUT);
}
void loop() {
// 读取按键状态
int reading = digitalRead(buttonPin);
if (reading == 1) {
Serial.println("按键被按下");
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
} else {
Serial.println("按键被松开");
digitalWrite(ledPin, LOW); // 熄灭LED
}
// 根据按键状态控制LED
delay(10);
}
六、条件判断与循环
在上面的代码中,我们用到了两个重要的编程概念:
- 条件判断:使用
if-else
语句根据条件执行不同的代码块 - 循环:
loop()
函数本身就是一个无限循环,我们还可以使用delay()
函数控制代码执行的速度
七、变量作用域
在 Arduino 编程中,变量有不同的作用域:
- 全局变量:定义在所有函数外部的变量,可以在程序的任何地方使用
- 局部变量:定义在函数内部的变量,只能在该函数内部使用
例如在按键控制 LED 闪烁的代码中:
buttonState
、lastButtonState
等是全局变量reading
是loop()
函数内部的局部变量
八、实践建议
学习编程最好的方法就是动手实践!你可以:
- 先理解上面的代码,尝试修改参数,看看会发生什么
- 尝试将不同的项目组合起来,创造更复杂的功能
- 查阅 文档,了解更多函数和用法
通过不断练习,你会逐渐掌握 Arduino 编程的技巧,创造出属于自己的电子作品!
0 条评论
目前还没有评论...