美文网首页
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