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 闪烁的代码中:

  • buttonStatelastButtonState 等是全局变量
  • readingloop() 函数内部的局部变量

八、实践建议

学习编程最好的方法就是动手实践!你可以:

  1. 先理解上面的代码,尝试修改参数,看看会发生什么
  2. 尝试将不同的项目组合起来,创造更复杂的功能
  3. 查阅 文档,了解更多函数和用法

通过不断练习,你会逐渐掌握 Arduino 编程的技巧,创造出属于自己的电子作品!

0 条评论

目前还没有评论...