发源地 发表于 2014-8-23 22:48 
这样的我已经试过了(从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); //随机写的延时
- }
复制代码 |