本人小白一个,利用暑假自学一些小东西,最近鼓捣上了arduino,顺便分享一下学习心得,如有不对之处,还请各位前辈多多指正,谢谢。
我是突发奇想向利用arduino3个pwm 引脚输出非同时性pwm波,控制3个车轮转速。由于条件所限,先用led小灯代替。
话不多说,先上硬货。
int led1 = 3;
int led2=5;// 指定硬件引脚
int led3=6;
int brightness = 0; // 灯的亮度变量
// 初始化
void setup() {
//定义3个输出引脚
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
void loop() {
// 设定LED脚亮度
if(brightness==0)
{
for(brightness=0;brightness<256;brightness+=5)
{
analogWrite(led1, brightness);
delay(30);
analogWrite(led2, brightness);
delay(30);
analogWrite(led3, brightness);
}
delay(30);
}
else{
for(brightness=255;brightness>0;brightness-=5)
{
analogWrite(led1, brightness);
delay(30);
analogWrite(led2, brightness);
delay(30);
analogWrite(led3, brightness);
}
delay(30);
}
}
Nano板子上有六个引脚支持pwm输出,分别是引脚3,5,6,9,10,11;本实验才采用3,5,6引脚输出。每一次输入0~255之间的值时间间隔为30ms效果比较明显。(digitalWrite(pin,val);delay(30);)
由于个人技术所限,只是采取了最基本的延时函数来实现三个小灯依次实现呼吸灯效果(应该是在间断很短的时间内,依次呈现呼吸灯效果)。在同一时刻,现象是亮度led1>led2>led3。本实验可以在多种条件下改编,例如智能小车转弯时装逼的不二神器。希望对您有所帮助。
一年之后,重新翻看这篇博客,有很多新的感悟。
首先,利用延时函数实现呼吸灯,没有技术含量,而且,降低代码的执行效率。通过PWM输出,帮助进一步掌握定时器的功能(就stm32而言)。stm32与arduino 相比,有更多的外设,同时也更接近底层的硬件设置。