Paso 1: Hacer una plataforma
La plataforma que utilicé para construir este robot fue la plataforma de Cherokey 4WD. El primer paso fue conseguir que el robot para moverse, esto fue la parte fácil.
Lo bueno de este kit es que incluye todo que lo necesario para conseguirlo en movimiento – tiene su propio conjunto de motores y controladores de motor y un microcontrolador Romeo V2, así que todo lo que necesitas hacer es añadir módulos extras para hacer lo que quiera. Para armar la plataforma necesita soldar algunos cables para cada motor y entonces los cable a los terminales de tornillo en el tablero de conductor del motor (M1, M2, M3 y M4). Para conectar el microcontrolador al kit, necesitará conectar D4, D5, D6, D7 de los pernos en la plataforma Cherokey a pins 4, 5, 6, 7 en el microcontrolador con los cables de puente (o puede soldarlos si prefieres para una solución permanente). Ahora está listo para programar el microcontrolador para conseguirlo moviendo! Hay un código de ejemplo incluido en la página DFRobot Wiki, que puede ser encontrada aquí.
En el código de ejemplo hay cuatro funciones básicas reguladas por insumos clave en el monitor serial. Pulse el botón "w" para avanzar, presione "a" a la izquierda, presione "d" para girar a la derecha, presione "x" para detener y presiona "z" para imprimir "Hola" en el monitor serie. Esto es una buena prueba para ver si la plataforma funciona como lo necesite, y todas las direcciones del motor son correctas. Si tienes problemas con la dirección de un motor, puede tratar de cambiar los pines de dirección alta o baja en el código, o de una solución de baja tecnología simplemente puede invertir la polaridad de los cables en los bornes del motor en la plataforma Cherokey.
El código que utilicé es el siguiente:
<p>int E1 = 5; //M1 Speed Control<br>int E2 = 6; //M2 Speed Control int M1 = 4; //M1 Direction Control int M2 = 7; //M1 Direction Control void stop(void) //Stop { digitalWrite(E1,0); digitalWrite(M1,LOW); digitalWrite(E2,0); digitalWrite(M2,LOW); } void advance(char a,char b) //Move forward { analogWrite (E1,a); //PWM Speed Control digitalWrite(M1,HIGH); analogWrite (E2,b); digitalWrite(M2,HIGH); } void back_off (char a,char b) //Move backward { analogWrite (E1,a); digitalWrite(M1,LOW); analogWrite (E2,b); digitalWrite(M2,LOW); } void turn_L (char a,char b) //Turn Left { analogWrite (E1,a); digitalWrite(M1,LOW); analogWrite (E2,b); digitalWrite(M2,HIGH); } void turn_R (char a,char b) //Turn Right { analogWrite (E1,a); digitalWrite(M1,HIGH); analogWrite (E2,b); digitalWrite(M2,LOW); } void setup(void) { int i; for(i=4;i<=7;i++) pinMode(i, OUTPUT); Serial.begin(19200); //Set Baud Rate Serial.println("Run keyboard control"); digitalWrite(E1,LOW); digitalWrite(E2,LOW); } void loop(void) { if(Serial.available()){ char val = Serial.read(); if(val != -1) { switch(val) { case 'w'://Move Forward advance (255,255); //move forward in max speed break; case 's'://Move Backward back_off (255,255); //move back in max speed break; case 'a'://Turn Left turn_L (100,100); break; case 'd'://Turn Right turn_R (100,100); break; case 'z': Serial.println("Hello"); break; case 'x': stop(); break; } } else stop(); } }</p>