Show Posts
Pages: [1]
1  Forum 2005-2010 (read only) / Español / Re:  Espera activa. on: March 16, 2010, 07:21:34 pm
Buenoo!! ya esta solucionado lo solucionamos un rato despues de poner este post, el problema estaba que cuando entrbamos en el FOR no le deciamos que leiera el sensor por eso no salia de la rutina!!

Graicas
2  Forum 2005-2010 (read only) / Español / Espera activa. on: March 12, 2010, 04:08:45 pm
Buenas tengo una placa orangutan LV-168 que la programamos con arduino, tenemos que hacer una espera activa, o eso nos han dixo los profesores. EL ROBOT se encuentra dando vueltas, cuando detecte presencia cn GP2d12 tiene que empujar el oponente y si mientras que empuja o da vueltas detecta linea blanca con el sensores de linea tiene q salir de empujar o dar vueltas y modificar la posicion hasta que no detecte linea blanca XX's segundos, y que vuela al bucle otra vez, este es el codigo que tenemos hasta ahora:


void loop()                                     // S'executa permanentment en forma de bucle
{
  gp2d12Adc = analog.readAverage(GP2D12, NUM_MOSTRES_GP2);  // Llegeix el canal 5 del ADC corresponent al sensor GP2D12
                                                            // Retorna un valor entre 0 - 1023 (0V - 5V)
                                                            // Fa 'NUM_MOSTRES_GP2' mostres (en el nostre cas 20) i en fa la mitja
                                                            // Cada mostra tarda aprox. 100us, per tant, una lectura completa en el
                                                            // nostre cas, suposa aprox. 100us x 20 = 2ms
  gp2d12mV = analog.toMillivolts(gp2d12Adc);    // Converteix el valor format 10bits a Milivolts de l'entrada Analògica (0 - 5000mV)
  
  lcd.gotoXY(0,0);                              // Situa cursor a XY=(0,0) -> posició 0, línea 0
  lcd.print("GP2:");                            // Mostra text per LCD (8 caràcters) sobrescriu contingut
  lcd.print(gp2d12Adc);                         // Printa valor format 10bits a continuació de "GP2:"
  lcd.print("    ");                            // Printa 4 espais a continuació per si es passa d'escriure 4 dígits a 3, 2 o 1
  
  lcd.gotoXY(2,1);                              // Situa cursor a XY=(2,1) -> posició 2, línea 1
  lcd.print(gp2d12mV);                          // Printa valor format Milivolts
  lcd.print("mV");                              // Printa "mV" a continuació del valor en milivolts
  lcd.print("    ");                            // Printa 4 espais a continuació per si es passa d'escriure 4 dígits a 3, 2 o 1
  

                          
  qtr.read(sensorsLinea);                         // Llegeix els sensors configurats, escriu lectures a 'sensorsLinea[]'  

  if (sensorsLinea[0] < LLINDAR_LINEA)
     {
          motors.setSpeeds(-motorSpeed, motorSpeed);                             //Quan detecta sensor dret es mou eskerra
          delay(750);
          motors.setSpeeds(motorSpeed, motorSpeed);
          delay(300);
     }
        
  else if (sensorsLinea[5] < LLINDAR_LINEA)                                     //Quan detecta sensor eskerre es mou dreta
     {
          motors.setSpeeds(motorSpeed, -motorSpeed);
          delay(750);
          motors.setSpeeds(motorSpeed, motorSpeed);
          delay(300);
      }
    
  else                                                                           // QUAN ESTEM SOBRE NEGRE
  {
    
    for(int i=0; i<300; i++)
    {
      gp2d12mV = analog.toMillivolts(analog.readAverage(GP2D12, NUM_MOSTRES_GP2));  // Llegeix el canal 5 del ADC corresponent al sensor GP2D12
                                  
    
    if(gp2d12mV > LLINDAR_GP2D12)                 // DETECTEM RIVAL
    {
      leds.red(HIGH);                              // Si detecta, Enciende LED vermell
      motors.setSpeeds(motorSpeed, motorSpeed);
  
      if((sensorsLinea[0] < LLINDAR_LINEA) | (sensorsLinea[5] < LLINDAR_LINEA))      // QUAN DETECTEM LA LÍNEA, TIREM ENRERE DURANT 2SEGONS
        {
          motors.setSpeeds(0,0);
          
          //if (i>10)                                    //evitar rebots
            i=300;                                      //sortida
        }
      
    
    }
    else
    {
       leds.red(LOW);                            // Apaguem LED vermell
      motors.setSpeeds(-motorSpeed, motorSpeed);   // girem
      
      if((sensorsLinea[0] < LLINDAR_LINEA) | (sensorsLinea[5] < LLINDAR_LINEA))      // QUAN DETECTEM LA LÍNEA, TIREM ENRERE DURANT 2SEGONS
        {
          motors.setSpeeds(0,0);
          //if (i>10)                                    
            i=300;                                      
        }
    }
  
          

    delay (10);  


llinadr linea= al valor que nos dice si es blanco o negro


el problema que tenemos es que cuando detecta oponente empuja pero pasa por la linea blanca y no retrocede, nose si es mejor parar los motores un instante y luego retrocenda o no se que podemos hacer..

Gracias
3  Forum 2005-2010 (read only) / Español / Sonido metal gear en BUZZER on: February 26, 2010, 09:25:07 am
Buenas!

SOy nuevo en el mundo este de la robotica y tal, estamos motnando un robot para mini-sumo con la placa Orangutan LV-168 y queriamos intentar poner el sonido de alerta del metal gear cuando t ve un soldado. hemos visto que se pueden crear diferentes melodias, mi duda es como puedo hacer para crear este sonido en arduino y si podra reproducirlo el buzzer de mi placa.

Muchas Gracias
Pages: [1]