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.