フラグを使ってブレーキを制御してみた。
急ブレーキ。
int left1 = 2; int leftPWM = 3; int left2 = 4; int status_left = 0; //if CW int right1 = 5; int rightPWM = 6; int right2 = 7; int status_right = 0;//if CW void setup(){ pinMode(left1,OUTPUT); pinMode(leftPWM,OUTPUT); pinMode(left2,OUTPUT); pinMode(right1,OUTPUT); pinMode(rightPWM,OUTPUT); pinMode(right2,OUTPUT); //NO PWM when testing digitalWrite(leftPWM,HIGH); digitalWrite(rightPWM,HIGH); } int delay_t = 2000; void loop(){ leftCW(); delay(delay_t); leftCCW(); delay(delay_t); leftBrake(); rightCW(); delay(delay_t); rightCCW(); delay(delay_t); rightBrake(); } //TODO:引数にはPWMの値をとる void leftCW(){ digitalWrite(left1,HIGH); digitalWrite(left2,LOW); status_left = 0; } void leftCCW(){ digitalWrite(left1,LOW); digitalWrite(left2,HIGH); status_left = 1; } void leftBrake(){ if(status_left == 0){ leftCCW(); delay(100); digitalWrite(left1,LOW); digitalWrite(left2,LOW); } else if(status_left == 1){ leftCW(); delay(100); digitalWrite(left1,LOW); digitalWrite(left2,LOW); } else { digitalWrite(left1,LOW); digitalWrite(left2,LOW); } } void rightCW(){ digitalWrite(right1,HIGH); digitalWrite(right2,LOW); status_right=0; } void rightCCW(){ digitalWrite(right1,LOW); digitalWrite(right2,HIGH); status_right=1; } void rightBrake(){ if(status_right == 0){ rightCCW(); delay(100); digitalWrite(right1,LOW); digitalWrite(right2,LOW); } else if(status_right == 1){ rightCW(); delay(100); digitalWrite(right1,LOW); digitalWrite(right2,LOW); } else { digitalWrite(right1,LOW); digitalWrite(right2,LOW); } } void forward(){ leftCW(); rightCW(); } void back(){ leftCCW(); rightCCW(); }