|
本课学习目标 1. 分清数字信号、模拟信号核心区别,吃透模拟IO使用规则 2. 掌握PWM调光原理、map映射函数两大高频语法 3. 完成电位器调光、自动呼吸灯两个实操项目 所需器材 Uno主板、10k旋转电位器、LED灯、220Ω限流电阻、杜邦线若干 一、核心理论(必背考点) • 数字信号:只有高低两种状态,只有0/5V,只有开/关 • 模拟信号:连续变化电压,0-5V无级变化,适配光线、温度、角度采集 • 模拟输入函数:analogRead(Ax),读取数值0-1023,无需引脚初始化 • PWM输出函数:analogWrite(引脚,0-255),仅带~波浪引脚可用 • map映射函数:map(原值,最小值,最大值,新最小值,新最大值),数值专属换算函数 二、图文接线 【插图点位6】图5-1 电位器PWM调光接线示意图 1.电位器:左端5V、右端GND、中间信号脚接A0
2.LED:长脚串联220Ω电阻→9号PWM引脚,短脚接GND 硬性规则:模拟引脚A0-A5只能读信号、不能输出电压;只有带~引脚支持PWM调速调光 |
三、实操代码 实操1:电位器无级调光 arduino
//引脚定义
int potPin = A0; //电位器信号脚
int ledPin = 9; //LED PWM控制脚
void setup() {
Serial.begin(9600); //串口打印数值
}
void loop() {
//读取电位器原始数值 0-1023
int potData = analogRead(potPin);
//把0-1023转为灯光亮度0-255
int light = map(potData,0,1023,0,255);
analogWrite(ledPin,light);
//串口调试查看数据
Serial.print("原始值:");
Serial.print(potData);
Serial.print(" 亮度值:");
Serial.println(light);
delay(100);
} |
实操2:全自动呼吸灯 arduino
int ledPin = 9;
void setup() {
pinMode(ledPin,OUTPUT);
}
void loop() {
//灯光渐亮
for(int i=0;i<=255;i++){
analogWrite(ledPin,i);
delay(12);
}
//灯光渐灭
for(int i=255;i>=0;i--){
analogWrite(ledPin,i);
delay(12);
}
} |
避坑要点 1.analogRead不需要pinMode初始化,直接读取即可;2.普通数字引脚无法使用analogWrite;3.阈值调试必须依托串口监视器 课后作业 修改代码,用电位器控制LED闪烁快慢,旋钮越大闪烁越快
|