Arduino 是什么?从零开始的新手入门指南

Kartun papan Arduino Uno biru bersambung ke breadboard putih dengan LED merah 5 mm menyala dan perintang biru, dikelilingi ikon kipas putih, mentol kuning, motor DC kelabu dan sensor biru muda

Arduino 是一块小小的电路板,上面有一颗微控制器芯片;只要板子一通电,那颗芯片就只跑你写的那一个程序,一遍又一遍。它不是迷你电脑 — 没有屏幕,没有 Windows,也没有文件。它的工作只有一件:读进来的信号、做判断、把引脚上的电压打开或关掉。

这篇从零回答“Arduino 是什么”这个问题:这块板能做什么、不能做什么,是不是要先会写程序,入门套件里装的是什么,还有第一个星期该动手的第一个项目。

Arduino 到底是什么,跟一般电脑差在哪里?

Arduino Uno 这块板是围绕一颗 ATmega328P 芯片做出来的,那是一颗微控制器,不是电脑里的那种处理器。差别不在体积,也不在速度 — 差别在于那颗芯片要顾的事情有多少。

卡通对比图 - 左边是灰色笔记本电脑,屏幕上叠着好几个彩色窗口和一个加载圆圈;右边是蓝色 Arduino Uno 板,被一圈藏青色箭头绕着,依次经过浅蓝色传感器、判断图形和红色 LED
笔记本电脑要把时间分给很多个程序;Arduino Uno 只是把读、判断、输出这一个循环重复到永远。

你的笔记本电脑跑的是操作系统。此刻哪一个程序拿到 CPU 时间,是操作系统在决定,而这个决定每一毫秒都在变,取决于当下还有什么在跑。要同时开十个浏览器分页,这样很好;但也意味着没有人能保证某一条指令到底在哪一刻真的发生。

Uno 则完全没有操作系统。你的程序会被上传成机器码,写进那颗芯片 32 KB 的 flash 存储器里,而板子里就只有这一份代码。没有调度器,也没有别的进程在排队;所以当你的某一行代码叫引脚 13 升到 5 V,那个引脚会在几微秒内升上去,没有任何东西能插队打断它。

由此带出两个很实际的结果。第一,这块板几乎是一通电就活:它跑在 16 MHz,也没有系统要先加载,所以通电不到一秒,你的程序就已经在跑。第二,它不会被“死机”弄坏。你自己写的代码当然还是可能卡在一个出不来的循环里 — 但按一下 reset 键,或者拔掉电源再插回去,板子就从第一行重新开始,因为它没有文件,也没有会写到一半的系统状态留下来。

项目 Arduino Uno 一般电脑
同时跑的程序 一个,永远 很多个,由操作系统调度
操作系统 没有
从通电到程序开始跑 不到一秒 几十秒
工作内存 2 KB SRAM 数十亿字节
直接输出电压的引脚 14 个数字引脚,5 V 没有
断电的时候 干干净净重新开始 文件可能损坏

这就是为什么交通灯、洗衣机和遥控装置用的是微控制器,而不是电脑。不是因为电脑太弱 — 是因为电脑太忙。

Arduino 能做什么,又有什么是它做不到的?

Arduino Uno 是拿来控制东西的;它不是拿来处理大量数据的。它的十四个数字引脚可以在 5 V 上开和关,其中六个能输出 PWM 信号,用来把灯调暗或调马达转速,另外六个模拟引脚则负责读会连续变化的电压,例如光敏传感器的输出(Arduino UNO R3 官方规格)。

它的限制有两个,两个都是数字。第一个是电流,而设计时该拿来用的数字并不是 40 mA。40 mA 是 ATmega328P 芯片的绝对最大值 — 是“绝对不可以超过”的红线,不是目标(Microchip 数据手册)。Arduino 建议的工作数字是每个引脚 20 mA(UNO Rev3 官方规格),而所有引脚加起来不能超过 200 mA,那是芯片本身 VCC 和 GND 引脚的上限。一颗 5 mm 红色 LED 经过 220 Ω 电阻,大约拉 (5 − 2) ÷ 220 = 0.0136 A,也就是 13.6 mA — 舒舒服服待在 20 mA 以下,三颗 LED 一起亮也才 41 mA,离 200 mA 的总预算还很远。小型直流马达一拉就是几百 mA,所以它一定要经过驱动模块或继电器;直接接到引脚上,先烧掉的就是那个引脚。

第二个是工作内存:2 KB SRAM,是程序跑的时候每一个变量待的地方。这够放几十笔传感器读数和几句文字,但不够放图片、影片或长长的列表 — 这正是 Uno 不做人脸识别、也不放歌的原因。

Uno 适合做这些 Uno 不适合做这些
按时间或条件开关灯、蜂鸣器和继电器 处理图片或影片
读温度、光线、距离、按钮和电位器 存放文件或数据库
通过驱动模块控制马达转速和舵机角度 直接从引脚驱动马达
必须立刻反应、绝不能被拖住的装置 不加额外模块就连上 Wi-Fi

Uno 里面也没有 Wi-Fi 电台。如果你脑子里想的项目要把数据送到手机上,买之前先读一读 ESP32、ESP8266 和 Arduino Uno 的分别

从零开始需要的全部东西

ItemPriceQty
Arduino Uno Compatible SMD UNO R3 with Type B Cable - ATMEGA328P with CH340G-Microcontroller ProjectArduino Uno Compatible SMD UNO R3 with Type B Cable - ATMEGA328P with CH340G-Microcontroller ProjectUNOCH34RM22.90
MB102 Breadboard 170 400 830 Holes Breadboard Donut Board Arduino Prototype Multi Color - BREADBOARD (400 HOLES)MB102 Breadboard 170 400 830 Holes Breadboard Donut Board Arduino Prototype Multi Color - BREADBOARD (400 HOLES)BRB400HRM2.90
40pcs Dupont Wire 10cm 20cm 30cm for Breadboard DIY Experiment Jumper Wire Breadboard wire - DUPONT WIRE M-M 20CM40pcs Dupont Wire 10cm 20cm 30cm for Breadboard DIY Experiment Jumper Wire Breadboard wire - DUPONT WIRE M-M 20CMDPWMM20RM3.50
Round Head LED 3mm / 5mm / 8mm - Red/Yellow/Blue/Green/White - 5mm LED (RED)Round Head LED 3mm / 5mm / 8mm - Red/Yellow/Blue/Green/White - 5mm LED (RED)5REDLEDRM0.10
400 pcs 1/4W Resistor Pack Resistor Kit 20 Common Value with 20 each400 pcs 1/4W Resistor Pack Resistor Kit 20 Common Value with 20 each400RPACRM7.95缺货

这块 Uno 板用 USB Type B 数据线接电脑,就是桌面打印机那种方方的接头。公对公(M-M)杜邦线两头都合用:Uno 板上的排针是已经焊好的母座,而面包板收的是公头针。

可选:现成盒装

ItemPriceQty
Electronic Component Set Beginner Electrical Learning Kit For Arduino Beginner Learning - STARTER KIT WITH UNO R3Electronic Component Set Beginner Electrical Learning Kit For Arduino Beginner Learning - STARTER KIT WITH UNO R3ELECTU3RM59.80
37 in 1 Sensors & Electronic Set Beginner Sensor Learning Kit 37in1 For Arduino Beginner37 in 1 Sensors & Electronic Set Beginner Sensor Learning Kit 37in1 For Arduino Beginner37SESETRM62.95

ELECTU3 是元件连同一块 UNO R3 板装在一个盒子里。37SESET 是 37 款传感器的套装,留给第一颗 LED 亮起来之后的第二个星期和往后。

用 Arduino 之前,一定要先会写程序吗?

不用 — 最主要的原因是,每一个 Arduino 程序的骨架都长得一样,所以你可以一眼把整副骨架看完。下面就是 Blink,所有人的第一个程序 — Arduino 把一个程序叫做 sketch。它让 Uno 板上那颗印着“L”的 LED 闪烁,所以一个外部元件都不用接就能跑起来。

// Blink - 每个学 Arduino 的人的第一个程序。
// Uno 板上那颗印着 "L" 的 LED 接在引脚 13,
// 所以这个 sketch 不接任何外部元件也能跑。

const int PIN_LED = 13;   // 外接 LED 如果在别的引脚,改这个数字

void setup() {
  // setup() 只跑一次,就在板子通电或按下 reset 之后。
  pinMode(PIN_LED, OUTPUT);   // 引脚 13 设成输出(把电压往外送)
}

void loop() {
  // loop() 只要板子还有电,就无止境地重复。
  digitalWrite(PIN_LED, HIGH);   // 引脚 13 上 5 V - LED 亮
  delay(1000);                   // 等 1000 毫秒 = 1 秒
  digitalWrite(PIN_LED, LOW);    // 引脚 13 上 0 V - LED 灭
  delay(1000);                   // 再等 1 秒,然后重复
}

这两个函数,就是你日后会碰到的每一个 Arduino sketch 的全部骨架。setup() 在板子通电或按下 reset 键时只跑一次,你就在那里告诉板子哪些引脚要当输出。loop() 接在后面跑,而且永远重复:最后一行跑完,它就直接回到第一行。这就是上面那张图里画的同一个循环。

剩下的只有三种指令。pinMode 决定引脚的角色,digitalWrite 把它的电压在 5 V 和 0 V 之间切换,而 delay 以毫秒为单位等待。把两个 1000 都改成 100,LED 就闪快十倍 — 这才是大家真正学会 Arduino 的方式:拿一个现成的 sketch,改一个数字,看看会发生什么。

上面这个 sketch 用掉 Uno 32,256 字节程序空间里的 924 字节 — 全板的 2%,所以还有很多空间让你实验,也让你出错。

Arduino 入门套件里有什么,从零开始要花多少钱?

Arduino 入门套件就是一个盒子,里面装着板子、面包板、线,还有一堆 LED、电阻、按钮这类小元件。但它不是唯一的入口。

两条路线的卡通对比图 - 左边是分开摆着的蓝色 Arduino Uno 板、白色面包板、彩虹色杜邦线、三颗红色 LED 和一条蓝色电阻排;右边是装满元件的透明塑料盒,一块蓝色 Uno 板靠在盒边
两条路通往同一个地方:需要什么就分开买元件,或者拿一个连板子一起的现成盒装。

第一条路是分开买元件,上面那份零件清单走的就是这条路。UNOCH34 这块板用 USB Type B 数据线接电脑,就是桌面打印机那种方方的线,多数人家里抽屉就有一条。再加一块 400 孔面包板、一包 公对公杜邦线、几颗 5 mm 红色 LED 和一包 电阻,第一个星期要用的就齐了。

如果接头的公母让你搞不清楚,杜邦跳线的种类这一篇一次讲清楚,往后每一个项目都用得上。

第二条路是现成盒装。ELECTU3 把元件和一块 UNO R3 板一起带上,而 ELECTRK 是同一个元件盒但不含板子 — 如果你已经有 Uno,却想要电阻、LED、线和 830 孔面包板装在一个分格盒里,它就派得上用场。

第一个星期,什么样的 Arduino 项目才实际?

Arduino Uno 的第一个项目不是机器人 — 是一颗 LED,因为后面每一个更大的项目,都是由同样这三项本事搭起来的:选引脚、限电流,还有读懂自己写的那个循环。

白色面包板的卡通特写 - 一颗亮着的 5 mm 红色 LED 和一颗蓝色电阻,用红色和黑色杜邦线接到蓝色 Arduino Uno 板,板上插着灰色 USB Type B 数据线
板子以外的第一颗 LED:串联电阻负责限流,而 LED 的长脚朝向那个由你的代码控制的引脚。
第几天 做什么 需要什么
1 上传 Blink,让板上那颗“L” LED 闪起来 只要板子和一条 USB Type B 数据线
2–3 面包板上的第一颗红色 LED 面包板、1 颗 LED、1 个电阻、2 条线
4–5 三颗 LED 依次闪 3 颗 LED、3 个电阻、4 条线
6–7 用 PWM 引脚上的 analogWrite 让灯慢慢变暗、慢慢变亮 同一个电路,换到引脚 9

第一天需要的是板子、一条 USB Type B 数据线,再加一个免费软件:Arduino IDE,sketch 就在那里写,也从那里送进板子。Blink 本来就在里面 — 打开 File → Examples → 01.Basics → Blink,所以第一天连一个字都不用打。这里推荐的这块板用的是 CH340G USB 芯片,所以电脑要先装一个小驱动,装一次就好,COM 口才会出现;这一步在 Arduino Nano V3 与 CH340 驱动那一篇里讲得很完整,而这块 Uno 的步骤一模一样,因为它用的是同一颗 USB 芯片。如果你实在不想装任何驱动,UNO16U2 这个版本用的是 ATmega16U2 USB 芯片,现代 Windows 自己就认得它。

第二天要接板子外面的 LED,串联电阻就不是可选项了。LED 不会自己限制流过它的电流:过了大约 2 V 之后,就算电流一路飙上去,它两端的电压也几乎不再往上走 — 它体内没有任何东西在拦电流。直接接到 5 V,电流就会一直涨到烧掉某样东西为止,通常先烧的是那颗 LED;真正把电流定下来的,是那个串联电阻。220 Ω 电阻给出上面算过的 13.6 mA;1 kΩ 给出 (5 − 2) ÷ 1000 = 3 mA,暗一些但还是看得很清楚。这两者之间的任何值都安全。

接线 为什么
1 引脚 13(DIGITAL 那一排) 电阻的一头 这就是你的代码开开关关的那个引脚;板上那颗“L” LED 会跟着一起闪,因为 Uno R3 是通过一个独立的缓冲器去驱动它,并不是分走这个引脚的电流
2 电阻的另一头 LED 的长脚(阳极) 电阻在电流到达 LED 之前先把它限住;它接在哪一只脚上都可以,因为串联电路里每一点的电流都一样
3 LED 的短脚(阴极) GND 引脚 把电路接回板子,让回路闭合

有两个面包板上的细节,决定这个电路会不会亮。第一,LED 的长脚和短脚必须插进两组不同的五孔小行;插在同一行里,两只脚在面包板内部就直接连通了,LED 等于被短接掉。第二,第四天升到三颗 LED 的时候,不要拉三条 GND 线:从板子的 GND 引脚拉一条线到面包板边上的蓝色长条,然后每一只短脚都接到那条蓝线上。这就是为什么三颗 LED 只需要四条线 — 三条信号,加一条共用的 GND。

如果你想一口气看完整个过程动起来,Afrotechmods 这个短课程会走一遍:选板子、面包板上的 LED、用 PWM 调暗,最后到马达调速 — 都是文字很难描述清楚的实际动作。

第二个星期,就是传感器登场的时候。LED 之后最顺手的两个搭配,一个是 Arduino 红绿灯项目,它用的是同一个循环加三个输出;另一个是 LDR 光敏电阻自动灯,那会带出你的第一个模拟输入。如果是学校功课,点子清单在 RBT 电子专题项目点子这一篇里。

我们常见到的错误

LED 装反了。LED 只让电流往一个方向走。比较长的那只脚是阳极,必须朝向被控制的那个引脚;短脚接 GND。装反了什么都不会发生,也什么都不会坏 — 所以电路要是一声不响,先把 LED 转个方向,再去怪代码。

把面包板的走线搞错。面包板里每一小行五个孔是彼此连通的,但不跨过中间那道沟,而两侧那两条长条是分开的电源轨。把一个元件的两只脚插进同一行五孔,等于把它短路,不是把它接通 — 这就是“照着图接了但不会动”最常见的原因。

只买了板子。Uno 板到了,USB 线插上,“L” LED 闪了 — 然后就卡住,因为没有面包板,也没有线可以从板子接出来。一块面包板、一包线和几颗 LED,就是一个下午和一整个星期的分别。

常见问题

Arduino 到底是什么?

Arduino 是一块小小的电路板,上面那颗微控制器芯片只跑你写的那一个程序,只要有电就不停重复。它没有操作系统、没有屏幕、也没有文件;它的工作是读输入引脚上的信号、做判断,然后把输出引脚上的电压打开或关掉,用来控制灯、蜂鸣器、继电器或马达。

用 Arduino 之前一定要先会写程序吗?

不需要。每一个 Arduino 程序的骨架都一样:setup() 只跑一次,用来设定引脚的角色;loop() 则永远重复。第一个 Blink 程序只有十行,而且只用到三个指令,所以最快的学法是拿现成的 sketch,改一个数字,看看有什么变了。

Arduino 能做什么?

Arduino Uno 适合拿来控制东西:按时间或条件开关灯、蜂鸣器和继电器,读温度、光线、距离和按钮,还有通过驱动模块调马达转速。它不适合处理图片或影片、存放文件,也不适合在不加额外模块的情况下连 Wi-Fi,因为它只有 2 KB 工作内存,里面也没有电台。

从零开始学 Arduino 要花多少钱?

入门要的是五样东西:一块 Uno 板配打印机那种 USB Type B 数据线、一块面包板、一包公对公杜邦线、几颗 LED,还有一包电阻。这篇里的零件清单会直接显示每一样的当前价格,所以总数就是那几行加起来;现成套装盒是第二条路,装的是同样这些东西。

新手该选 Arduino Uno 还是 ESP32?

学基础选 Arduino Uno,因为它的引脚是 5 V,排针又大又好接,而且几乎每一篇新手教程都是照着它写的。如果你的第一个项目本来就得把数据送到手机或互联网,那就选 ESP32,因为 Wi-Fi 电台就在它的芯片封装里面。完整的比较在 ESP32、ESP8266 和 Arduino Uno 的分别这一篇。

最后更新:2026 年 8 月。有问题?WhatsApp 联系我们

Leave a Reply

Your email address will not be published. Required fields are marked *