#include #include #include #include // libreria que permite establecer pines digitales para comunicacion serie SoftwareSerial BT(11, 12); // pin 11 como RX, pin 12 como TX void setMotor(int port1, int port2, int vel) // Funcion para manejar velocidad del motor (0 a 100) y el sentido de giro (+/-) { long velo=vel; int digState=LOW; long finalVelo=0; if(velo==0) { digState=LOW; finalVelo=0; } if(velo>0) { digState=LOW; finalVelo=round((155.0/99.0)*velo+(9745.0/99.0)); if(finalVelo>255) finalVelo=255; } if(velo<0) { digState=HIGH; finalVelo=round((155.0/99.0)*velo+(15500.0/99.0)); if(finalVelo<0) finalVelo=0; } analogWrite(port1,finalVelo); digitalWrite(port2,digState); } void setup(){ BT.begin(9600); // comunicacion serie entre Arduino y el modulo a 9600 bps pinMode( 6 , OUTPUT); pinMode( 8 , OUTPUT); } void loop(){ char datoRecibido = 0; // variable para almacenar caracter recibido if (BT.available()){ // si hay informacion disponible desde modulo datoRecibido = BT.read(); // almacena el caracter recibido desde modulo if( datoRecibido == '1' ){ // si el caracter recibido es el nĂºmero 1 for (int a=1; a<= 201 ; ++a ){ setMotor(6,8,5); // Se enciende el motor en sentido horario a velocidad 1 delay( 6 ); setMotor(6,8,0); // Se detiene el motor delay( 1 ); } } if( datoRecibido == '2' ){ // si el caracter recibido es el numero 2 for (int a=1; a<= 201; ++a ){ setMotor(6,8,-5); // Se enciende el motor en sentido anti horario a velocidad 1 delay( 5 ); setMotor(6,8,0); // Se detiene el motor delay( 4 ); } } } }