Arduino Uno 基础教程:从零开始学习 – wiki基地

Arduino Uno 基础教程:从零开始学习


引言

欢迎来到令人兴奋的 Arduino 世界!如果你对电子制作、编程以及创造互动装置充满好奇,那么 Arduino Uno 是你开启这段旅程的完美起点。本教程旨在为完全没有基础的初学者提供一份详尽的指南,从认识 Arduino Uno 开始,逐步学习如何搭建电路、编写代码,并最终完成你的第一个互动项目。


第一章:了解 Arduino Uno

什么是 Arduino?

Arduino 是一个开源的电子原型平台,它包括一块易于使用的硬件电路板(微控制器)和一套用于编写代码的软件(IDE)。它的设计理念是让艺术家、设计师、业余爱好者和任何感兴趣的人都能轻松地创建交互式项目。

为什么选择 Arduino Uno?

Arduino Uno 是 Arduino 系列中最经典、最受欢迎的型号之一。它功能强大、价格实惠、资料丰富、社区活跃,是初学者入门的首选。它的名字“Uno”在意大利语中意为“一”,象征着它是 Arduino 系列的初代产品。

Arduino Uno 板载组件一览

Arduino Uno Board Layout Example
(请注意:此图片仅为示意,实际布局可能略有差异)

  1. USB 接口 (USB Port): 用于连接电脑,为 Arduino 供电并上传程序。
  2. 电源接口 (Power Jack): 当不连接电脑时,可外接 7-12V 的直流电源为 Arduino 供电。
  3. 复位按钮 (Reset Button): 重启 Arduino 板上的程序。
  4. 数字引脚 (Digital Pins 0-13): 可配置为输入或输出,用于控制 LED、读取按钮状态等。带有波浪线 (~) 的引脚 (3, 5, 6, 9, 10, 11) 支持 PWM (脉冲宽度调制),可用于模拟输出效果(如 LED 亮度调节)。
  5. 模拟引脚 (Analog Pins A0-A5): 主要用于读取模拟信号,如传感器(光敏电阻、温度传感器)的输出。
  6. 微控制器 (Microcontroller – ATmega328P): Arduino 的“大脑”,负责执行你上传的程序。
  7. 电源引脚 (Power Pins): 提供 3.3V, 5V 电压输出、GND (地线) 和 Vin (外部供电输入)。
  8. ICSP 引脚 (In-Circuit Serial Programming): 用于直接对微控制器进行编程。
  9. LED 指示灯:
    • TX/RX: 数据传输指示灯。
    • L: 连接到数字引脚 13 的板载 LED,可用于测试。
    • ON: 电源指示灯。

技术规格概览

  • 微控制器: ATmega328P
  • 工作电压: 5V
  • 输入电压 (推荐): 7-12V
  • 数字 I/O 引脚: 14 (其中 6 个支持 PWM 输出)
  • 模拟输入引脚: 6
  • DC 数字 I/O 引脚电流: 20 mA
  • DC 3.3V 引脚电流: 50 mA
  • 闪存 (Flash Memory): 32 KB (ATmega328P), 其中 0.5 KB 用于引导加载程序 (bootloader)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • 时钟速度: 16 MHz

第二章:准备你的工作环境

在开始编程之前,我们需要安装 Arduino IDE(集成开发环境)。

1. 下载和安装 Arduino IDE

访问 Arduino 官方网站:https://www.arduino.cc/en/software
根据你的操作系统(Windows, macOS, Linux)下载最新版本的 Arduino IDE。下载后,按照提示进行安装。

2. 安装驱动程序

  • Windows 用户: 通常,当你第一次将 Arduino Uno 连接到电脑时,系统会自动安装驱动程序。如果没有自动安装或安装失败,你可以在 Arduino IDE 的安装目录下找到 drivers 文件夹,手动运行里面的安装程序。
  • macOS / Linux 用户: 大多数情况下无需额外安装驱动。

3. 连接 Arduino Uno

用 USB 数据线将 Arduino Uno 连接到你的电脑。连接成功后,Arduino Uno 板上的绿色“ON”指示灯会亮起。

4. 配置 Arduino IDE

打开 Arduino IDE,进行以下设置:

  • 选择开发板:
    • 点击菜单栏的 工具 (Tools) -> 开发板 (Board)
    • 在列表中选择 Arduino AVR Boards -> Arduino Uno
  • 选择端口:
    • 点击菜单栏的 工具 (Tools) -> 端口 (Port)
    • 选择与 Arduino Uno 对应的串口。在 Windows 系统中通常显示为 COMX (X是一个数字),在 macOS 和 Linux 中通常是 /dev/cu.usbmodemXXXX/dev/ttyUSBX。如果只有一个新出现的端口,那很可能就是它。

第三章:第一个项目:LED 闪烁 (Blink)

这是所有微控制器入门教程的“Hello World”项目。它将点亮一个 LED,等待一秒,然后熄灭,再等待一秒,如此循环。

所需组件

  • Arduino Uno 板 x1
  • 面包板 (可选,但推荐) x1
  • LED (发光二极管) x1 (任何颜色都可以)
  • 220Ω 电阻 x1 (或 150Ω – 330Ω 之间,用于限流保护 LED)
  • 杜邦线 (Jump Wires) x2

电路连接

LED 有长短两根引脚。长引脚是正极 (阳极),短引脚是负极 (阴极)。电流应从长引脚流入,短引脚流出。电阻器没有正负极之分。

  1. 将电阻器的一端连接到 Arduino Uno 的数字引脚 13
  2. 将电阻器的另一端连接到 LED 的长引脚 (阳极)。
  3. 将 LED 的短引脚 (阴极) 连接到 Arduino Uno 的 GND (地线) 引脚。

如果你使用面包板,连接会更整洁方便:
* 数字引脚 13 -> 杜邦线 -> 面包板任意孔
* 面包板同排孔 -> 电阻 -> 面包板另一排孔
* 面包板同排孔 -> LED 长引脚
* LED 短引脚 -> 杜邦线 -> 面包板任意孔
* 面包板同排孔 -> 杜邦线 -> Arduino Uno 的 GND 引脚

编写代码 (Sketch)

Arduino 程序被称为“Sketch”。每个 Sketch 至少包含两个基本函数:setup()loop()

  • setup(): 这个函数在 Arduino 板启动时执行一次,通常用于初始化引脚模式、串口通信等。
  • loop(): 这个函数在 setup() 执行完后无限循环执行,是程序的主体部分。

将以下代码复制粘贴到 Arduino IDE 中:

“`cpp
// 定义 LED 连接的引脚
const int ledPin = 13; // 将板载LED连接到数字引脚13

void setup() {
// 初始化数字引脚13为输出模式。
pinMode(ledPin, OUTPUT);
}

// loop 函数将无限循环运行
void loop() {
digitalWrite(ledPin, HIGH); // 将引脚13设置为高电平(打开 LED)
delay(1000); // 暂停 1000 毫秒(1秒)
digitalWrite(ledPin, LOW); // 将引脚13设置为低电平(关闭 LED)
delay(1000); // 暂停 1000 毫秒(1秒)
}
“`

代码解释

  • const int ledPin = 13;: 声明一个常量整数变量 ledPin 并赋值为 13。这使得代码更易读,你可以通过 ledPin 来指代引脚 13。
  • pinMode(ledPin, OUTPUT);: pinMode() 函数用于设置特定引脚的工作模式。ledPin (即引脚 13) 被设置为 OUTPUT(输出模式),意味着我们将通过它来控制输出电压。
  • digitalWrite(ledPin, HIGH);: digitalWrite() 函数用于向数字引脚写入高电平或低电平。HIGH 表示 5V 电压,这将点亮 LED。
  • delay(1000);: delay() 函数会暂停程序的执行指定毫秒数。1000 毫秒等于 1 秒。
  • digitalWrite(ledPin, LOW);: LOW 表示 0V 电压,这将关闭 LED。

上传代码

  1. 点击 Arduino IDE 左上角的“对勾”图标 (Verify) 来编译代码,检查是否有语法错误。
  2. 编译成功后,点击右侧的“右箭头”图标 (Upload) 将代码上传到 Arduino Uno。
  3. 上传过程中,TX/RX 指示灯会闪烁。上传成功后,你将看到 LED 开始以一秒的间隔闪烁。

第四章:理解基础编程概念

在 Arduino 编程 (基于 C/C++) 中,有一些核心概念需要掌握:

1. 变量和数据类型

变量是用于存储数据的命名存储位置。数据类型定义了变量可以存储的数据种类。

  • int: 存储整数 (如 1, 100, -5)。
  • float: 存储浮点数 (带小数点的数字,如 3.14, -0.5)。
  • char: 存储单个字符 (如 'A', 'z')。
  • boolean: 存储布尔值 (truefalse)。
  • long: 存储更大的整数。
  • byte: 存储 0 到 255 之间的无符号整数。

示例:
cpp
int sensorValue = 0;
float temperature = 25.5;
bool isActive = true;

2. 控制结构

控制结构决定了程序的执行流程。

  • 条件语句 (if/else): 根据条件执行不同的代码块。
    cpp
    if (sensorValue > 500) {
    // 执行某些操作
    } else {
    // 执行其他操作
    }
  • 循环语句 (for, while): 重复执行一段代码。
    “`cpp
    // for 循环:从 0 到 9 循环 10 次
    for (int i = 0; i < 10; i++) {
    // …
    }

    // while 循环:当条件为真时持续循环
    while (digitalRead(buttonPin) == LOW) {
    // …
    }
    “`

3. 函数

函数是一段可重复使用的代码,用于执行特定任务。setup()loop() 就是两个特殊的函数。

自定义函数示例:
“`cpp
void turnOnLED(int pinNumber) {
digitalWrite(pinNumber, HIGH);
delay(500);
}

void loop() {
turnOnLED(13);
turnOnLED(12);
}
“`

4. 数字 I/O 与模拟 I/O

  • 数字 I/O (Digital Input/Output): 处理离散信号,只有两种状态:HIGH (高电平,通常为 5V) 或 LOW (低电平,通常为 0V)。适用于开关、LED、蜂鸣器等。
    • digitalRead(pin): 读取数字引脚的状态。
    • digitalWrite(pin, state): 向数字引脚写入高或低电平。
  • 模拟 I/O (Analog Input/Output): 处理连续变化的信号。
    • analogRead(pin): 读取模拟引脚的电压值 (0-5V 对应 0-1023)。适用于光敏电阻、电位器、温度传感器等。
    • analogWrite(pin, value): 通过 PWM 方式模拟输出电压 (0-255)。适用于 LED 亮度调节、电机速度控制等 (仅限 PWM 引脚)。

第五章:进阶项目示例 (简述)

掌握了基础知识后,你可以尝试更多有趣的 Arduino 项目:

  1. 读取模拟输入 – 电位器控制 LED 亮度: 连接一个电位器到模拟引脚,读取其旋转角度,然后用 analogWrite() 控制 LED 亮度。
  2. 控制舵机 (Servo Motor): 使用 Servo 库,通过数字引脚控制舵机的角度,实现精确的位置控制。
  3. 使用光敏电阻检测光线: 连接一个光敏电阻到模拟引脚,读取环境光强度,并根据光照变化做相应动作。
  4. LCD 液晶显示屏: 连接一个字符型 LCD 显示屏,在上面显示文字、传感器读数等信息。
  5. 按钮控制: 连接一个按钮到数字引脚,通过 digitalRead() 检测按钮按下状态,控制其他组件。

第六章:常见问题与故障排除

在学习过程中,你可能会遇到一些问题,以下是常见的一些情况及其解决方案:

  • Arduino IDE 无法上传程序 / 提示“Board at COMx is not available”:
    • 确保已正确选择开发板 (Arduino Uno) 和端口 (COMx)。
    • 检查 USB 数据线是否连接牢固,尝试更换数据线或 USB 端口。
    • 驱动程序可能未正确安装,请尝试重新安装驱动。
    • 其他程序(如串口助手)可能占用了串口,请关闭它们。
  • LED 不亮或亮度很低:
    • 检查 LED 的正负极是否接反。
    • 检查电阻值是否过大,220Ω 是一个比较安全的常用值。
    • 检查所有连接线是否牢固,是否有虚接。
    • 确认代码中 digitalWrite(ledPin, HIGH); 是否正确执行。
  • 程序上传成功,但 Arduino 没有按预期工作:
    • 仔细检查电路连接,确保与你的代码逻辑一致。
    • 检查代码是否存在逻辑错误,使用 Serial.print() 在串口监视器中打印变量值,帮助调试。
    • 确认传感器或执行器(如电机)的供电是否正确、充足。

使用串口监视器 (Serial Monitor) 调试

Arduino IDE 内置了一个非常强大的调试工具——串口监视器。它允许你的 Arduino 板通过 USB 线与电脑进行串口通信,在电脑上显示信息,这对于查看传感器读数、变量值等非常有用。

  1. setup() 函数中添加 Serial.begin(9600); 来初始化串口通信 (9600 是波特率,通信速度)。
  2. 在程序中需要输出信息的地方,使用 Serial.print("Hello, World!");Serial.println(variableName);
  3. 上传代码后,点击 Arduino IDE 右上角的“放大镜”图标打开串口监视器。

结语

恭喜你完成了 Arduino Uno 的入门学习!你已经掌握了连接硬件、编写代码和上传程序的初步技能。这仅仅是一个开始,Arduino 的世界充满了无限可能。

下一步:

  • 尝试更多官方示例: Arduino IDE 提供了大量内置示例 (文件 (File) -> 示例 (Examples)),涵盖了各种传感器和执行器。
  • 探索传感器和模块: 购买一些常见的传感器模块(如超声波传感器、蜂鸣器、温湿度传感器)并尝试与 Arduino 连接。
  • 加入社区: 访问 Arduino 官方论坛、中文社区或在线学习平台,与其他爱好者交流,获取帮助和灵感。
  • 学习 C/C++ 基础: 如果你对编程更感兴趣,深入学习 C/C++ 语言的基础知识将非常有帮助。

祝你在 Arduino 的创意之旅中玩得开心!

滚动至顶部