Arduino 小小发明家

给孩子的20个超酷创意电子项目

欢迎来到Arduino小小发明家的世界!这里精选了20个适合8岁以上儿童入门的STEM电子制作项目。 从零开始学习编程逻辑电路原理,无需复杂的焊接,只需几块积木般的电子元件, 就可以亲手制作出呼吸灯、电子琴、倒车雷达等有趣的互动玩具。 每个项目都配有完整的C++代码原理解析,不仅是最佳的亲子互动素材, 更是开启孩子理工科思维的启蒙钥匙。让我们一起动手,用代码点亮创意!

🤖 什么是 Arduino?

想象一下,Arduino 就是一个小小的电子大脑。它只有信用卡那么大,但非常聪明!

👀

它的感觉 (输入)

它能连接各种“感官”,比如按钮(触觉)、光敏传感器(视觉)或者温度计

🧠

它的思考 (代码)

通过我们写的代码指令,它能决定做什么。比如:“如果天黑了,就...”

💡

它的行动 (输出)

它能做出反应!比如点亮小灯泡、让马达转动或者发出声音

简单举例: 就像家里的声控灯。
耳朵(声音传感器)听到了拍手声 → 大脑(Arduino)思考判定有人来了 → 手(继电器)打开了电灯。

1 闪烁的星星

这是你的第一个魔法!让一颗LED灯像天上的星星一样不停闪烁。

所需零件: Arduino板, LED灯, 220欧姆电阻。
void setup() {
  pinMode(13, OUTPUT); // 设置13号脚是出口
}
void loop() {
  digitalWrite(13, HIGH); // 开灯!
  delay(1000);            // 等待1秒
  digitalWrite(13, LOW);  // 关灯
  delay(1000);            // 再等待1秒
}

2 按钮手电筒

按下按钮灯就亮,松开就灭。你现在不仅能看,还能控制它!

所需零件: LED, 按钮, 220欧姆电阻, 10k欧姆电阻。
void setup() {
  pinMode(13, OUTPUT); // 灯
  pinMode(2, INPUT);   // 按钮
}
void loop() {
  // 如果按下按钮
  if (digitalRead(2) == HIGH) { 
    digitalWrite(13, HIGH); // 开灯
  } else {
    digitalWrite(13, LOW);  // 关灯
  }
}

3 红绿灯指挥官

模拟马路上的红绿灯。红灯停,绿灯行,黄灯亮了等一等。

所需零件: 红/黄/绿LED各1个, 电阻。
void setup() {
  pinMode(8, OUTPUT);  // 绿灯
  pinMode(9, OUTPUT);  // 黄灯
  pinMode(10, OUTPUT); // 红灯
}
void loop() {
  digitalWrite(8, HIGH); delay(3000); digitalWrite(8, LOW); // 绿灯亮3秒
  digitalWrite(9, HIGH); delay(1000); digitalWrite(9, LOW); // 黄灯亮1秒
  digitalWrite(10, HIGH); delay(3000); digitalWrite(10, LOW); // 红灯亮3秒
}

4 呼吸灯

灯光渐渐变亮,又渐渐变暗,就像在这个灯在呼吸一样。

所需零件: LED, 电阻 (连接到9号脚)。
int brightness = 0; // 亮度
int fadeAmount = 5; // 每次变化的量

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

void loop() {
  analogWrite(9, brightness);
  brightness = brightness + fadeAmount;
  // 如果太亮或太暗,就反方向变化
  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount; 
  }
  delay(30);
}

5 旋钮调光器

像调节音量一样,转动旋钮来控制灯的亮度。

所需零件: 电位器(旋钮), LED, 电阻。
void setup() { pinMode(9, OUTPUT); }

void loop() {
  int val = analogRead(A0); // 读取旋钮位置
  // 把旋钮数值(0-1023)变成亮度数值(0-255)
  val = map(val, 0, 1023, 0, 255); 
  analogWrite(9, val); // 调整亮度
}

6 警车警报

红色和蓝色灯交替闪烁,做一个属于你的小警车灯。

所需零件: 红色LED, 蓝色LED, 电阻。
void setup() {
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
}
void loop() {
  digitalWrite(8, HIGH); digitalWrite(9, LOW);
  delay(200); // 闪烁速度快一点
  digitalWrite(8, LOW); digitalWrite(9, HIGH);
  delay(200);
}

7 电子蜡烛

模仿蜡烛的火焰,忽明忽暗,非常温馨。

所需零件: 黄色LED, 电阻。
void setup() { pinMode(9, OUTPUT); }
void loop() {
  // 随机产生一个亮度
  analogWrite(9, random(100, 255)); 
  // 随机等待一下
  delay(random(30, 100)); 
}

8 智能小夜灯

天黑了自动亮灯,天亮了自动熄灭。它能看见光!

所需零件: 光敏电阻, 10k电阻, LED, 220欧姆电阻。
void setup() { pinMode(13, OUTPUT); }
void loop() {
  int lightLevel = analogRead(A0);
  if (lightLevel < 300) { // 如果光线变暗
    digitalWrite(13, HIGH); // 开灯
  } else {
    digitalWrite(13, LOW);  // 关灯
  }
}

9 门铃叮咚

按下按钮,蜂鸣器发出声音。做一个自己的门铃吧。

所需零件: 按钮, 有源蜂鸣器。
void setup() {
  pinMode(2, INPUT); // 按钮
  pinMode(8, OUTPUT); // 蜂鸣器
}
void loop() {
  if (digitalRead(2) == HIGH) {
    digitalWrite(8, HIGH); // 发声
  } else {
    digitalWrite(8, LOW); // 安静
  }
}

10 光线乐器

用手遮挡光线,就能改变声音的高低,像魔法一样演奏。

所需零件: 光敏电阻, 10k电阻, 无源蜂鸣器。
void setup() { pinMode(8, OUTPUT); }
void loop() {
  int val = analogRead(A0);
  // 把光线强度变成声音频率
  int pitch = map(val, 0, 1023, 100, 2000); 
  tone(8, pitch);
  delay(10);
}

11 挥手的机器人

让舵机像小手一样来回挥动。

所需零件: 舵机 (SG90)。
#include <Servo.h>
Servo myServo;
void setup() { myServo.attach(9); }
void loop() {
  myServo.write(0);   delay(1000); // 转到左边
  myServo.write(180); delay(1000); // 转到右边
}

12 旋钮控制机械臂

转动旋钮,舵机跟着一起转动。

所需零件: 舵机, 电位器。
#include <Servo.h>
Servo myServo;
void setup() { myServo.attach(9); }
void loop() {
  int val = analogRead(A0);
  // 映射角度: 0到180度
  int angle = map(val, 0, 1023, 0, 180); 
  myServo.write(angle);
  delay(15);
}

13 倒车雷达

如果有东西靠得太近,它就会发出警报!

所需零件: 超声波传感器(HC-SR04), 蜂鸣器。
const int trigPin = 9, echoPin = 10, buzzPin = 11;
void setup() { 
    pinMode(trigPin, OUTPUT); 
    pinMode(echoPin, INPUT); 
    pinMode(buzzPin, OUTPUT); 
}
void loop() {
  digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  int distance = duration * 0.034 / 2;
  
  if (distance < 10) { // 距离小于10厘米
      digitalWrite(buzzPin, HIGH); 
  } else { 
      digitalWrite(buzzPin, LOW); 
  }
  delay(100);
}

14 彩色心情灯

这种特殊的LED可以变出任何颜色!试试红变绿,绿变蓝。

所需零件: RGB LED, 3个电阻。
// 引脚 9, 10, 11 连接红绿蓝
void setRGB(int r, int g, int b) {
  analogWrite(9, r); analogWrite(10, g); analogWrite(11, b);
}
void setup() { 
    pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); 
}
void loop() {
  setRGB(255, 0, 0); delay(500); // 红
  setRGB(0, 255, 0); delay(500); // 绿
  setRGB(0, 0, 255); delay(500); // 蓝
}

15 反应速度测试

灯亮的时候立刻按下按钮!看看谁的反应最快。

所需零件: LED, 按钮, 电阻。
void setup() { 
    pinMode(13, OUTPUT); pinMode(2, INPUT); Serial.begin(9600); 
}
void loop() {
  digitalWrite(13, LOW);
  delay(random(2000, 5000)); // 随机等待
  digitalWrite(13, HIGH);
  unsigned long startTime = millis();
  while(digitalRead(2) == LOW); // 等待按下
  unsigned long reactionTime = millis() - startTime;
  Serial.println(reactionTime); // 在电脑上看时间
  delay(1000);
}

16 倾斜魔法棒

把Arduino当成魔法棒,倾斜一下,灯就亮了。

所需零件: 滚珠开关, LED。
void setup() { pinMode(13, OUTPUT); pinMode(2, INPUT_PULLUP); }
void loop() {
  if (digitalRead(2) == HIGH) { 
    digitalWrite(13, HIGH);
  } else {
    digitalWrite(13, LOW);
  }
}

17 迷你电子琴

用三个按钮做出哆、来、咪的琴键。

所需零件: 3个按钮, 蜂鸣器, 电阻。
void setup() { 
    pinMode(8, OUTPUT); 
    pinMode(2, INPUT); pinMode(3, INPUT); pinMode(4, INPUT); 
}
void loop() {
  if (digitalRead(2)) tone(8, 262);      // Do
  else if (digitalRead(3)) tone(8, 294); // Re
  else if (digitalRead(4)) tone(8, 330); // Mi
  else noTone(8);
}

18 电子骰子

按一下按钮,灯闪几下就是几点。

所需零件: 按钮, LED, 电阻。
void setup() { pinMode(13, OUTPUT); pinMode(2, INPUT); }
void loop() {
  if (digitalRead(2) == HIGH) {
    int dice = random(1, 7); // 1到6的随机数
    for(int i=0; i<dice; i++) {
        digitalWrite(13, HIGH); delay(200);
        digitalWrite(13, LOW); delay(200);
    }
    delay(1000); 
  }
}

19 影子报警器

把这个藏在盒子里,谁偷偷打开盒子见光了,它就报警!

所需零件: 光敏电阻, 蜂鸣器, 10k电阻。
void setup() { pinMode(8, OUTPUT); } 
void loop() {
  int light = analogRead(A0);
  if (light > 500) { // 如果检测到光(被打开)
    tone(8, 1000); delay(100); noTone(8); delay(100);
  }
}

20 摩斯密码发报机

我是小小情报员!用长短不同的声音发送秘密信号。

所需零件: 按钮, LED, 蜂鸣器。
void setup() { 
    pinMode(13, OUTPUT); pinMode(8, OUTPUT); pinMode(2, INPUT); 
}
void loop() {
  if (digitalRead(2) == HIGH) {
    digitalWrite(13, HIGH); tone(8, 1000);
  } else {
    digitalWrite(13, LOW); noTone(8);
  }
}

🛠️ 进阶指南:如何低成本“量产”你的发明?

如果孩子特别喜欢某个项目(比如“电子蜡烛”),你想把它做成一个永久的玩具,又不舍得把贵的 Arduino Uno 板子占用了,怎么办?这里有两个省钱绝招!

方案 A:Arduino Nano (性价比之王)

适合: 所有项目。

成本: 约 10-15 元/个。

它是 Uno 的缩小版,功能完全一样,但体积只有手指大小。可以直接焊接到洞洞板上。如果你不想折腾复杂的接线,买它最省心。

方案 B:ATtiny85 芯片 (极客之选)

适合: 简单项目 (如 1, 2, 4, 6, 7, 9 等不需要太多引脚的项目)。

成本: 约 3-5 元/个。

这是一颗像小蜘蛛一样的黑色芯片(8个引脚)。
你需要用你的 Arduino Uno 当作“编程器”给它写入代码。
它不需要晶振,接上电池就能跑,体积极小,非常适合做在该项目列表中的大部分简单互动玩具中。

*注:对于只需要控制开关或闪烁的极简项目,还可以选择更便宜的 ATtiny13A (约 1-2元)。