Go Down

Topic: Problema urgente con mi codigo (Read 732 times) previous topic - next topic

CeciDPD

No puedo resolver esto. Me darias una manito por favor?

//motores+Ctrol remoto+leds

//definiendo constantes de motores
const int AIA = 3;
const int AIB = 11;
const int BIA = 9;
const int BIB = 10;

const int ledTest = 13;

#include <IRremote.h>

//definimos el control remoto

//seteo del receptor
int receptorControl = 2;
IRrecv receptorIR(receptorControl);
decode_results codigoLeido;
decode_results codigoLeidoNuevo;

//seteo del Led RGB
int ledRojo = 1;
int ledVerde = 12;
int ledAzul = 6;

//apagamos todo
int potenciaRojo = 0;
int potenciaVerde = 0;
int potenciaAzul = 0;

//Definir variables LEDS
int ledBlancoDerecha = 5;
int ledBlancoIzquierda = 4;
int ledRojoDerecha = 7;
int ledRojoIzquierda = 8;

void setup() {
  // definimos salidas
  pinMode (AIA, OUTPUT);
  pinMode (AIB, OUTPUT);
  pinMode (BIA, OUTPUT);
  pinMode (BIB, OUTPUT);

  pinMode (ledTest, OUTPUT);

  //todas las salidas apagadas
  analogWrite(AIA, 0);
  analogWrite(AIB, 0);
  analogWrite(BIA, 0);
  analogWrite(BIB, 0);

  digitalWrite(ledTest, LOW);

  Serial.begin(9600);

  // programamos para que empiece a detectar las señales infrarrojas
  receptorIR.enableIRIn();

  pinMode(ledRojo, OUTPUT);
  pinMode(ledVerde, OUTPUT);
  pinMode(ledAzul, OUTPUT);

  analogWrite(ledRojo, 0);
  analogWrite(ledVerde, 0);
  analogWrite(ledAzul, 0);

  pinMode(ledTest, OUTPUT);
  digitalWrite(ledTest, LOW);

  // iniciar pines de salida
  pinMode(ledBlancoDerecha, OUTPUT);
  pinMode(ledBlancoIzquierda, OUTPUT);
  pinMode(ledRojoDerecha, OUTPUT);
  pinMode(ledRojoIzquierda, OUTPUT);

  //apagar todos los leds
  digitalWrite(ledBlancoDerecha, LOW);
  digitalWrite(ledBlancoIzquierda, LOW);
  digitalWrite(ledRojoDerecha, LOW);
  digitalWrite(ledRojoIzquierda, LOW);

  pinMode(ledTest, OUTPUT);
  digitalWrite(ledTest, LOW);


  //Saludo inicial
  digitalWrite(ledTest, HIGH);
  delay(500);
  digitalWrite(ledTest, LOW);
  delay(500);
  digitalWrite(ledTest, HIGH);
  delay(500);
  digitalWrite(ledTest, LOW);
  delay(500);
  digitalWrite(ledTest, HIGH);
  delay(500);
  digitalWrite(ledTest, LOW);
  delay(500);
}

void loop() {
  // encender todos los leds por 1 segundo

  digitalWrite(ledBlancoDerecha, HIGH);
  delay(1000);
  digitalWrite(ledBlancoIzquierda, HIGH);
  delay(1000);
  digitalWrite(ledRojoDerecha, HIGH);
  delay(1000);
  digitalWrite(ledRojoIzquierda, HIGH);
  delay(1000);

  //apagar todos los leds
  digitalWrite(ledBlancoDerecha, LOW);
  delay(2000);
  digitalWrite(ledBlancoIzquierda, LOW);
  delay(2000);
  digitalWrite(ledRojoDerecha, LOW);
  delay (2000);
  digitalWrite(ledRojoIzquierda, LOW);
  delay(2000);

  // si recibe un nuevo dato, lo guarda como codigo leido nuevo


  if (codigoLeidoNuevo.value != codigoLeido.value && codigoLeidoNuevo.value != 0xFFFFFFFF)
    digitalWrite(ledTest, HIGH);
  delay(50);
  digitalWrite(ledTest, LOW);

  Serial.println(codigoLeido.value, HEX);

  //guardamos los nuevos valores
  codigoLeido = codigoLeidoNuevo;

  //switch compara el valor de la variable con lo especificado en el case de flecha para arriba
  switch (codigoLeido.value)

void adelante()
        analogWrite(AIA, 255);
        analogWrite(AIB, 0);
        analogWrite(BIA, 255);
        analogWrite(BIB, 0);
     
void atras()
  analogWrite(AIA, 0);
  analogWrite(AIB, 255);
  analogWrite(BIA, 0);
  analogWrite(BIB, 255);


void derecha()
  analogWrite(AIA, 255);
  analogWrite(AIB, 0);
  analogWrite(BIA, 0);
  analogWrite(BIB, 255);


void izquierda()
  analogWrite(AIA, 0);
  analogWrite(AIB, 255);
  analogWrite(BIA, 255);
  analogWrite(BIB, 0);
 
 
void parar()
  analogWrite(AIA, 255);
  analogWrite(AIB, 255);
  analogWrite(BIA, 255);
  analogWrite(BIB, 255);
  delay(500);

    //si apretamos flecha para arriba
    case 0xFF18E7:
      analogWrite(ledRojo, 0);
      adelante();
      delay(1500);
     

    //si apretamos flecha para abajo
    case 0xFF4AB5:
      analogWrite(ledRojo, 255);
      atras();
      delay(1500);
     
    //si apretamos flecha izquierda
    case 0xFF10EF:
      analogWrite(ledAzul, 255);
      izquierda();
      delay(1000);
      parar();
     
    //si apretamos flecha derecha
    case 0xFF5AA5:
      analogWrite(ledVerde, 255);
      derecha();
      delay(1000);
      parar();
     
    //si apretamos el ok
    case 0xFF38C7:
      analogWrite(ledVerde, 127);
      analogWrite(ledAzul, 127);
      analogWrite(ledRojo, 127);
     
     
    //si apretamos algo no definido, la led test parpadea
    default:
      digitalWrite(ledTest, HIGH);
      delay(200);
      digitalWrite(ledTest, LOW);
      delay(200);
      digitalWrite(ledTest, HIGH);
      delay(200);
      digitalWrite(ledTest, LOW);
      delay(200);
   

void adelante() {
        analogWrite(AIA, 255);
        analogWrite(AIB, 0);
        analogWrite(BIA, 255);
        analogWrite(BIB, 0);
     
void atras()
  analogWrite(AIA, 0);
  analogWrite(AIB, 255);
  analogWrite(BIA, 0);
  analogWrite(BIB, 255);


void derecha()
  analogWrite(AIA, 255);
  analogWrite(AIB, 0);
  analogWrite(BIA, 0);
  analogWrite(BIB, 255);


void izquierda()
  analogWrite(AIA, 0);
  analogWrite(AIB, 255);
  analogWrite(BIA, 255);
  analogWrite(BIB, 0);
 
 
void parar() {
  analogWrite(AIA, 255);
  analogWrite(AIB, 255);
  analogWrite(BIA, 255);
  analogWrite(BIB, 255);
  delay(500);

}

CeciDPD


Go Up