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
| #define LED ( 13 ) #define MOTOR\_PIN0 ( 8 ) #define MOTOR\_PIN1 ( 9 ) #define MOTOR\_PIN2 ( 10 ) #define MOTOR\_PIN3 ( 11 ) #define KEY ( 4 ) static unsigned char Speed = 110;//初始速度值 unsigned char keyFlag = 0 ;//按键状态 void Add() { Speed +=10; if(Speed > 250) Speed =250;//最大值 } void Sub() { Speed -=10; if(Speed < 100) Speed =110;//最小值 } void setup() { pinMode( LED, OUTPUT ); pinMode( MOTOR_PIN0, OUTPUT ); pinMode( MOTOR_PIN1, OUTPUT ); pinMode( MOTOR_PIN2, OUTPUT ); pinMode( MOTOR_PIN3, OUTPUT ); pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(KEY, INPUT_PULLUP); attachInterrupt(0, Add, FALLING); //外部中断号 0,接引脚IO 2,触发方式:高电平变为低电平触发(下降沿触发) attachInterrupt(1, Sub, FALLING); //外部中断号 1,接引脚I0 3,触发方式:高电平变为低电平触发(下降沿触发) }
void loop() { static unsigned char i = 0; unsigned char ButtonState = digitalRead(KEY); if(ButtonState == 0){//检测到有按键按下 delay(10);//消抖处理 if(ButtonState == 0){//确认按键被按下 keyFlag = 1 - keyFlag ; while(!digitalRead(KEY));//等待按键被释放抬起 } } if(keyFlag){ //这里可以填写控制代码 switch( i++ )//这里改成i--就是反转 { case 0: digitalWrite( MOTOR_PIN0, HIGH ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, HIGH ); break; case 1: digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, HIGH ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, LOW ); break; case 2: digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, HIGH ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, HIGH ); break; case 3: digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, HIGH ); digitalWrite( LED, LOW ); break; default: break; } delay(Speed);//此数值必须大于100,否则仿真的时候会抖动 . i %=4; }else{ //这里可以填写其他控制代码 digitalWrite( MOTOR_PIN0, LOW ); digitalWrite( MOTOR_PIN1, LOW ); digitalWrite( MOTOR_PIN2, LOW ); digitalWrite( MOTOR_PIN3, LOW ); digitalWrite( LED, HIGH ); } }
|