|
|
电路连接都没有错误,把loop里控制电机转动的代码单独拿出来测试没有问题,可是加进中断以后PWM值只有为255时电机才会转动,求大神指教
#include <MsTimer2.h>
int CW1=8;//连接电机2转向端口到数字接口7
int CW2=9;
int PWM=11; //连接电机2调速端口到数字接口6
int wheel = 0; //记录U型测速模块的次数
char getstr;
void flash()
{
int r;
r=wheel;
Serial.print(r/20.0);
wheel = 0;
}
void Count()
{
wheel++;
}
void setup ()
{
Serial.begin(9600);
pinMode(CW1,OUTPUT);
pinMode(CW2,OUTPUT);
pinMode(PWM,OUTPUT);
attachInterrupt(0,Count,FALLING);
MsTimer2::set(1000, flash); // 中断设置函数,每 1s 进入一次中断
MsTimer2::start();
}
void loop()
{
getstr=Serial.read();
if(getstr=='1'){
digitalWrite(CW1,LOW);//电机转
digitalWrite(CW2,HIGH);
analogWrite(PWM,80);
}
else if(getstr=='2'){
digitalWrite(CW1,LOW);//电机转
digitalWrite(CW2,HIGH);
analogWrite(PWM,160);
}
else if(getstr=='3'){
digitalWrite(CW1,LOW);//电机转
digitalWrite(CW2,HIGH);
analogWrite(PWM,255);
}
else if(getstr=='0'){
analogWrite(PWM,0);
digitalWrite(CW1,HIGH);//电机停
digitalWrite(CW2,HIGH);
}
}
|
|