为什么一定要写这句电机才会转呢?
int E1 = 5;//PWMA
int M1 = 4;//DIRA
int E2 = 6;//PWMB
int M2 = 7;//DIRB
int Val=0;
int temp=20;
void setup()
{
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
}
void foward()
{
digitalWrite(M1,HIGH);
analogWrite(E1,Val);
digitalWrite(M2,HIGH);
analogWrite(E2,Val);
Val=Val+temp;
if (Val == 0 || Val == 255)
{
temp = -temp;
}
//delay(500);
}
void loop()
{
foward();
//delay(500);
}
想做个小车。
用L298P电机驱动板。
上面的代码为什么一定要加上 Val=Val+temp;
电机才会转?
还有那个if有用吗? 这个你得先看看L298N的使用方法啦,你看你的程序里面,E1和E2后面的注释(//PWMA和//PWMB),
这说明你的这个程序使用的是PWM来对电机调速,只有当PWM的值给到一定的程度时,电机才会转,
而初始“int Val=0;
int temp=20;”
如果不加这句 Val=Val+temp;就相当于L298N的使能端没有使能,电机当然不能转。
你如果不需要调节电机速度,让电机在当前电压下以最高转速运行,可以直接改写这句为 Val=255;同时注释掉if语句。
按此程序的话,if当然有用,因为analogWrite(E1,Val);这个函数的第二个参数Val的值的范围只能为0到255;这句if的意思就是说:当Val的值达到最大值或者处于最小值时,让temp值变反。即,当Val==255时,temp=-20,Val往下减小,当减到0时(此时的前一刻还是temp=-20),temp变反,即
temp=-(-20)=20啦;从而Val往上增加。:)
那它最低转速是多少,
看这段,应该是从20开始加速的。
为什么我直接写20它就不转。 本帖最后由 マイナス37度 于 2014-10-4 14:12 编辑
void loop()
{
digitalWrite(M1,HIGH);
digitalWrite(E1,HIGH);
digitalWrite(M2,HIGH);
digitalWrite(E2,HIGH);
delay(速度:1最快);
}
这是最笨的办法了,把括号里的val直接改20是肯定不行的,原因么自己找找肯定能找到的
页:
[1]