控制电机并且用电位计读数。
我是一个刚学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);
}
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也有多线程库,以后接触多了再用吧 Malc 发表于 2012-4-4 20:20 static/image/common/back.gif
改为
unsigned long pMillis=millis();
while(millis()-pMillis
非常感谢!我马上就去试试。
页:
[1]