Mecatronica

https://metodologia.pygmalionrobotics.com/U2S2%20-%20Ensamble%20Innobot,%20Primer%20Programa.pdf
 
/* Carro a control remoto con Bluetooth
SE LE AGREGO LOS BOTONES DE LA APLICACIÓN
J: GIRO EN U IZQUIERDA
K: GIRO EN U DERECHA
L:90 Grados izquierda
P:90 Grados derecha
G:Enciende LED puerto 13. Se apaga presionandolo dos veces y de parar -c-¿?¿?¿ o con automatico
H:Enciende LED puerto 11 y 12, secuencia. Se apaga de parar -c-
 
CONEXION MOTORES
ARDUINO   L293D(Puente H)        
 5          10
 6          15
 9          7
 10         2
 5V         1, 9, 16
 GND        4, 5, 12, 13
 
 El motor 1 se conecta a los pines 3 y 6 del Puente H
 El motor 2 se conecta a los pines 11 y 14 del Puente H
 
 La fuente de alimentacion de los Motores se conecta a tierra y
 el positivo al pin 8 del puennte H. 
 
 Conexion del Modulo Bluetooth HC-06 y el Arduino
 ARDUINO    Bluetooth HC-06 
 0 (RX)       TX
 1 (TX)       RX
 5V           VCC
 GND          GND
 !!Cuidado!! Las conexiones de TX y RX al modulo Bluetooth deben estar desconectadas
 en el momento que se realiza la carga del codigo (Sketch) al Arduino.
 
 Conexion Sensor Ultrasonido HC-SR04
 ARDUINO    Ultrasonido HC-SR04 
 2            Echo
 3            Trig
 5V           VCC
 GND          Gnd
 
 Conexión Sensores CNY70`S
 Arduino     
 AO  --CNY DERECHA         
 A1  --CNY IZQUIERDA
 */
int y = 1; //segun el foro de arduino cuando aparece
//int z = 0; //collect2.exe: error: ld returned 5 exit status
//int w = 0; // se coloca esas tres variables y soluciono el problema
 
int CNYA;    // declara 'CNYA'
int CNYB;    // declara 'CNYB'
 
int izqA = 5; 
int izqB = 6; 
int derA = 9; 
int derB = 10; 
int vel = 255;            // Velocidad de los motores (0-255)
int estado = 'c';         // inicia detenido
 
int pecho = 2;            // define el pin 2 como (pecho) para el Ultrasonido
int ptrig = 3;            // define el pin 3 como (ptrig) para el Ultrasonido
int duracion, distancia;  // para Calcular distancia
 
 
void setup()  { 
  Serial.begin(9600);    // inicia el puerto serial para comunicacion con el Bluetooth
  pinMode(derA, OUTPUT);
  pinMode(derB, OUTPUT);
  pinMode(izqA, OUTPUT);
  pinMode(izqB, OUTPUT);
  
  pinMode(pecho, INPUT);   // define el pin 2 como entrada (pecho) 
  pinMode(ptrig,OUTPUT);   // define el pin 3 como salida  (ptrig) 
  pinMode(13,OUTPUT);
  
 pinMode(A0, INPUT);   // define el pin A0 como entrada para CNY 
 pinMode(A1, INPUT);   // define el pin A1 como entrada CNY 
 
 pinMode(11, OUTPUT); // Se configuran pin 11 como salida
 pinMode(12, OUTPUT); // Se configuran pin 12 como salida
 
void loop()  { 
 
  while (Serial.available()>0){        // lee el bluetooth y almacena en estado
    estado = Serial.read();
  }
  if(estado=='a'){           // AL FRENTE
    analogWrite(derA, vel);  
    analogWrite(izqA, vel);       
  }
  if(estado=='b'){          // IZQUIERDA 
    analogWrite(izqA, vel); 
  }
  if(estado=='c'){         // PARAR
    analogWrite(derB, 0);     
    analogWrite(izqB, 0); 
    analogWrite(derA, 0);    
    analogWrite(izqA, 0);
    digitalWrite(11,LOW);  
    digitalWrite(12,LOW); 
  }
  if(estado=='d'){          // DERECHA
    analogWrite(derA, vel);  
  } 
 
  if(estado=='e'){          // REVERSA
    analogWrite(derB, vel);  
    analogWrite(izqB, vel);      
  }
  
  if (estado =='f'){          // SENSAR DISTANCIA 
     digitalWrite(ptrig, HIGH);   // genera el pulso de trigger por 10us
     delay(0.01);
     digitalWrite(ptrig, LOW);
     
     duracion = pulseIn(pecho, HIGH);              // Lee el tiempo del Echo
     distancia = (duracion/2) / 29;            // calcula la distancia en centimetros
     delay(10); 
     
     if (distancia <= 15 && distancia >=2){    // si la distancia es menor de 15cm
        digitalWrite(13,HIGH);                 // Enciende LED
        
        analogWrite(derB, 0);                  // Parar los motores por 200 mili segundos
        analogWrite(izqB, 0); 
        analogWrite(derA, 0);    
        analogWrite(izqA, 0); 
        delay (200);
        
        analogWrite(derB, vel);               // Reversa durante 500 mili segundos
        analogWrite(izqB, vel); 
        delay(500);           
        
        analogWrite(derB, 0);                // Girar durante 1100 milisegundos   
        analogWrite(izqB, 0); 
        analogWrite(derA, 0);  
        analogWrite(izqA, vel);  
        delay(1100);
        
        digitalWrite(13,LOW);
     }
     else{                   // Si no hay obstaculos se desplaza al frente  
         analogWrite(derB, 0);     
         analogWrite(izqB, 0); 
         analogWrite(derA, vel);  
         analogWrite(izqA, vel); 
     }
  }
  if(estado=='g'){          // INTERMITENCIA PUERTO 11 Y 12, SE APAGA CON PARA -C-
        digitalWrite(11, LOW);
        digitalWrite(12, LOW);
        delay(80); //retardo
        digitalWrite(11, HIGH);
        delay(80); //retardo
        digitalWrite(11, LOW);
        digitalWrite(12, HIGH);
        delay(40); //retardo
  }
  
  if(estado=='h'){          // SEGUIDOR DE LINEA
    CNYA =analogRead(A0); //LA LECTURA PARA PASARLO A VOLTIOS SE MULTIPLICA POR 5 Y DIVIDE 1023 
    CNYB =analogRead(A1); //NO ES NECESARIO SE COMPARA CON 205 (APROXIMADAMENTE 1V)
 
if (CNYA<205){
   analogWrite(derA, vel);     
             } 
   else {
   analogWrite(derA, 0);     
   }
  
if (CNYB<205){
   analogWrite(izqA, vel);  
             } 
   else {
   analogWrite(izqA, 0);    
   }
 
 }
 
  if(estado=='j'){          // GIRO U IZQUIERDA
        analogWrite(izqA, vel);  
        delay(1111); 
        analogWrite(derA, vel); //Seguir adelante
 
                 }
 
  if(estado=='k'){          // GIRO U DERECHA
        analogWrite(derA, vel);
        delay(1111); 
        analogWrite(izqA, vel);//Seguir adelante
                 }
                 
if(estado=='l'){          // GIRO DE 90 GRADOS IZQUIERDA
        analogWrite(izqA, vel); 
        delay(555); 
        analogWrite(derA, vel); //Seguir adelante
                 }
 
if(estado=='p'){          // GIRO 90 GRADOS DERECHA
        analogWrite(derA, vel);  
        delay(555); 
        analogWrite(izqA, vel);   //Seguir adelante
              }
 
 if(estado=='n'){          // Boton P1 (aplicacion), enciende puerto 13
        if (y == 1){
        digitalWrite(13,HIGH);                 // Enciende LED
        y = 0;
             }
        else{
        digitalWrite(13,LOW);                 // APAGA LED
        y = 1;
            }
              }
}

© 2013 Todos los derechos reservados.

Crea una web gratisWebnode