arduino之PWM的实现

        首先我们要知道什么是PWM,PWM就是在输出直流电的时候有时候也会输出低电平。一会高一会低,这样就有规律了。这样做的方法就是为了让输出的不同的有效电压值!

        在arduino有一个Stepper库就是专门为步进电机的,可以看看!

        实现PWM的方法有以下几种:

1、用analogWrite(pin, val)命令
其中pin是腿的编号,传说中只能用3,5,6,9,10,11这几条;val是0~255的整数值,对应电压从0到+5V。注意,那几个脚的编号,指的是ATmega168的pin编号,Arduino的板子会用这几个管脚支持更多路的PWM输出。
具体的使用可以看下面的示例代码:

    int pwm = 5; //0~13

    void setup()
    {
        pinMode(pwm, OUTPUT);
    }   

    void loop()
    {
        analogWrite(pwm, 250);
        delay(200);
    }

2、 使用digitalWrite来实现pwm。

int pin = 4;  

void setup()
{
    pinMode(pin, OUTPUT);
}

void loop()
{
  digitalWrite(pin, HIGH);
  delayMicroseconds(500);
  digitalWrite(pin, LOW);
  delayMicroseconds(1000 - 500);
}  

3、使用寄存器:

里面有两个timer。

 pinMode(3, OUTPUT);
 pinMode(11, OUTPUT);
 TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
 TCCR2B = _BV(CS22);
 OCR2A = 180;
 OCR2B = 50;

  • 输出口3的频率: 16 MHz / 64 / 256 = 976.5625Hz
  • 输出口3的占空比: (180+1) / 256 = 70.7%
  • 输出口11的频率: 16 MHz / 64 / 256 = 976.5625Hz
  • 输出口11的占空比: (50+1) / 256 = 19.9%

参考:

        http://www.geek-workshop.com/thread-119-1-1.html

        http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM



你可能感兴趣的:(Python,&&,SCM)