Arduino mando ir, mas puente H, no controla mas de una función

Hace tiempo que no tocaba arduino, pero me estoy metiendo un poco más en él.
Quiero controlar hacia adelante, hacia atrás, izquierda y derecha de un coche de RC.

PHP:
#include <Arduino.h>
#include <NECIRrcv.h>

#define IRPIN 8   // pin that IR detector is connected to


static int aux = 1;

NECIRrcv ir(IRPIN) ;

//L293 Connection   
  const int motorA1  = 11;  // Pin  2 of L293
  const int motorA2  = 10;  // Pin  7 of L293
  const int motorB1  = 7; // Pin 10 of L293
  const int motorB2  = 6;  // Pin 14 of L293

  unsigned long Codigo_ADELANTE=4194696960, Codigo_ATRAS=3944021760; //codigos de recepcion AGREGAR
  unsigned long Codigo_DERECHA=4044291840, Codigo_IZQUIERDA=4111138560;
void setup() //Inicializa y prepara los valores

{

Serial.begin(9600); //Abre el puerto serie a 9600 bps

pinMode(motorA1, OUTPUT); //Configura como salida

pinMode(motorA2, OUTPUT); //Configura como salida

pinMode(motorB1, OUTPUT); //Configura como salida

pinMode(motorB2, OUTPUT); //Configura como salida

Serial.println("NEC IR code reception") ;

ir.begin() ;

}

void loop() //La funcion loop se ejecuta consecutivamente

{

 unsigned long ircode ;
 while (ir.available()){
   ircode = ir.read() ;
   Serial.println(ircode) ;
    if(ircode == Codigo_ADELANTE){
       if(aux == 0){
        digitalWrite(motorB1,LOW);
        digitalWrite(motorB2,LOW);
        aux = 1;
      }
      else{
        digitalWrite(motorB1,HIGH);
        digitalWrite(motorB2,LOW);
        aux = 0;
        }
      if(ircode == Codigo_ATRAS){
       if(aux == 0){
        digitalWrite(motorA1,LOW);
        digitalWrite(motorA2,LOW);
        aux = 1;
      }
      else{
        digitalWrite(motorA1,HIGH);
        digitalWrite(motorA2,LOW);
        aux = 0;        
       }

     } 
       
    }
  
  }
}

No entiendo cómo funciona el aux.
Entiendo que al pulsar una vez, hace una función u otra, ¿pero cómo meto más de uno?
Ya que no funciona más que el adelante. El puente H funciona bien, está probado.
 
Última edición por un moderador:
Hay que modificar el code pero el principal problema esta en La librería NEC, que usa el timer2 que controla los pines 11 y 3.

Pins 11: controlled by Timer2

En PWM no use la 11 ni la 3 reemplace por la 5.

La variable Static quiere decir que solo será accesible desde esta función, pero que su valor no desaparecerá al salir, persistirá en el tiempo mientras no cerremos el programa, y seguira conservando su último valor.


Por aqui hay uno de 10 y bien explicado.


http://electronicavm.net/2014/01/05/robot-controlado-por-infrarrojos/



Pero eso de controlarlo a IR se acorta la distancia, y si hay un obstáculo ahi queda el robot, tampoco es muy preciso.

Mejor controlarlo a bluetooth a poco no:

 
Última edición:
Buenas, hace unos años (cuando las cosas eran mas baratas jaja) arme uno de estos para una materia de la facu. Lo resolvi con un mando RC de 6 canales si mal no recuerdo. Algo asi: Buscar en Mercadolibre: MLA-581821185-radio-emisor-7-canales-receptor-_JM
donde el receptor lo conecte a las entradas analogicas del arduino. (solamente utilice dos canales) y en el codigo no utilice ninguna librería para hacerlo bastante mas optimo. El codigo no lo tengo, se fue cuando me robaron mi otra notebook pero puedo orientarte mas o menos como lo hice.

utilice solamente uno de los lados del control RC donde al hacer para arriba o abajo aceleraba y hacia los laterales debia doblar. Así como el que planteas, para doblar necesita variar la aceleración en cada una de sus ruedas y el programa solamente necesita calcular la aceleración pertinente a cada rueda.

La aceleración(eje vertical del RC) el programa la veía como un vector y la dirección(eje horizontal del RC) la veia como un vector perpendicular a la haceleración en base a la suma de esos dos vectores tenes la DES-ACELERACION de uno de los ejes.

Una de las ruedas siempre tiene la aceleración total colocada en el eje vertical del RC y la otra se frena en proporción a cuanto resulte la suma de esos vectores. No se como explicarlo mejor sin graficos jaja.

Saludos y suerte!
 
Atrás
Arriba