#c

Arduino 入门与编程基础

面向零基础的90分钟快速上手

#c
@魅客科创中心

CONTENTS

目录

1. 什么是 Arduino

1.1 Arduino 概述

  • 开源的电子原型平台:包含硬件开发板 + 软件开发环境。
  • 目标:让创客、学生更容易把创意变成可运行的电子作品。
  • 特点:跨平台、生态丰富、库资源多、成本低、入门门槛低。
返回目录 Arduino 入门与编程基础 魅客科创中心

1.2 可以做什么?

  • 学习编程与电子基础(LED、按键、传感器)。
  • 制作互动作品(自动浇花、智能小夜灯、电子骰子等)。
  • 打通进阶路径(物联网、机器人、嵌入式开发)。

学习路径建议:从 Blink 验证环境与基础IO开始,进阶到按钮/串口交互,再尝试读写传感器与显示屏,逐步形成“感知-处理-输出”的完整闭环。

返回目录 Arduino 入门与编程基础 魅客科创中心

2. 开发板与生态

2.1 常见开发板

  • Uno R3/R4:教学与入门首选,资料齐全。
  • Nano:体积小巧,面包板友好。
  • Mega 2560:IO丰富,适合大型项目。
  • Leonardo/Micro:原生USB HID,易做键盘/鼠标。
返回目录 Arduino 入门与编程基础 魅客科创中心

2.2 外设与扩展

  • 传感器:温湿度、光照、超声波、加速度等。
  • 扩展板/模块:电机驱动、蓝牙/WiFi、显示屏、SD卡等。
  • 生态优势:大量示例与库,快速构建原型。
返回目录 Arduino 入门与编程基础 魅客科创中心

3. 开发环境与驱动

3.1 安装 Arduino IDE

  • 从官网下载安装 Arduino IDE(1.x 或 2.x 版本均可)。
  • macOS 可能需要在系统设置中允许运行来自认证开发者的App。
返回目录 Arduino 入门与编程基础 魅客科创中心

3.2 连接与驱动

  • 使用USB线连接开发板与电脑,选择正确的开发板型号与端口。
  • 某些克隆板需要额外驱动(如CH340/CP2102)。
  • IDE 中“工具”菜单设置:开发板、端口、程序员(默认)。
返回目录 Arduino 入门与编程基础 魅客科创中心
  • 让板载LED(通常是13号引脚或LED_BUILTIN)周期性闪烁。
  • 意义:验证开发环境、编译、下载、串口、供电是否正常。
返回目录 Arduino 入门与编程基础 魅客科创中心

4.2 运行步骤

  • 打开示例:文件 -> 示例 -> 01.Basics -> Blink。
  • 选择正确开发板与端口,点击“上传”(右箭头)。
  • 观察LED闪烁(1秒亮、1秒灭)。
// 标准 Blink 示例(可直接上传运行)
const int LED_PIN = LED_BUILTIN; // 大多开发板板载LED连到此常量

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH); // 点亮
  delay(1000);                 // 保持1秒
  digitalWrite(LED_PIN, LOW);  // 熄灭
  delay(1000);                 // 保持1秒
}

小挑战:尝试把 delay(1000) 改为不同数值,观察节奏变化。

返回目录 Arduino 入门与编程基础 魅客科创中心

5. C/C++ 编程基础(Arduino风格)

5.1 程序结构

  • 两个核心函数:setup()(开机/复位后运行一次)、loop()(循环执行)。
  • 注释:// 行注释,/* ... */ 块注释。
返回目录 Arduino 入门与编程基础 魅客科创中心

5.2 变量与类型

  • 常见类型:int、long、float、bool、char、String。
  • 命名建议:有意义、驼峰命名、避免魔法数字,使用常量。
返回目录 Arduino 入门与编程基础 魅客科创中心

5.3 控制结构

  • 条件:if / else if / else。
  • 循环:for、while、do...while。
  • 延时:delay(ms);非阻塞:millis() 定时。
返回目录 Arduino 入门与编程基础 魅客科创中心

5.4 函数与库

  • 自定义函数:输入参数、返回值与作用域。
  • 使用库:通过“管理库”搜索并安装,示例代码一键运行。
返回目录 Arduino 入门与编程基础 魅客科创中心

6. 硬件基础与 IO

6.1 数字与模拟

  • 数字IO:HIGH/LOW、INPUT/OUTPUT、INPUT_PULLUP。
  • 模拟输入:analogRead(A0~),返回0~1023(10位ADC,传统AVR)。
  • PWM“模拟输出”:analogWrite(引脚, 占空比0~255)。
返回目录 Arduino 入门与编程基础 魅客科创中心

6.2 供电与引脚

  • 常见电源:5V/3.3V/USB;GND 必须共地。
  • 保护:限流电阻(如LED 220Ω)、模块工作电压匹配。
  • 引脚图:了解板载LED、串口、I2C(SDA/SCL)、SPI等位置。
返回目录 Arduino 入门与编程基础 魅客科创中心

7. 串口与调试

7.1 串口基础

  • Serial.begin(波特率) 初始化;常用9600或115200。
  • Serial.print/println 输出数据到串口监视器。
// 串口输出示例:在监视器中每秒打印一次计数
unsigned long last = 0;
unsigned long cnt = 0;

void setup(){
  Serial.begin(9600);
  // 等待串口准备(部分板型需要)
  // while(!Serial) { ; }
  Serial.println("Serial ready.");
}

void loop(){
  unsigned long now = millis();
  if(now - last >= 1000){
    last = now;
    Serial.print("seconds = ");
    Serial.println(++cnt);
  }
}

提示:打开“串口监视器”,波特率选择与 Serial.begin 保持一致。

返回目录 Arduino 入门与编程基础 魅客科创中心

7.2 调试技巧

  • 关键变量打印、分段定位问题。
  • 使用延时/标记文本观察程序流。
  • 注意:频繁打印会影响时序,必要时降低频率。
返回目录 Arduino 入门与编程基础 魅客科创中心

8. 实践1:LED 闪烁(巩固)

8.1 目标与材料

  • 目标:通过代码控制外接LED按指定节奏闪烁。
  • 材料:Arduino Uno、LED、220Ω电阻、面包板、若干杜邦线。
返回目录 Arduino 入门与编程基础 魅客科创中心

8.2 接线

  • LED 长脚(阳极) -> 电阻 -> 数字引脚 8。
  • LED 短脚(阴极) -> GND。
返回目录 Arduino 入门与编程基础 魅客科创中心

8.3 代码提示

  • 使用 pinMode(8, OUTPUT)、digitalWrite(8, HIGH/LOW)、delay(ms)。
  • 试着改变间隔实现“SOS”闪烁节奏。
// 外接LED闪烁:引脚8,串联220Ω到LED阳极,阴极接GND
const int LED_PIN = 8;

void setup(){
  pinMode(LED_PIN, OUTPUT);
}

void dot(){ digitalWrite(LED_PIN, HIGH); delay(200); digitalWrite(LED_PIN, LOW); delay(200); }
void dash(){ digitalWrite(LED_PIN, HIGH); delay(600); digitalWrite(LED_PIN, LOW); delay(200); }

void loop(){
  // S (···)
  dot(); dot(); dot();
  delay(400);
  // O (———)
  dash(); dash(); dash();
  delay(400);
  // S (···)
  dot(); dot(); dot();
  // 字之间间隔
  delay(1000);
}

进阶:用 millis() 重写为非阻塞闪烁逻辑。

返回目录 Arduino 入门与编程基础 魅客科创中心

9. 实践2:按键控制 LED

9.1 目标与材料

  • 目标:按下按钮点亮LED,松开熄灭;进阶:按一下切换状态。
  • 材料:按钮、10kΩ上拉/下拉电阻(或使用INPUT_PULLUP)。
返回目录 Arduino 入门与编程基础 魅客科创中心

9.2 接线方案A(外部电阻)

  • 按键一端 -> 5V;另一端 -> 数字引脚 7 与 10kΩ -> GND。
  • LED 与 220Ω 串联 -> 数字引脚 8;LED 另一端 -> GND。
返回目录 Arduino 入门与编程基础 魅客科创中心

9.3 接线方案B(内置上拉)

  • pinMode(7, INPUT_PULLUP);按键一端 -> 引脚7;另一端 -> GND。
  • 读取值取反:按下为LOW,松开为HIGH。
返回目录 Arduino 入门与编程基础 魅客科创中心

9.4 去抖动与状态机

  • 软件去抖:检测变化后延时10~50ms再确认。
  • 状态切换:按下沿触发,使用变量保存LED当前状态。
// 按一下切换LED状态(带简单去抖),按钮接7脚,使用内置上拉
const int BTN_PIN = 7;
const int LED_PIN = 8;

bool ledOn = false;
int lastStable = HIGH;          // 使用 INPUT_PULLUP,未按下为HIGH
unsigned long lastChange = 0;
const unsigned long debounce = 30; // 去抖时间(ms)

void setup(){
  pinMode(BTN_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, ledOn ? HIGH : LOW);
}

void loop(){
  int reading = digitalRead(BTN_PIN);
  if(reading != lastStable){
    // 可能发生了状态变化,开始计时
    if(millis() - lastChange > debounce){
      lastChange = millis();
      lastStable = reading;
      if(lastStable == LOW){
        // 检测到按下沿,切换LED状态
        ledOn = !ledOn;
        digitalWrite(LED_PIN, ledOn ? HIGH : LOW);
      }
    }
  }
}

提示:若按钮接线为下拉到GND且另一端到5V,请相应修改输入模式与逻辑。

返回目录 Arduino 入门与编程基础 魅客科创中心

10. 常见错误与排查

10.1 连接与供电

  • USB线故障/仅充电不传数据;端口选择错误。
  • GND未共地、LED极性接反、无限流电阻导致烧毁风险。
返回目录 Arduino 入门与编程基础 魅客科创中心

10.2 编译与上传

  • 开发板/端口选择错误;库未安装或重名冲突。
  • 正在占用串口监视器导致上传失败(先关闭监视器)。
返回目录 Arduino 入门与编程基础 魅客科创中心

10.3 逻辑与时序

  • 阻塞式delay导致按钮不灵敏;用millis()改写为非阻塞。
  • 浮空输入抖动:使用上拉/下拉或INPUT_PULLUP。
返回目录 Arduino 入门与编程基础 魅客科创中心

11. 作业与拓展

11.1 课堂作业(任选其一或全部)

  • 用millis()实现非阻塞节拍器LED(快/慢档切换)。
  • 实现“按一下切换LED状态”,加入去抖动。
  • 把按钮状态通过Serial打印,并统计按压次数。
返回目录 Arduino 入门与编程基础 魅客科创中心

11.2 拓展方向

  • 连接光敏电阻,做自动夜灯(阈值判断)。
  • 使用蜂鸣器播放提示音(tone/noTone)。
  • 下一讲:使用1602 LCD 显示(参考同目录LCD讲义)。
返回目录 Arduino 入门与编程基础 魅客科创中心

12. 总结

12.1 本讲收获

  • 了解 Arduino 平台与常见板型,完成环境安装与Blink。
  • 掌握基本的C/C++语法与Arduino API(数字/模拟IO、串口)。
  • 独立完成两个基础实战,具备继续学习的信心与路径。
返回目录 Arduino 入门与编程基础 魅客科创中心

12.2 下次预告

  • 传感器数据采集与滤波入门。
  • 使用显示屏进行人机交互(1602/OLED)。

附:时间建议(90分钟)

  • 开场与认知(10min):1~2章。
  • 环境+Blink(15min):3~4章,演示+确认每人可上传。
  • 语法与IO(20min):5~6章,边讲边改Blink参数。
  • 串口与调试(10min):7章,快速定位问题。
  • 实践1(15min):8章,助教巡场。
  • 实践2(15min):9章,完成去抖与状态切换。
  • 排错与作业(5min):10~11章,布置作业与答疑。
返回目录 Arduino 入门与编程基础 魅客科创中心

演讲者备注: * 面向零基础/弱基础学生,目标是在90分钟内建立整体认知并完成2个基础实践。 * 结构:概念 -> 环境 -> 第一个程序 -> 编程基础 -> 硬件IO -> 串口 -> 实践1/2 -> 排错 -> 总结与作业。 * 控制节奏:每个章节3-10分钟,动手环节预留更多时间。