杰瑞科技汇

Arduino编程语言怎么学?

Arduino 编程语言终极教程

本教程将分为以下几个部分:

Arduino编程语言怎么学?-图1
(图片来源网络,侵删)
  1. 第一部分:Arduino 简介

    • 什么是 Arduino?
    • Arduino 编程语言是什么?
    • 你需要准备什么?
  2. 第二部分:第一个程序 - "Hello, World!"

    • 安装 Arduino IDE
    • 连接 Arduino 板
    • 编写并上传你的第一个程序(Blink)
  3. 第三部分:Arduino 编程语言核心

    • 结构:setup()loop()
    • 数据类型
    • 变量与常量
    • 运算符
    • 控制结构
    • 函数
  4. 第四部分:核心库函数详解

    Arduino编程语言怎么学?-图2
    (图片来源网络,侵删)
    • pinMode(), digitalWrite(), digitalRead()
    • analogWrite(), analogRead()
    • delay(), millis()
    • Serial 通信
  5. 第五部分:实战项目

    • 项目1:呼吸灯
    • 项目2:读取并显示传感器数据
    • 项目3:控制舵机
  6. 第六部分:进阶学习资源


第一部分:Arduino 简介

1 什么是 Arduino?

Arduino 是一个开源的电子原型平台,包括一个简单易用的硬件(各种型号的 Arduino 板)和一款软件(Arduino IDE),它的目标是让艺术家、设计师、爱好者和任何对创造互动对象感兴趣的人,都能轻松地使用电子和编程。

2 Arduino 编程语言是什么?

Arduino 编程语言本质上是在 C++ 的基础上构建的一套简化版,它保留了 C++ 的核心结构,但省略了许多复杂的部分,并添加了大量专门用于控制硬件的预定义函数和库,即使你不懂 C++,也可以快速上手。

3 你需要准备什么?

  • 硬件:
    • 一块 Arduino 板(最推荐 Arduino UNO R3,因为它是最经典、资料最多的型号)。
    • 一根 USB 数据线(用于供电和上传程序)。
    • 一些基础元件:
      • LED 灯
      • 220Ω 电阻(用于保护 LED)
      • 面包板 和跳线
      • (可选)一个电位器 或光敏电阻
  • 软件:

第二部分:第一个程序 - "Hello, World!"

在电子世界里,点亮一个 LED 灯就相当于编程世界里的 "Hello, World!"。

1 安装 Arduino IDE

  1. 访问 Arduino 官网,下载适合你操作系统的 IDE 版本。
  2. 运行安装程序,按照提示完成安装。
  3. 首次打开 IDE,可能需要选择“开发板”和“端口”(稍后讲)。

2 连接 Arduino 板

用 USB 数据线将你的 Arduino UNO 连接到电脑,电脑应该会识别它,并安装相应的驱动程序。

3 编写并上传程序(Blink)

  1. 选择开发板和端口:

    • 点击菜单栏的 工具 -> 开发板 -> Arduino Uno
    • 点击 工具 -> 端口,选择你的 Arduino 所在的 COM 端口(在 Windows 上通常是 COM3 或更高,在 macOS 上是 /dev/cu.usbmodem...)。
  2. 编写代码:

    • 打开 Arduino IDE,你会看到一个默认的模板,将里面的所有代码删除,然后复制并粘贴下面的代码:
    /*
      Blink
      Turns an LED on for one second, then off for one second, repeatedly.
    */
    // 定义 LED 引脚,我们将使用 Arduino 板上内置的 LED
    // 大多数 Arduino 板上,板载 LED 连接在数字引脚 13
    const int ledPin = 13;
    // setup() 函数在每次上电或复位时只运行一次
    void setup() {
      // 初始化数字引脚 ledPin 作为输出
      pinMode(ledPin, OUTPUT);
    }
    // loop() 函数在 setup() 执行完毕后,会无限循环地执行
    void loop() {
      // 点亮 LED (将电压设为高电平)
      digitalWrite(ledPin, HIGH);
      // 等待一秒钟 (1000 毫秒)
      delay(1000);
      // 熄灭 LED (将电压设为低电平)
      digitalWrite(ledPin, LOW);
      // 再等待一秒钟
      delay(1000);
    }
  3. 上传代码:

    • 点击工具栏上的 “上传” 按钮(一个向右的箭头)。
    • IDE 会先“编译”你的代码,然后将其上传到 Arduino 板上。
    • 如果一切顺利,你会看到 IDE 底部显示“上传成功”,并且你 Arduino 板上的 L 标签灯会开始以 1 秒的间隔闪烁!

恭喜!你已经成功运行了第一个 Arduino 程序!


第三部分:Arduino 编程语言核心

1 结构:setup()loop()

每个 Arduino 程序都包含两个核心函数:

  • void setup(): 这个函数在程序开始时只运行一次,通常用于初始化设置,比如设置引脚模式(输入/输出)、启动串口通信等。
  • void loop(): 这个函数在 setup() 运行完毕后,会无限循环地执行,这是你的程序主要逻辑所在的地方。

2 数据类型

数据类型定义了变量可以存储哪种类型的数据。

数据类型 大小 (字节) 描述 范围
void 0 表示“无类型”或“无值” -
bool 1 布尔值 truefalse
char 1 字符 -128 到 127
unsigned char 1 无符号字符 0 到 255
int 2 整数 -32,768 到 32,767
unsigned int 2 无符号整数 0 到 65,535
long 4 长整数 -2,147,483,648 到 2,147,483,647
float 4 单精度浮点数 -3.4028235E+38 到 3.4028235E+38
String - 字符串对象 -

3 变量与常量

  • 变量: 用于存储数据,其值可以在程序中改变。

    • 语法:数据类型 变量名;
    • 示例:int sensorValue;
  • 常量: 用于存储固定不变的值,一旦定义就不能修改。

    • 语法:const 数据类型 常量名 = 值;
    • 示例:const int ledPin = 13; (我们之前就用过)

4 运算符

  • 算术运算符: (加), (减), (乘), (除), (取模)
  • 比较运算符: (等于), (不等于), > (大于), < (小于), >= (大于等于), <= (小于等于)
  • 逻辑运算符: && (与), (或), (非)

5 控制结构

控制结构用于控制代码的执行流程。

  • if...else: 条件判断

    if (x > 100) {
      // x 大于 100,执行这里的代码
    } else {
      // 否则,执行这里的代码
    }
  • for: 循环执行固定次数

    // 初始化 i=0; 当 i < 10 时循环; 每次循环后 i+1
    for (int i = 0; i < 10; i++) {
      // 这段代码会执行 10 次
    }
  • while: 当条件为真时,循环执行

    while (x > 0) {
      // 只要 x 大于 0,就会一直执行
      x--;
    }

6 函数

函数是一段可以重复使用的代码块,除了 setup()loop(),Arduino 还提供了大量内置函数来操作硬件,我们将在下一部分详细讲解,你也可以自己定义函数。


第四部分:核心库函数详解

这些是 Arduino 编程中最常用、最重要的函数。

1 数字 I/O (Digital I/O)

用于控制只有“开/关”两种状态的引脚。

  • pinMode(pin, mode)

    • 作用: 设置引脚的工作模式。
    • 参数:
      • pin: 你要设置的引脚号(如 2, 3, 13)。
      • mode: 模式,可以是 INPUT(输入)或 OUTPUT(输出)。
    • 示例: pinMode(13, OUTPUT);
  • digitalWrite(pin, value)

    • 作用: 向一个设置为输出的引脚写入高电平或低电平。
    • 参数:
      • pin: 引脚号。
      • value: 值,可以是 HIGH(高电平,约 5V)或 LOW(低电平, 0V)。
    • 示例: digitalWrite(13, HIGH);
  • digitalRead(pin)

    • 作用: 读取一个设置为输入的引脚的状态。
    • 参数:
      • pin: 引脚号。
    • 返回值: HIGHLOW
    • 示例: int buttonState = digitalRead(2);

2 模拟 I/O (Analog I/O)

用于处理连续变化的信号,如亮度、温度、声音等。

  • analogWrite(pin, value)

    • 作用: 向一个设置为输出的引脚写入一个模拟值(PWM 信号)。
    • 注意: 只有标记了 的引脚(如 UNO 上的 ~3, ~5, ~6, ~9, ~10, ~11)才能使用此函数。
    • 参数:
      • pin: 引脚号。
      • value: 一个 0 到 255 之间的整数,0 对应 0V,255 对应 5V。
    • 示例: analogWrite(9, 128); // 在引脚 9 上输出 2.5V
  • analogRead(pin)

    • 作用: 从一个模拟输入引脚读取一个模拟值。
    • 注意: Arduino UNO 有 6 个模拟输入引脚(A0 到 A5)。
    • 参数:
      • pin: 引脚号(A0 到 A5)。
    • 返回值: 一个 0 到 1023 之间的整数,0 对应 0V,1023 对应 5V。
    • 示例: int sensorValue = analogRead(A0);

3 时间函数

  • delay(ms)

    • 作用: 暂停程序的执行指定的毫秒数。
    • 参数: ms (毫秒)。
    • 示例: delay(1000); // 暂停 1 秒
    • 注意: 在 delay 期间,Arduino 什么都做不了,程序被“阻塞”了。
  • millis()

    • 作用: 返回 Arduino 板开始运行当前程序以来的毫秒数。

    • 返回值: unsigned long 类型的毫秒数。

    • 用途: 这是一个非常重要的非阻塞式计时方法,你可以用它来创建不使用 delay 的定时器。

    • 示例:

      unsigned long previousMillis = 0;
      const long interval = 1000; // 间隔 1 秒
      void loop() {
        unsigned long currentMillis = millis();
        if (currentMillis - previousMillis >= interval) {
          previousMillis = currentMillis;
          // 执行需要每隔一秒执行一次的操作
          digitalWrite(13, !digitalRead(13)); // 切换 LED 状态
        }
        // 在这里可以添加其他不会阻塞的代码
      }

4 Serial 通信

用于在 Arduino 和电脑之间发送和接收数据,是调试程序的神器。

  • Serial.begin(speed)

    • 作用: 启动串口通信。
    • 参数: speed (波特率),常用的有 9600, 115200必须保证电脑端和 Arduino 端的波特率一致!
    • 示例: Serial.begin(9600); // 通常放在 setup() 里
  • Serial.print(data)

    • 作用: 向电脑发送数据,数据发送后不换行。
    • 示例: Serial.print("Hello, ");
  • Serial.println(data)

    • 作用: 向电脑发送数据,并在末尾添加一个换行符(\n),这会让数据显示在不同的行上,非常方便。
    • 示例: Serial.println("World!");
  • Serial.available()

    • 作用: 检查串口缓冲区中是否有可读取的数据,如果有,返回大于 0 的数;否则返回 0。
    • 用途: 通常在 loop() 中使用,判断是否收到了电脑发来的指令。
  • Serial.read()

    • 作用: 读取串口缓冲区中的一个字节(一个字符)。
    • 返回值: 读取到的字符,如果缓冲区为空则返回 -1。

第五部分:实战项目

项目1:呼吸灯

目标: 让 LED 的亮度像呼吸一样平滑地渐亮再渐暗。

硬件:

  • Arduino UNO
  • LED
  • 220Ω 电阻
  • 面包板和跳线

接线:

  • LED 长脚(阳极) -> 电阻 -> Arduino 数字引脚 9
  • LED 短脚(阴极) -> Arduino GND

代码:

// 定义 LED 引脚
const int ledPin = 9; // 必须是支持 PWM 的引脚
void setup() {
  // 设置 ledPin 为输出
  pinMode(ledPin, OUTPUT);
}
void loop() {
  // 渐亮
  for (int brightness = 0; brightness <= 255; brightness++) {
    analogWrite(ledPin, brightness);
    delay(10); // 控制渐变速度
  }
  // 渐暗
  for (int brightness = 255; brightness >= 0; brightness--) {
    analogWrite(ledPin, brightness);
    delay(10); // 控制渐变速度
  }
}

项目2:读取并显示光敏电阻数据

目标: 读取光敏电阻的值,并通过串口监视器显示出来。

硬件:

  • Arduino UNO
  • 光敏电阻
  • 10kΩ 电阻
  • 面包板和跳线

接线:

  • 5V -> 光敏电阻一端
  • 光敏电阻另一端 -> Arduino 模拟引脚 A0
  • A0 -> 10kΩ 电阻 -> GND
  • (这种接线方式称为“分压电路”)

代码:

// 定义模拟输入引脚
const int sensorPin = A0;
void setup() {
  // 初始化串口通信,波特率设为 9600
  Serial.begin(9600);
}
void loop() {
  // 读取传感器的值 (0-1023)
  int sensorValue = analogRead(sensorPin);
  // 通过串口输出读取到的值
  Serial.print("Sensor Value: ");
  Serial.println(sensorValue);
  // 等待一会儿,避免串口监视器刷新太快
  delay(500);
}

操作: 上传代码后,点击 Arduino IDE 右上角的 “放大镜” 图标打开串口监视器,你就能看到实时变化的光照数据了,用手遮挡光敏电阻,观察数值的变化。


第六部分:进阶学习资源

当你掌握了基础后,可以探索以下资源来继续学习:

  1. Arduino 官方网站: (https://www.arduino.cc/)

    • 官方文档: 最权威的参考手册。
    • 教程: 官方提供的各种项目教程。
    • 社区: 可以向全球的爱好者提问。
  2. GitHub - Arduino Library: (https://github.com/arduino)

    所有官方库的源代码都在这里,你可以学习它们是如何实现的。

  3. 社区和论坛:

    • Arduino 中文论坛: 国内非常活跃的 Arduino 社区。
    • Reddit (r/arduino): 国际知名的 Arduino 社区。
  4. YouTube 频道:

    • Paul McWhorter: 非常适合初学者的英文教程,讲解清晰。
    • GreatScott!: 项目导向,教你如何用 Arduino 创造有趣的东西。
    • 国内各大创客/电子 UP主: 搜索“Arduino 教程”,有大量优秀的中文视频资源。
  5. 购买更多传感器和模块:

    • 购买一个 传感器套件,里面包含了各种常见的传感器(温湿度、超声波、红外等),这是实践和提升最快的方式。

也是最重要的建议: 动手!动手!再动手! 编程和电子是实践性极强的学科,不要只看不练,哪怕只是修改一下 delay 的时间,或者换个引脚,都是一次宝贵的学习,祝你玩得开心!

分享:
扫描分享到社交APP
上一篇
下一篇