Una problema con un procedimiento

Gracias por leerlo..

Primero.. lo siento por mi español.. es muy mal. Estoy aprendiendo español hace diez meses. Hablo ingles pero tengo que practicar mi español.

Tengo un procedimiento.. se llama ¨RobotGo¨ esta procedimiento es por hacer un robot mueve. Esta robot tiene dos ruedas y dos motores.

Esta funciona:

void loop()                     
{
  float volts = analogRead(IRpin);   
  if (volts > 200)
  { 
    digitalWrite(2, HIGH);
     digitalWrite(3, LOW);
     digitalWrite(4, HIGH);
     digitalWrite(5, LOW);
   }    
   else
  {
   digitalWrite(2, LOW);
   digitalWrite(3, LOW);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);
  }  
}

Mi robot se mueve bien, cuando mi sensor detecta un objeto mi robot se pausa.

Pero cuando introduzco mi procedimiento mi robot no se mueve.

Mire!:

void RobotGo( int direction ) 
{
   switch( direction )
    {
      case 3 :  //robotSTRAIGHT
           { 
           digitalWrite(2, HIGH);
           digitalWrite(3, LOW);
           digitalWrite(4, HIGH);
           digitalWrite(5, LOW);
           }
          
           
      case 5 :  //robotSTOP          
          digitalWrite(2, LOW);
          digitalWrite(3, LOW);
          digitalWrite(4, LOW);
          digitalWrite(5, LOW);
            
    }  
}


void loop()                     
{
  float volts = analogRead(IRpin);   
  if (volts > 200)
  { 
   RobotGo( 3 );
   }    
  
  else
  {
   digitalWrite(2, LOW);
   digitalWrite(3, LOW);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);
  }  
}

Con mucho experimento he aprendido que si pongo una pausa en mi procedimiento como este:

void RobotGo( int direction ) 
{
   switch( direction )
    {
      case 3 :  //robotSTRAIGHT
           { 
           digitalWrite(2, HIGH);
           digitalWrite(3, LOW);
           digitalWrite(4, HIGH);
           digitalWrite(5, LOW);
          delay(50); //esta pausa es necesario!!
          }
          
           
      case 5 :  //robotSTOP          
          digitalWrite(2, LOW);
          digitalWrite(3, LOW);
          digitalWrite(4, LOW);
          digitalWrite(5, LOW);
            
    }  
}

Por qué?

Gracias por ayudarme..

Duncan.

Tengo una respuesta aqui:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1263763102/0#2

Gracias, Duncan.

Por eso el delay hacia qye funcionara, por lo menos durante 50 milisegundos podia avanzar.

La verdad es que mire tu código y se me paso que no estaba el break.

Me alegro de que ya te funcione.

Javier dijo:

La verdad es que mire tu código y se me paso que no estaba el break.

Si es verdad.. mi code no tiene el breaks!

Creo que aprendiendo Arduino/C++ es much mas facil que aprendiendo espanol!

Duncan.