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

lunes, 26 de octubre de 2015

lunes, 19 de octubre de 2015

uC II, PROGRAMA ANDROID Y PROGRAMACIÓN BASE BLUETOOTH EN ARDUINO PARA CONTROL DE HEXAPODO

Cordial Saludo,

Probar el código y comprender la lógica de programación.
Apk para envió de datos por bluetooth desde movil android a la tarjeta Arduino

Tener en cuenta que puede utilizar otras aplicaciones que crea convenientes.

DESCARGAR


Modulo para conexión a Bluetooth, entre otros que dan el mismo rendimiento

Modulo Opción 1

Modulo Opción 2

///////////////////////////////////////////////////////////
//Codigo de comunicación Bluetooth y android en Arduino para control de Hexpodo
//////////////////////////////////////////////////////////
char dato;
char datoserial;

void setup(){
  Serial.begin(9600);    //Iniciar Comunicacion con tarjeta Bluetooth
  //////////////////////
  //codigo de inicializacion de servos
  //////////////////////
}

void loop(){
  if (Serial.available()){        //Revisa si hay dato en el puerto serial
    datoserial = Serial.read();   //Guarda este dato en la variable datoserial
    if (datoserial == 'W' || datoserial == 'S' || datoserial == 'A' || datoserial == 'D' || datoserial == 'P'){
      dato = datoserial;
    }
  }
  switch (dato){        //Se analiza el dato
    case 'W':            //Si el dato que llega es W va adelante y asi para los otros casos
      adelante();
      break;
    case 'S':
      atras();
      break;
    case 'A':
      izquierda();
      break;
    case 'D':
      derecha();
      break;
    case 'P':
      parar();
      break;
  }
}
///////////Codigo de avanzar
void adelante(){

}
//////////Codigo de retroceder
void atras(){

}
//////////Codigo de izquierda
void izquierda(){

}
//////////Codigo de derecha
void derecha(){

}
//////////Codigo de parar
void parar(){

}

martes, 13 de octubre de 2015

Código, Entrenamiento de entradas, Salidas, PWM con QT y la Tarjeta Raspberry PI 2

Cordial Saludo,

Apreciados  Estudiantes,

Adjunto el código referente al desarrollo de las aplicabilidades bajo la tarjeta RASPBERRY PI 2 y el software QT.

DESCARGAR AQUI

viernes, 9 de octubre de 2015

Proyecto Electrónica II

Cordial Saludo,

Apreciados estudiantes de la Asignatura Electrónica II, envió el circuito pertinente
al proyecto.







































o



Los elementos son los siguientes:
El elemento RPR-359F se puede reemplazar por CNY70.
Para mejor apreciación de el cambio de voltaje la R2 y R4 pueden ser cambiados por trimmer de 50k y asi mejorar la longitud de lectura.


sábado, 26 de septiembre de 2015

lunes, 14 de septiembre de 2015

Taller 3, Fisica I, Caida Libre




Cordial Saludo estudiantes,

Pido disculpas por la tardanza, a continuación esta un taller para practicar y seguiremos resolviéndolo en la clase.

EXITOS !!!!

DESCARGAR AQUI

sábado, 29 de agosto de 2015

Trabajo de Electiva IV

Cordial Saludo,


Queridos estudiantes, disculpen la demora.



El trabajo para al asignatura Electiva Profesional IV,  Sistemas microcontrolados de 32 Bits.

Las preguntas son las siguientes.


  1. ¿Que es RASPBERRY PI?
  2. ¿Que versiones de RASPBERRY PI existen?
  3. ¿Que Características de Hardware posee cada versión de la tarjeta RASPBERRY PI 2?
  4. ¿Que diferencias existen entre cada una de las versiones de la RASPBERRY PI?
  5. ¿Que es NOOBs?
  6. ¿Que SO existen para la tarjeta RASPBERRY PI?
  7. ¿Cual es el enfoque relevante de cada SO para RASPBERRY PI?
  8. ¿Que es RASPBIAN en la tarjeta RASPBERRY PI?
  9. ¿Cuales son los pines pertenecientes a la tarjeta RASPBERRY PI?
  10. ¿Que es QT, para que sirve, y en que sirve a la tarjeta RASPBERRY PI?
  11. ¿Que es wiringPI, Para que sirve?
  12. ¿Que ha echo que la tarjeta RASPBERRY PI sea muy popular en el mundo?
  13. ¿Que aplicaciones podrías realizar teniendo la tarjeta RASPBERRY PI?
  14. ¿Investigue y de Información sobre 3 aplicaciones existentes que se este realizando con la tarjeta RASPBERRY PI?

Éxitos en el Desarrollo de su trabajo.

martes, 25 de agosto de 2015

CONFIGURACIONES PREVIAS PARA RASPBERRY PI

Cordial Saludo,

El Siguiente Tutorial comprende las configuraciones básicas para realizar el estudio de el sistema embebido RASPBERRY PI 2, también se puede utilizar en sus versiones anteriores.


Se han tomado algunas referencias a tutoriales existentes en diferentes paginas web para acelerar el proceso de estudio.


  1. Tutorial 1 – Preparando la tarjeta SD para instalar el sistema operativo (Tomado de http://www.frambuesapi.co/ )
  2. Tutorial 2 – Descarga de NOOBS y copia en la tarjeta SD (Tomado de http://www.frambuesapi.co/ )
  3. Tutorial 3 – Instalación y configuración de inicial del Raspberry Pi (raspi-config) (Tomado de http://www.frambuesapi.co/ )
  4. Tutorial 4 (Parte 2) – Conexión del Raspberry Pi directamente al PC usando cable de red (Tomado de http://www.frambuesapi.co/ )
Teniendo en cuenta las especificaciones de laboratorio o cualquier otro punto de conexion en donde la red este sujeta a una DNS para su respectiva conexion, agregamos las siguientes anotaciones: 
Ir a la parte de "Configuración dirección estática del Raspberry Pi",al abrir el archivo interfaces y despues de asignarle el gateway agregar una linea para la configuracion de la DNS de la siguiente forma:  
dns-nameservers X.X.X.X X.X.X.X X.X.X.X donde X.X.X.X es el DNS al cual realizar la conexion. Tener en cuenta que puede colocar tantas DNS como sean necesarias.
Ejemplo:
En donde se detalla varios DNS,

  •  192.168.0.11 : DNS Perteneciente a la conexion de la Universidad.
  • 192.168.43.1 : DNS Perteneciente a conexion con el WiFi de El Dispositivo Movil.
  • Entre Otros.
5. Tutorial 5 – Conexión remota al Raspberry Pi usando SSH (Tomado de http://www.frambuesapi.co/ )
6. Tutorial 6 – Conexión remota al Raspberry Pi usando VNC (Tomado de http://www.frambuesapi.co/ )
7. Ya que cada vez que iniciemos el sistema operativo de la raspberry PI 2, hay que iniciar el servio vnc, se crea un script con el cual resolvemos dicho problema y nos permite no tener que netrar primero por ssh e iniciar el vcnserver, sino que lo hace automáticamente, para esto seguir el siguiente turorial.
 Como Hacer que el VNC Se Inicie al Iniciar la RASPBERRY PI.
O seguir este resumen de procedimiento
 luego editan el archivo /etc/rc.local
sudo nano /etc/rc.local 
y colocan esta linea: 
su -c "usr/bin/tightvncserver -geometry 1280x1024 -depth 24" pi 
pueden cambiar la geometria para su modo deseado.Lugo para probar, corren: 
sudo /etc/rc.local
 Listo, configurado para que el servidor vcnserver se autoinicie.
8. Intalar QT version 4. 
9. Instalar Libreria "WIRINGPI" 

Ante cualquier inquietud, escribir correo electronico a cbarrios1@udi.edu.co.






Taller 2 Fisica I. Movimiento Uniformemente Acelerado


Cordial Saludo,

Adjunto Taller perteneciente a Movimiento Acelerado, Traerlo impreso el día miércoles 26 de Agosto para resolver dudas.

Tener en cuenta que el PARCIAL es el día martes 02 DE SEPTIEMBRE a las 6:00 am en el salón 203 del Edificio Ana Frank.

Éxitos.

DESCARGAR ARCHIVO.