Like a la pagina de Facebook!

'Todo con medida.

martes, 30 de junio de 2015

Programación

//#include <EEPROM.h

// Buscanos en Facebook como Sleep & Listen
//------------------- Sumobot -----------------

// ------------------------------- Definiciones
#define      cPisoDer      A2  // Canal de piso derecha
#define      cPisoIzq      A3  // Canal de piso izquierda
#define      cDistIzq      A1  // Canal de distancia izquierda
#define      pista         0
#define      linea         1
#define      DerA          10
#define      DerB          11
#define      IzqA          9
#define      IzqB          6
#define      rFrente        'F'
#define      rAtras         'A'
#define      rDerecha       'D'
#define      rIzquierda     'I'
#define      memRutina      0



// ------------------------------- Varibales
int pisoDer;
int pisoIzq;
float distIzq;
int negroBlanco = 400;    // Este valor define si es linea o pista
int pwmDer = 255;
int pwmIzq = 255;
int error;
char rutina;


// ------------------------------- Configuraciones
void setup()
{
  Serial.begin(9600);
  pinMode(DerA,OUTPUT);
  pinMode(DerB,OUTPUT);
  pinMode(IzqA,OUTPUT);
  pinMode(IzqB,OUTPUT);
  detener();
  primerRutina();
}

// ------------------------------- Principal
void loop()
{
  leerPiso();
  while((pisoDer == pista) && (pisoIzq == pista)) // Mientras ambos esten en la pista
  {
    pelear();
    leerPiso();
    //Serial.println();
  }
  defender();
  //Serial.println();
}


// ------------- FUNCIONES --------------------
// -------------------------------- defender
void defender()
{
  //Serial.print("Defender");
  if((pisoDer == linea) && (pisoIzq == pista))
  {
    atras();
    delay(300);
    izquierda();
    delay(130);
  }
  else if((pisoIzq == linea) && (pisoDer == pista))
  {
    atras();
    delay(300);
    derecha();
    delay(130);
  }
  else
  {
    atras();
    delay(300);
  }
}


// -------------------------------- pelear
void pelear()
{
  //Serial.print("Pelear");
  leerDist();
  //adelante();
 
 
    error = -distIzq;
   // si el error es negativo gira a la izquierda
   if(error < -5)
   {
     pwmDer = 255;
     pwmIzq = 0; //velocidades motores
   }
   else if(error > 5)
   {
     pwmDer = 0;
     pwmIzq = 255;
   }
   else
   {
     pwmDer = 255;
     pwmIzq = 255;// (:
   }
   adelante();
 
    
}
// -------------------------------- primerRutina
void primerRutina()
{
  //Serial.print("PrimerRutina ");
  if(rutina == rDerecha)
  {
    derecha();
    delay(50);
  }
  else if(rutina == rIzquierda)
  {
    izquierda();
    delay(50);
  }
  else if(rutina == rAtras)
  {
    derecha();
    delay(100);
  }
 
}

// -------------------------------- adelante
void adelante()
{
  digitalWrite(DerA,HIGH);
  digitalWrite(DerB,LOW);
  digitalWrite(IzqA,HIGH);
  digitalWrite(IzqB,LOW);
 
  analogWrite(DerA,pwmDer);
  digitalWrite(DerB,LOW);
  analogWrite(IzqA,pwmIzq);
  digitalWrite(IzqB,LOW);
}

// -------------------------------- derecha
void derecha()
{
  //Serial.print("Derecha");
  digitalWrite(DerA,LOW);
  digitalWrite(DerB,HIGH);
  digitalWrite(IzqA,HIGH);
  digitalWrite(IzqB,LOW);
}

// -------------------------------- izquierda
void izquierda()
{
  //Serial.print("Izquierda");
  digitalWrite(DerA,HIGH);
  digitalWrite(DerB,LOW);
  digitalWrite(IzqA,LOW);
  digitalWrite(IzqB,HIGH);
}

// -------------------------------- atras
void atras()
{
  //Serial.print("Atras");
  digitalWrite(DerA,LOW);
  digitalWrite(DerB,HIGH);
  digitalWrite(IzqA,LOW);
  digitalWrite(IzqB,HIGH);
}

// -------------------------------- detenido
void detener()
{
  //Serial.print("Detenido");
  digitalWrite(DerA,LOW);
  digitalWrite(DerB,LOW);
  digitalWrite(IzqA,LOW);
  digitalWrite(IzqB,LOW);
}

// -------------------------------- Leer_dist
void leerDist()
{
 // Leer Sensor de piso y se convierte a centimetros
  distIzq = analogRead(cDistIzq)*0.0048828125;

  distIzq = 30*pow(distIzq, -1.10);
 
  //Serial.print("\t");
  //Serial.print(distDer);
  //Serial.print("\t");
  //Serial.print(distIzq);
  //Serial.print("\t");
}


// -------------------------------- Leer_Piso
void leerPiso()
{
  // Leer Sensores de piso y los binariza
  // entre pista y linea
 // Serial.print("\t");
  pisoDer = binSensor(analogRead(cPisoDer));
 // Serial.print("\t");
  pisoIzq = binSensor(analogRead(cPisoIzq));
  //Serial.print("\t");
 
}

// ----------------------- binSensor
// ayuda a diferenciar entre pista y linea
int binSensor(int sen)
{
  if(sen < negroBlanco)  // arriba de este valor se distingue linea
  {
    //Serial.print("linea");
    return linea;
  }
  else
  {
   // Serial.print("pista");
    return  pista;
  }
}

Planos, Ejemplo Simple y Corte Laser de Ejemplo Simple.

lunes, 29 de junio de 2015

Materiales


- 2 Motorreductores con llanta
- 1 Sensor Ultrasonico
- 1 Arduino Uno o equivalente
- 1 Sensor CNY70
- Sintra (Plastico Termodeformable)
- Pila Lipo de 11V o 9V


martes, 16 de junio de 2015

Entrevista

lunes, 15 de junio de 2015

La evolución de la robótica

Un pequeño panorama de lo sorprendente que resulta la evolución en dispositivos eletrónicos , específicamente robots...

Coordinación y control de robots

Un tema importante... el control de nuestros dispositivos, la coordinación también.

 

Electrónica Básica

Una base fundamental y prioritaria, ya que sin conocimientos en elctrónica no prodríamos concebir nuestros proyectos.

 

martes, 9 de junio de 2015

Juego :D

miércoles, 3 de junio de 2015

Video explicacion de motorreductores.


lunes, 1 de junio de 2015

Construcción del sumobot

Primeros pasas de desarrollo...


miércoles, 27 de mayo de 2015

Primera parte de desarrollo (Chasis)

lunes, 25 de mayo de 2015

introduccion

Un sumobot: Es una competencia donde diferentes participantes llevan a sus propios robots construidos para ponerlos a pelear con otros robots, el sumobot es una plataforma robótica autónoma diseñada para pelear igual que en el arte Japonés de la lucha de sumo. La plataforma posee la habilidad de reconocer el área de combate realizando una localización rápida de su oponente con el propósito de enfrentarse utilizando diferentes estrategias a fin de conseguir el principal objetivo de expulsar a su oponente fuera de esta área.


.