速成 · 电子设计基础训练
这门课的现存材料主要是实验代码和综合实验报告,课件目录为空。所以最有用的学法不是背函数,而是看懂一条信号怎样从现实世界进入 Arduino,经过程序处理,再被输出。
一张图看完课程
现实量
↓
传感器 → 电压/数字信号 → Arduino 引脚
↓
采样、计算、滤波
↓
LED / 数码管 / 串口 / Processing 画面
现存代码正好沿着这条链路递进:
- 用 13 号引脚让 LED 闪烁;
- 通过串口接收一个字节或一段字符串;
- 读取 DHT11 温湿度和 TCS34725 颜色传感器;
- 用超声波飞行时间计算距离,再滤波、报警和显示;
- 扩展为扫描角度与距离联动的“雷达”界面。
Arduino 程序只有两个入口
void setup() {
// 上电或复位后只执行一次
}
void loop() {
// 之后反复执行
}
setup() 适合配置引脚方向、串口波特率和传感器库;loop() 适合采样、判断和更新输出。每轮循环必须足够快,否则按键、串口数据或传感器变化可能被错过。
数字引脚的最小闭环
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
pinMode 规定引脚是输入还是输出,digitalWrite 设置高低电平。delay(1000) 会让整个程序暂停 1 秒;做单个 LED 没问题,但同时要读按键和传感器时,更好的做法是比较 millis() 计时,不阻塞主循环。
串口是调试和联机的主干
Arduino 与电脑必须约定相同波特率:
Serial.begin(9600);
Serial.available() 告诉缓冲区里有多少个字节,Serial.read() 每次只取一个字节。如果想收到完整消息,不能只靠“当下已经到了几个字节”,而要约定换行符或其他结束符。
雷达扩展就约定一条数据是:
角度,距离.
Processing 读到句点后,再按逗号拆成角度和距离。
超声波测距的一个公式
传感器测到的是超声波往返时间 。声波走了“去程 + 回程”,所以目标距离为
若声速取 , 以微秒计, 以厘米计,则
实验中的误差不只来自代码:温度会改变声速,障碍物的材质和角度会改变反射,近场盲区和远距离衰减也会影响结果。
平均数和中位数滤波怎么选
- 平均数会利用所有样本,对小幅零均值噪声有效,但会被单个极端值拉动。
- 中位数只看排序后中间的样本,更擅长去掉偶发的尖峰误差。
如果 9 个样本中有 1 个突然跳成 200 cm,中位数通常比平均数稳定;如果所有样本只在真值附近小幅摆动,平均数能更好地抑制噪声。
实验题的通用检查顺序
- 先看 VCC、GND 和共地;
- 对照代码检查引脚编号与输入/输出方向;
- 用串口打印原始量,先确认传感器真的有数据;
- 再验证单位换算和边界判断;
- 最后接入滤波、报警、显示和上位机界面。
这个顺序能把“什么都没显示”拆成电源、连线、采集、计算和输出五个可验证环节。