单片机世界探秘:10 PWM平滑控制术——呼吸灯与电机调速全攻略!

张开发
2026/4/12 18:52:22 15 分钟阅读

分享文章

单片机世界探秘:10 PWM平滑控制术——呼吸灯与电机调速全攻略!
10 PWM平滑控制术——呼吸灯与电机调速全攻略!你的Arduino上周刚长出“耳朵”(ADC),今天咱们直接给它安上会呼吸的肺和会调速的涡轮增压引擎!**PWM(Pulse Width Modulation)**就是那个“魔法占空比开关”:它让数字引脚0/1狂闪,但你眼睛看不出,平均电压就变成了0~5V任意值!从此LED不再“眨眼”,而是“深呼吸”;小风扇不再“嗡嗡嗡”,而是“呼呼呼像空调”!最后再来个终极仿真——自动呼吸灯 + 电位器调速风扇 + 摇头模拟风扇,玩到你喊“太丝滑了!!!”🚀全程风趣拆解,代码复制即用,接线图超清晰,走起!😎1. PWM到底是啥?analogWrite的“魔法占空比”Arduino数字引脚只有HIGH(5V)/LOW(0V),但PWM让它每秒闪490次(或980次),通过占空比(HIGH时间占比)控制平均电压。一句话:analogWrite(引脚, 0~255),0=全灭,255=全亮,127=半亮!可用PWM引脚(Uno):3、5、6、9、10、11(带~标记)小知识:频率约490Hz,人眼根本看不出闪,感觉就是“平滑模拟电压”!这才是真正的“模拟输出”!2. 呼吸灯:让LED像会睡觉的小猫🐱先来最治愈的——呼吸效果!接线(超级简单):自然呼吸版代码(非阻塞,推荐!直接复制):constintledPin=9;// PWM引脚voidsetup(){pinMode(ledPin,OUTPUT);Serial.begin(9600);Serial.println("🌬️ 呼吸灯上线!看LED像在深呼吸~");}voidloop(){// 神级呼吸公式:exp(sin()) 超级自然!intbrightness=(exp(sin(millis()/2000.0*PI))-0.36787944)*108.0+20;analogWrite(ledPin,brightness);// 每秒打印一次亮度,方便调试staticunsignedlonglast=0;if(millis()-last1000){last=millis();Serial.print("呼吸亮度: ");Serial.println(brightness);}}上传后,LED慢慢亮→最亮→慢慢暗→最暗……循环,像在打呼噜!太治愈了~👉

更多文章