本帖最后由 dbo 于 2012-11-26 16:59 编辑
线路也跟迷你强接的一模一样 按钮处也加了上拉电阻 当按钮按下时 步进电机还是转 只是转的极慢而已 板子用的是arduino duemilanove 中断教程的地址:http://www.geek-workshop.com/thread-1983-1-1.html
- int pbIn = 0; // 定义中断引脚为0,也就是D2引脚
- int ledOut = A0; // 定义输出指示灯引脚
- volatile int state = LOW; // 定义默认输入状态
- #define DIR_PIN_Y 4
- #define STEP_PIN_Y 5
- void setup()
- {
- pinMode(DIR_PIN_Y, OUTPUT);
- pinMode(STEP_PIN_Y, OUTPUT);
- // 置ledOut引脚为输出状态
- pinMode(ledOut, OUTPUT);
-
- // 监视中断输入引脚的变化
- attachInterrupt(pbIn, stateChange, LOW);
- }
-
- void loop()
- {
- // 模拟长时间运行的进程或复杂的任务。
- for (int i = 0; i < 100; i++)
- {rotateDeg_Y(i,1);
- delay(2000);}
- }
-
- void stateChange()
- {
- state = HIGH;
- digitalWrite(ledOut, state);
- }
- void rotateDeg_Y(float deg, float speed){
- //rotate a specific number of degrees (negitive for reverse movement)
- //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
- int dir = (deg > 0)? LOW:HIGH;
- digitalWrite(DIR_PIN_Y,dir);
- unsigned int steps = abs(deg)/(0.003125);
- float usDelay = (1/speed) * 80;
- for(int i=0; i < steps; i++){
- digitalWrite(STEP_PIN_Y, HIGH);
- delayMicroseconds(usDelay);
- digitalWrite(STEP_PIN_Y, LOW);
- delayMicroseconds(usDelay);
- }
- }
复制代码 |