<h1>窮舉循跡</h1> ```arduino= class wheel { const int EN; const int IN1; const int IN2; public: wheel(int, int, int); wheel power(int); }; wheel wheel::power(int P) { if(P > 255) P =255; else if(P < -255) P =-255; if(P >= 0){//go straight Or Stop analogWrite(EN, P); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); } else{//go back analogWrite(EN, -P); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); } return *this; } wheel::wheel(int a, int b, int c) :EN(a), IN1(b), IN2(c) { pinMode(EN, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); } void MotorWriting(wheel wheel_L, wheel wheel_R, int vL, int vR){ wheel_L.power(vL); wheel_R.power(vR); } #define L_ENA 9 #define L_ENB 3 #define L_IN1 7 #define L_IN2 6 #define L_IN3 5 #define L_IN4 4 wheel wheel_L(L_ENA, L_IN1, L_IN2); wheel wheel_R(L_ENB, L_IN3, L_IN4); void MotorCheck(){ //forward MotorWriting(wheel_L, wheel_R, 100, 100); delay(1500); //stop MotorWriting(wheel_L, wheel_R, 0, 0); delay(1500); //back MotorWriting(wheel_L, wheel_R, -100, -100); delay(1500); //turn right MotorWriting(wheel_L, wheel_R, 100, -60); delay(1500); //turn left MotorWriting(wheel_L, wheel_R, -60, 100); delay(1500); } void Tracking(){ int m= digitalRead(A2); int l2= digitalRead(A1); int l3= digitalRead(A0); int r2= digitalRead(A3); int r3= digitalRead(A4); if(l3==1&&l2==0&&m==0&&r2==0&&r3==0){//10000 MotorWriting(wheel_L, wheel_R, 10,170); } else if(l3==0&&l2==1&&m==0&&r2==0&&r3==0){//01000 MotorWriting(wheel_L, wheel_R, 70,150); } else if(l3==1&&l2==1&&m==0&&r2==0&&r3==0){//11000 MotorWriting(wheel_L, wheel_R, 50,130); } else if(l3==1&&l2==1&&m==1&&r2==0&&r3==0){//11100 MotorWriting(wheel_L, wheel_R, 90,130); } else if(l3==0&&l2==1&&m==1&&r2==0&&r3==0){//01100 MotorWriting(wheel_L, wheel_R, 120,130); } else if(l3==0&&l2==0&&m==1&&r2==0&&r3==0){//00100 MotorWriting(wheel_L, wheel_R, 130,130); } else if(l3==0&&l2==1&&m==1&&r2==1&&r3==0){//01110 MotorWriting(wheel_L, wheel_R, 130,130); } else if(l3==0&&l2==0&&m==1&&r2==1&&r3==0){//00110 MotorWriting(wheel_L, wheel_R, 130,120); } else if(l3==0&&l2==0&&m==1&&r2==1&&r3==1){//00111 MotorWriting(wheel_L, wheel_R, 130,90); } else if(l3==0&&l2==0&&m==0&&r2==1&&r3==1){//00011 MotorWriting(wheel_L, wheel_R, 130,50); } else if(l3==0&&l2==0&&m==0&&r2==1&&r3==0){//00010 MotorWriting(wheel_L, wheel_R, 150,70); } else if(l3==0&&l2==0&&m==0&&r2==0&&r3==1){//00001 MotorWriting(wheel_L, wheel_R, 170,10); } else if(l3==0&&l2==0&&m==0&&r2==0&&r3==0){//00000 MotorWriting(wheel_L, wheel_R, -70,-70); } } void setup(){ MotorCheck(); } void loop(){ //MotorWriting(wheel_L, wheel_R, 0, 128); Tracking(); } ```