Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

20/10/2015 #1


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.

Código 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=4194696960Codigo_ATRAS=3944021760//codigos de recepcion AGREGAR
  
unsigned long Codigo_DERECHA=4044291840Codigo_IZQUIERDA=4111138560;
void setup() //Inicializa y prepara los valores

{

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

pinMode(motorA1OUTPUT); //Configura como salida

pinMode(motorA2OUTPUT); //Configura como salida

pinMode(motorB1OUTPUT); //Configura como salida

pinMode(motorB2OUTPUT); //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.
21/10/2015 #2

Avatar de ElectroWero

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/...r-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:

21/10/2015 #3


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: http://articulo.mercadolibre.com.ar/...s-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!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Arduino y Raspberry Pi

Cerrar
Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.