weilian 发表于 2012-4-4 18:34:36

控制电机并且用电位计读数。

我是一个刚学Arduino的菜鸟,最近碰到一个疑惑。

我想用Arduino Motor Schield(专门控制电机的扩展版)控制一个电机然后让这个电机带动一个杠杆,杠杆的另一端和电位计绑定在一起。然后我想让电机转动然后带动这个杠杆,这样电位计就会随之变化。然后我想通过analog.read()这个函数得到电位计的模拟值。

我的想法是是否Arduino同时支持两个程序同时运行,这样一个程序控制电机,另一个程序用来读取电位计的模拟值。Arduino好像不支持多线程吧。如果我这样写代码的话,就只能分别读两次电位值,即电机转动到两端的值,如果我想要电机转动每一时刻的值应该怎么做呢。

非常感谢各位指教。

//电机控制

void setup(){

pinMode(12,OUTPUT);
pinMode(9,OUTPUT);
Serial.begin(9600);

}

void loop(){
int potiValue;
digitalWrite(12,HIGH);//电机方向
digitalWrite(9,LOW);//电机停止
analogWrite(3,1000);//电机速度

potiValue = analogRead(A5);//电位计模拟值
Serial.println(potiValue);//打印

delay(5000);
   
digitalWrite(12,LOW);//另一个方向
digitalWrite(9,LOW);
analogWrite(3,1000);

potiValue = analogRead(A5);
Serial.println(potiValue);

delay(5000);

}

Malc 发表于 2012-4-4 20:20:53


   potiValue = analogRead(A5);//电位计模拟值
Serial.println(potiValue);//打印

delay(5000);
   
改为
unsigned long pMillis=millis();
while(millis()-pMillis<5000)
{
potiValue = analogRead(A5);//电位计模拟值
Serial.println(potiValue);//打印
}
这样就能不断读取电位器值了,少用delay,因为用delay就不能干别的事了
还有,其实所谓的多线程,也是一次运行一个程序,只是程序间的切换相当快,看上去就像是同时运行多个程序了,除非是多核cpu,呵呵
arduino也有多线程库,以后接触多了再用吧

weilian 发表于 2012-4-4 21:56:35

Malc 发表于 2012-4-4 20:20 static/image/common/back.gif
改为
unsigned long pMillis=millis();
while(millis()-pMillis

非常感谢!我马上就去试试。
页: [1]
查看完整版本: 控制电机并且用电位计读数。