martes, 13 de septiembre de 2016

CÓDIGO EJEMPLO CINEMÁTICA INVERSA PARA ROBOT TIPO SERPIENTE CON LOCOMOCIÓN 2D

Cordial Saludo,

Apreciados estudiantes,

Este es el codigo para ser implementado en guide, realizar comunicacion entre matlab y arduino.

DESCARGAR

lunes, 5 de septiembre de 2016

TRABAJO EN SOFTWARE MATLAB PARA ASIGNATURA SEMINARIO MATLAB.

Cordial Saludo,

Apreciados estudiantes,

El trabajo para la asignatura seminario Matlab sera entregado en formato IEEE, para la clase del día 09 de septiembre del presente año, tener presente que este mismo día es parcial.

Descargar Aqui

sábado, 20 de agosto de 2016

CODIGO EJEMPLO PARA VALIDACION DE BIFURCACION EN ROBOT LABERINTO

Cordial Saludo,




Apreciados estudiantes, expongo código para lo mencionado en la Asignatura Microcontroladores II.





Tener en cuenta los comentarios allí expuestos:








/*
Seguidor de Linea con sesores QTR-8RC o digitales
      0= NEGRO
      1= BLANCO
      IMPORTANTE LEER LINEAS 52 Y 61
*/
#include <QTRSensors.h>
#define NUM_SENSORS   6     // Numero de Sensores a Usar
#define TIMEOUT       2000
#define EMITTER_PIN   38    // Pin de LEDON
#define HIST  300          // Valor de fluctuacion de sensores
QTRSensorsRC qtrrc((unsigned char[]) {2,3,4,5,6,7}, //Pines donde van conectados los sensores
 NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];

unsigned int sensores = 0;
unsigned int estado1=0;
unsigned int estado2=0;

void setup(){
  Serial.begin(9600);
  delay(2000);
}
void loop(){
  leersensores();
  //Determinar dependiendo de las posibilidades
  switch (sensores) {
    case B110011:    //adelante
      adelante();
      break;
    case B100111:    //izquierda
    case B001111:
    case B110111:
    case B101111:
    case B011111:
      izquierda();
      break;
    case B111001:    //derecha
    case B111100:
    case B111011:
    case B111101:
    case B111110:
      derecha();
      break;
    case B000111:    //llego a bifurcacion que usted programa Aca delimita el codigo para el antes
    case B000011:
      bifurcacion();
      imprime();
      break;
  }
}
void imprime(){
  Serial.println("La medicion para la viburcacion (aqui describen en tipo) es:");
  Serial.print("Antes:    ");
  Serial.println(estado1,BIN);
  Serial.print("Despues:  ");
  Serial.println(estado2,BIN);
}
void bifurcacion(){
  estado1 = sensores;
  adelante();
  delay(100);
  leersensores();
  estado2 = sensores;
  parar();
}
void parar(){
  analogWrite(5,0);
  analogWrite(3,0);
  analogWrite(9,0);
  analogWrite(6,0);
}
void adelante(){
  analogWrite(5,0);
  analogWrite(3,200);
  analogWrite(9,0);
  analogWrite(6,200);
}
void izquierda(){
  analogWrite(9,0);
  analogWrite(6,200);
  analogWrite(5,0);
  analogWrite(3,50);
}
void derecha(){
  analogWrite(9,0);
  analogWrite(6,50);
  analogWrite(5,0);
  analogWrite(3,200);
}
void leersensores(){    //Determinar dependiendo de cuantos sensores utiliza
  qtrrc.read(sensorValues);
  sensores = 0;
  for (int i=0;i<=7;i++){
    if (sensorValues[i]<HIST)
      bitClear(sensores,i);
    else
      bitSet(sensores,i);
  }
    //Serial.println(sensores,BIN);
}



miércoles, 18 de mayo de 2016

EJEMPLO CONVERSOR BINARIO A BCD SIN UTILIZAR 74XX185

Cordial Saludo,

Apreciados Estudiantes,

Teniendo en cuenta la poca localización del elemento 74xx185, coloco a disposición una solución practica frente a este trabajo.

Tener en cuenta que este vídeo o generación de conversión no es de mi propiedad intelectual, comparto según reglamentos de youtube y dejo link a su origen para conocer el autor.



Link: https://www.youtube.com/watch?v=-5D89pz2hoU

Ante cualquier inquietud referir al correo: cbarrios1@udi.edu.co

lunes, 9 de mayo de 2016

Programa Prueba Seguidor de Linea Para Estado Básico de Robot Laberinto

Cordial Saludo,

Expongo el código Base para el control del seguidor de linea para Robot Laberinto con tarjeta Arduino que poseen sensores QTR.

Seguir Las instrucciones para la instalación de la librería.

DESCARGAR



lunes, 2 de mayo de 2016

CÓDIGO DE EJEMPLO PARA SOLUCIÓN ALGORITMO DE LABERINTO POR MANO IZQUIERDA MÉTODO POR INTRODUCCIÓN DE DATOS SERIAL

Cordial Saludo,

Adjunto código de ejemplo para la asignatura Microcontroladores 1.


Código:


/* Solucion ALgoritmo Robot Laberinto tipo seguidor de linea con tipologia de mano izquierda
 *  
 *  Estas son las tres secuencias a determinar:
    LBR = B
    LBS = R
    RBL = B
    SBL = R
    SBS = B
    LBL = S
 *  
 */
char c;
int pos=0;
char letras[200];
int imp = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  recogerdatos();
  procesardatosaltiempo();
  imprimirdatos();
}

void recogerdatos(){
  if (Serial.available()>0){
    c = Serial.read();
    if ((c == 'R')||(c == 'L')||(c == 'S')||(c == 'B')){
      letras[pos] = c;
      Serial.print(c);
      pos++;
    }else if (c == 'F'){
      imp = 1;
    }else{
      Serial.print(c);
      Serial.println(" No es un Dato Permitido");  
    }
  }  
}

void imprimirdatos(){
  if (imp == 1){
    Serial.println();
    Serial.println(letras);
    imp = 0;
    for (int i=0;i<pos;i++){
      letras[i] = ' ';
    }
    pos = 0;
  }
 }

void procesardatosaltiempo(){
  if (pos>=3){
    if (letras[pos-2]=='B'){
      if (((letras[pos-3]=='L')&&(letras[pos-1]=='R'))||
          ((letras[pos-3]=='R')&&(letras[pos-1]=='L'))||
          ((letras[pos-3]=='S')&&(letras[pos-1]=='S'))){
        letras[pos-3] = 'B';
        letras[pos-2] = ' ';
        letras[pos-1] = ' ';
        pos = pos - 2;
      }
      if (((letras[pos-3]=='L')&&(letras[pos-1]=='S'))||
          ((letras[pos-3]=='S')&&(letras[pos-1]=='L'))){
        letras[pos-3] = 'R';
        letras[pos-2] = ' ';
        letras[pos-1] = ' ';
        pos = pos - 2;
      }
      if ((letras[pos-3]=='L')&&(letras[pos-1]=='L')){
        letras[pos-3] = 'S';
        letras[pos-2] = ' ';
        letras[pos-1] = ' ';
        pos = pos - 2;
      }
    }
  }
}

jueves, 28 de abril de 2016

Código Ejemplo Cinemática Inversa Brazo Robot control con Arduino

Cordial Saludo,

Código de Ejemplo para conexión Matlab con Arduino, para sistema de cinemática inversa para brazo robot de 4GDL.

DESCARGAR CODIGO

INFO DE RECOPILACIÓN PARA ENTENDIMIENTO DE LÓGICA DE SOLUCIÓN DE LABERINTO PARA uC1

Cordial Saludo

Apreciados Alumnos,

La información mínima se encuentra en los siguientes Links.

http://patrickmccabemakes.com/hardware/Maze_Solving_Robot_V3/



Debe saber que no solo los únicos referentes, puede encontrar otros que ayuden en el entendimiento del algoritmo para implementarlo en su proyecto.

viernes, 1 de abril de 2016

Programa Ejemplo para control de 4 Servos por Comunicación Serial

#include <Servo.h>

String trama = "";
String aux = "";
int procesar = 0;
int vs1 = 1500;
int vs2 = 1500;
int vs3 = 1500;
int vs4 = 1500;

int pins1 = 9;
int pins2 = 10;
int pins3 = 11;
int pins4 = 12;

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

void setup() {
  servo1.attach(pins1);
  servo2.attach(pins2);
  servo3.attach(pins3);
  servo4.attach(pins4);

  Serial.begin(9600);
  Serial.println("Control del Brazo Robot");
}

void loop() {
  if (Serial.available() > 0) {       //recolecta los datos del puerto serial
    char dato=Serial.read();
    if(((dato >= '0')&&(dato <= '9')) || (dato == '<') || (dato == '>')){
        trama = String(trama + dato);
    }
    if (dato == '>'){                 //reconoce si es el fin de trama
      procesar = 1;
      Serial.print("Trama Total: ");  // se envia la trama complet para visualizarla
      Serial.println(trama);
    }
  }
  if (procesar == 1){
    aux = trama.substring(1,5);
    Serial.print("SubTrama 1: ");     //se envia el valor del primer servo
    vs1 = aux.toInt();
    Serial.println(vs1);
    aux = trama.substring(5,9);
    Serial.print("SubTrama 2: ");     //se envia el valor del segundo servo
    vs2 = aux.toInt();
    Serial.println(vs2);
    aux = trama.substring(9,13);
    Serial.print("SubTrama 3: ");     //se envia el valor del tercer servo
    vs3 = aux.toInt();
    Serial.println(vs3);
    aux = trama.substring(13,17);
    Serial.print("SubTrama 4: ");     //se envia el valor del cuarto servo
    vs4 = aux.toInt();
    Serial.println(vs4);
    procesar = 0;
    trama = "";
  }
  servo1.writeMicroseconds(vs1);
  delay(15);
  servo2.writeMicroseconds(vs2);
  delay(15);
  servo3.writeMicroseconds(vs3);
  delay(15);
  servo4.writeMicroseconds(vs4);
  delay(15);
}

lunes, 29 de febrero de 2016

Laboratorio de DIGITALES

Diseñar e implementar un circuito por método de reducción por Mapas de Karnaugh al que se le introducen los 4 bits de un código hexadecimal y cuya salida es la excitación para activar un display de 7 segmentos, de acuerdo con la figura adjunta. 

NOTA: Tomar D como el bit más significativo.




Para el desarrollo del montaje tener en cuenta los siguientes datos de los integrados.

Los dispositivos electrónicos poseen en su referencia una serie de valores que representan características propias de estos, donde los mas comunes son HC.

Ejemplo:
74XX04   
Donde XX representa la característica o modificación realizada por el fabricante.


codigos puertas logicas.jpg
logic gates.png