1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| #define LED ( 13 ) #define MOTOR\_PIN0 ( 8 ) #define MOTOR\_PIN1 ( 9 ) #define MOTOR\_PIN2 ( 10 ) #define MOTOR\_PIN3 ( 11 ) #define interruptPin ( 2 ) #define Speed 220//速度 volatile static unsigned char keyFlag = 0 ;//按键状态 void fanzhuan(); void zhengzhuan(); void Stop(); void trigger(){ keyFlag++; keyFlag%=3; } void setup() { unsigned char ro[]={MOTOR_PIN0,MOTOR_PIN1 ,MOTOR_PIN2, MOTOR_PIN3}; pinMode( LED, OUTPUT ); for(unsigned char i=0;i <4;i++){ pinMode( ro[i], OUTPUT ); digitalWrite(ro[i],LOW); } pinMode(interruptPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(interruptPin), trigger, FALLING); }
void loop() { if(keyFlag)keyFlag==1?zhengzhuan():fanzhuan(); else Stop(); } void Stop(){ //这里可以填写其他控制代码 digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, HIGH ); }
void zhengzhuan(){ digitalWrite( MOTOR_PIN0, HIGH ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, HIGH ); delay(Speed);//此数值必须大于100,否则仿真的时候会抖动 . digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, HIGH ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, LOW ); delay(Speed);//此数值必须大于100,否则仿真的时候会抖动 . digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, HIGH ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, HIGH ); delay(Speed);//此数值必须大于100,否则仿真的时候会抖动 . digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, HIGH ); digitalWrite( LED, LOW ); delay(Speed);//此数值必须大于100,否则仿真的时候会抖动 . } void fanzhuan(){ digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, HIGH ); digitalWrite( LED, LOW ); delay(Speed);//此数值必须大于100,否则仿真的时候会抖动 . digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, HIGH ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, HIGH ); delay(Speed);//此数值必须大于100,否则仿真的时候会抖动 . digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, HIGH ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, LOW ); delay(Speed);//此数值必须大于100,否则仿真的时候会抖动 . digitalWrite( MOTOR_PIN0, HIGH ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, HIGH ); delay(Speed);//此数值必须大于100,否则仿真的时候会抖动 . }
|