|
楼主 |
发表于 2012-6-8 16:21:07
|
显示全部楼层
Alexie 发表于 2012-6-7 23:06
L298只是个H桥,控制反转的的话问题不大,当读到的值大于等于400就反转,小于200就再正转呗。 难度只是取决 ...
非常感谢你的解答。
我使用的这个电机是汽车中控锁用的小电机,他是上下移动的,实际上他的构造内部是个直流电机,然后这个直流电机连接着齿轮和杠杆,这个电机通过直流电机控制而实现上下移动。
程序逻辑其实很简单,我现在觉得是不是电机的转速是问题所在,因为这个电机往一个方向转动的时候可以控制在400呢,但是往另一个方向的时候就不能控制在200内,而是直接转到0.
我把我的代码贴出来:
void setup() {
pinMode (9,OUTPUT);
pinMode (12, OUTPUT);
pinMode (12,INPUT);
//pinMode (pwm, OUTPUT);
Serial.begin(9600);
}
void motorStop(){
digitalWrite(9,HIGH);//motor brake
delay(2000);//2 Sec
}
void motorUp(){
digitalWrite(12,HIGH);//one direction
digitalWrite(9,LOW);//motor doesnt brake
analogWrite(3,50);//motor speed
delay(1000);
}
void motorDown(){
digitalWrite(12,LOW);//the other direction
digitalWrite(9,LOW);//motor doesnt brake
analogWrite(3,50);//motor speed
delay(1000);
}
int potiValue;//potentiometer value
void loop(){
motorDown();//motor running in one direction
if(potiValue=analogRead(A5),potiValue<200){
motorStop();
Serial.println(potiValue);}//if the poti value less than 200
motorUp();
if(potiValue=analogRead(A5),potiValue>400){
motorStop();
Serial.println(potiValue);//if the poti value bigger than 400
}
|
|