美文网首页
PWM控制LED——wiringPi接口的使用

PWM控制LED——wiringPi接口的使用

作者: B_____b | 来源:发表于2019-03-29 14:49 被阅读0次

PWM定义

PWM(Pulse-width modulation)的中文名是脉冲宽度调制.那么我们来看一下wikipedia对它的定义:

脉冲宽度调制(英语:Pulse Width Modulation,缩写:PWM),简称脉宽调制,是将模拟信号变换为脉冲的一种技术,一般变换后脉冲的周期固定,但脉冲的占空比会依模拟信号的大小而改变.在模拟电路中,模拟信号的值可以连续进行变化,在时间和值的幅度上都几乎没有限制,基本上可以取任何实数值,输入与输出也呈线性变化。所以在模拟电路中,电压和电流可直接用来进行控制对象,例如家用电器设备中的音量开关控制、采用卤素灯泡灯具的亮度控制等等。

硬件PWM控制LED

硬件pwm控制

wiringPi初始化 和 引脚模式设置与之前相同

要注意的是 硬件pwm控制的引脚只有 wiringPi编码 的 1号引脚,不能使用其他引脚

pwmWirte 的 参数范围为 [ 0 ,1024) 的整数

以上代码 实现了LED灯由暗变亮再变暗的过程。

还有一点要注意的是 运行可执行文件时 必须使用 root权限 比如:  sudo ./a.out

软件控制

软件控制

软件控制与硬件类似 不过 引脚可随意选择。

需要使用 softPwmCreate函数来 设置 精度。设置的参数最好不要超过1024。

代码

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <wiringPi.h>

#include <softPwm.h>

#define LED 1

#define GREEN 4

#define BEEP 7

int main()

{

if(wiringPiSetup()==-1){

return -1;

}

pinMode(LED,PWM_OUTPUT);

pinMode(GREEN,PWM_OUTPUT);

pinMode(BEEP,OUTPUT);

digitalWrite(BEEP,HIGH);

pinMode(BEEP,PWM_OUTPUT);

int i;

//硬件pwm控制

// while(1)

// {

i = 0;

for(i=0;i<1024;i++)

{

pwmWrite(LED,i);

delay(5);//wiringPi 中 休眠函数

}

for(i=1024;i>=0;i--)

{

pwmWrite(LED,i);

delay(5);//wiringPi 中 休眠函数

}

// }

//软件控制

softPwmCreate(GREEN,0,100);

softPwmCreate(BEEP,0,100);

// while(1)

// {

i = 0;

for(i=0;i<100;i++)

{

softPwmWrite(GREEN,i);

softPwmWrite(BEEP,99-i);

delay(20);//wiringPi 中 休眠函数

}

for(i=99;i>=0;i--)

{

softPwmWrite(GREEN,i);

softPwmWrite(BEEP,99-i);

delay(20);//wiringPi 中 休眠函数

}

// }

return 0;

}

相关文章

网友评论

      本文标题:PWM控制LED——wiringPi接口的使用

      本文链接:https://www.haomeiwen.com/subject/wcplbqtx.html