Problemas con éste código para motor.

#1
Muy buenos días. He estado mirando este código, pero no puedo hacer que el void loop encadene las funciones, solo hace la primera pero no se por qué.
Soy nuevo en programación.
De antemano, muchas gracias por su tiempo y ayuda.

PHP:
int Velocidad=70;
int Velocidad2=70;
int Cero = 0;
int StopEn = 100;
int MotorIzqIN1 = 2;    // Input1 conectada al pin 2
int MotorIzqIN2 = 7;    // Input2 conectada al pin 7 
int MotorDerIN3 = 5;    // Input3 conectada al pin 5
int MotorDerIN4 = 4;    // Input4 conectada al pin 4 
int MotorDerENBa = 3;    // ENB conectada al pin 3 de Arduino
int MotorIzqENBb = 6;    // ENB conectada al pin 6 de Arduino

void setup() { 

 pinMode (MotorDerENBa, OUTPUT);
 pinMode (MotorIzqENBb, OUTPUT); 
 pinMode (MotorIzqIN1, OUTPUT);
 pinMode (MotorIzqIN2, OUTPUT);
 pinMode (MotorDerIN3, OUTPUT);
 pinMode (MotorDerIN4, OUTPUT);}

 
 void loop (){
      adelante();
      delay (1000);
      derecha;
      delay (1000);}
      
 void adelante(){
   while (Velocidad<100) {
 digitalWrite (MotorIzqIN1, LOW);
 digitalWrite (MotorIzqIN2, HIGH);
 digitalWrite (MotorDerIN3, HIGH);
 digitalWrite (MotorDerIN4, LOW);
        analogWrite(MotorDerENBa, Velocidad);
    analogWrite(MotorIzqENBb, Velocidad);
    delay (40);
    Velocidad++;
    if (Velocidad>=StopEn){
       digitalWrite (MotorIzqIN1, LOW);
       digitalWrite (MotorIzqIN2, LOW);
       digitalWrite (MotorDerIN3, LOW);
       digitalWrite (MotorDerIN4, LOW);
       analogWrite(MotorDerENBa, Cero);
       analogWrite(MotorIzqENBb, Cero);}}}
       
 void derecha(){
   while (Velocidad2<100) {
 digitalWrite (MotorIzqIN1, LOW);
 digitalWrite (MotorIzqIN2, HIGH);
 digitalWrite (MotorDerIN3, LOW);
 digitalWrite (MotorDerIN4, LOW);
        analogWrite(MotorDerENBa, Velocidad2);
    analogWrite(MotorIzqENBb, Cero);
    delay (40);
    Velocidad2++;
    if (Velocidad2>=StopEn){
       digitalWrite (MotorIzqIN1, LOW);
       digitalWrite (MotorIzqIN2, LOW);
       digitalWrite (MotorDerIN3, LOW);
       digitalWrite (MotorDerIN4, LOW);
       analogWrite(MotorDerENBa, Cero);
       analogWrite(MotorIzqENBb, Cero);}
   }}
 
Última edición por un moderador:
#3
y como hace para salir de la función?
fijate aquíhttps://www.arduino.cc/en/Reference/FunctionDeclaration
te estaria faltando un return, solo si no regresa nada return con un valor de retorno
Son void luego no retornan nada
Cuando llegue al } vuelve.

Sencillamente como el while se cumple siempre no sale de él.

¿Que significa "while (Velocidad<100) {"?
¿Que es It? y un punto y coma ahí enmedio no me cuadra

El if no lo entiendo, o es problema de códigos y no debe de ser lo que veo o está mal
¿&It es > o < o algo así?
 
Última edición:

pandacba

Rocker Bear
#5
Para que tu código no cambien no utilices html
Envuelvela con la etiqueta code(#)

Si bien el void se utiliza para declarar una función que no devuelve nada.
Pero esa función tiene condicionales que se deben cumplir y una vez satisfechos volver yo prefiero no utlizar el void y poner al final de la función return solo return 0 que te garantiza el retorno una vez satisfecha la condición.....
 
Última edición:
Arriba