eddiewwm 发表于 2014-8-23 18:03 static/image/common/back.gif
"电机总是转一段时间后,休息一段时间 "?看來你的電調工作得有點奇怪,但既然已可以轉,就說明基本的控制 ...
这样的我已经试过了(从1000,1100,,,,1900,2000都不行),,我于是就这样改的
void loop()
{
digitalWrite (pin, HIGH);
delayMicroseconds(count);
digitalWrite (pin, LOW);
delayMicroseconds(20000-count);
if (up ==1)
{
count++;
}
if ( count == 2000 )
{
count--;
}
}
电机就转起来了,而且是一直转的,我不明白怎么回事,感觉和count==2000意思是一样的?
不过,我又遇到了一个问题,因为我还要和其他控制一起运行,例如会和舵机、传感器一起,我把其他程序加进去,其他程序里面也有延时,结果导致电机就不转了,你有什么好的建议给我吗?
我看到网上还有人说这几句程序会占用主线程,不推荐使用,我也不知道是不是?
digitalWrite (pin, HIGH);
delayMicroseconds(count);
digitalWrite (pin, LOW);
delayMicroseconds(20000-count);
关于多程序一起运行的问题,我看了一下,貌似有人推荐使用多线程,不知道这是不是可行的方法?希望不吝指教! 发源地 发表于 2014-8-23 22:48 static/image/common/back.gif
这样的我已经试过了(从1000,1100,,,,1900,2000都不行),,我于是就这样改的
void loop()
{...
這樣可看看壇裡資料:
http://wiki.geek-workshop.com/doku.php?id=arduino:libraries:timer eddiewwm 发表于 2014-8-26 21:54 static/image/common/back.gif
這樣可看看壇裡資料:
http://wiki.geek-workshop.com/doku.php?id=arduino:libraries:timer
谢谢eddiewwm大神以及其他热心帮助的人,我已经搞定了。不知道是我买的电调的原因,还是别的什么,主要是要先进行油门行程设置,然后在进行固定转速程序,不然会出一些问题,尤其是多线程时。 发源地 发表于 2014-8-23 22:48 static/image/common/back.gif
这样的我已经试过了(从1000,1100,,,,1900,2000都不行),,我于是就这样改的
void loop()
{...
步进电机的转动主要就是靠脉冲来驱动,试试用tone()试试,tone是发脉冲的,如tone(2,50)即数字脚2发频率50Hz的脉冲,本人试过,加延时不会影响到转动
int K =2; //开关
int PUL = 3;//脉冲输出
int DIR = 4;//方向信号
int Hz = 100; //脉冲数
void setup() {
pinMode(K, INPUT);
pinMode(PUL, OUTPUT);
pinMode(DIR, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if(digitalRead(K)==LOW)
{
delay(5);
if(digitalRead(K)==LOW)
{
Hz+=50; //检测到按键按下,频率+50
Serial.println(Hz);
while(digitalRead(K)==LOW)
{
}
}
}
tone(PUL,Hz); //向PUL发频率为Hz的脉冲
delay(1000); //随机写的延时
} 能发你弄好的程序来看看吗 最近我也遇到这样的问题了
页:
1
[2]