Je fais un bot sumo pour un projet en utilisant un Arduino. Je n'ai aucune expérience avec le code Arduino, mais j'ai une expérience Java. Cela dit, ce bot a un détecteur de bord pour l'empêcher de tomber, un pilote L298, et ainsi de suite. Avec mon manque d'expérience, je ne sais pas exactement comment le code d'Arduino fonctionne avec les méthodes et etc. Cela dit, ma question principale est comment est-ce que j'exécute mes méthodes avec les délais? Est-ce qu'il se coince dans les méthodes sans retour? Ne pas entrer? L'exécution se terminant plus tard? Actuellement, il semble juste faire fonctionner les moteurs sans l'interrupteur. J'ai également vérifié le câblage. (Je m'excuse pour le mauvais interrogatoire - stackedoverflow vierge).Arduinosumo bot avec moteur rotatif
int motor_forward = 10;
int motor_reverse = 9;
int motor2_forward = 13;
int motor2_reverse = 12;
int edgeDec1 = 7;
//int edgeDec2 = 6;
//the setup routine runs once when you press reset;
void setup(){
//initialize the digital pin as an output.
pinMode(motor_forward, OUTPUT);
pinMode(motor_reverse,OUTPUT);
pinMode(motor2_forward,OUTPUT);
pinMode(motor2_reverse,OUTPUT);
pinMode(edgeDec1,INPUT);
}
//the loop routine runs over and over again forever
void loop(){
int indicator = random(2);
delay(5000);//5 second delay
//loop to prevent another 5 second delay
while(true){
if (indicator = 0){
for(int x = 0; x < random(200); x++){
Forward();
EdgeDec();
delay(10);
}
}
else if (indicator = 1){
for(int x = 0; x < random(200); x++){
TurnLeft();
EdgeDec();
delay(10);
}
}
else if (indicator = 2){
for(int x = 0; x < random(200); x++){
TurnRight();
EdgeDec();
delay(10);
}
}
}
}
void Forward(){
//right motor
digitalWrite(motor_forward,1);//terminal d1 will be high
digitalWrite(motor_reverse,0);//terminal d2 will be low
//left motor
digitalWrite(motor2_forward,1);//terminal d1 will be high
digitalWrite(motor2_reverse,0);//terminal d2 will be low
}
//going in reverse
void Reverse(){
//right motor
digitalWrite(motor_forward,0);//terminal d1 will be low
digitalWrite(motor_reverse,1);//terminal d2 will be high
//left motor
digitalWrite(motor2_forward,0);//terminal d1 will be low
digitalWrite(motor2_reverse,1);//terminal d2 will be high
}
//rotating left
void TurnLeft(){
//right motor
digitalWrite(motor_forward,0);//terminal d1 will be high
digitalWrite(motor_reverse,1);//terminal d2 will be low
//left motor
digitalWrite(motor2_forward,1);//terminal d1 will be high
digitalWrite(motor2_reverse,0);//terminal d2 will be low
}
void TurnRight(){
//right motor
digitalWrite(motor_forward,1);//terminal d1 will be high
digitalWrite(motor_reverse,0);//terminal d2 will be low
//left motor
digitalWrite(motor2_forward,0);//terminal d1 will be high
digitalWrite(motor2_reverse,1);//terminal d2 will be low
}
void EdgeDec(){
if(edgeDec1 == 1){
Reverse();
delay(700);
TurnLeft();
delay(1000);
Forward();
}
}
Je pense que cela me met sur la bonne voie, merci. Le texte de débogage aide également à localiser le problème. J'ai pensé à la façon dont je pourrais le tester mais je n'étais pas sûr. – user3651225
Vous êtes les bienvenus, tenez-nous au courant et marquez comme correct si cela fonctionne pour vous! Je ne voulais pas interférer avec le moment (vrai) car je supposais que vous travailliez sur d'autres choses là-bas. – askchipbug