Mostrando entradas con la etiqueta competencia. Mostrar todas las entradas
Mostrando entradas con la etiqueta competencia. Mostrar todas las entradas

lunes, 14 de noviembre de 2011

Codigo En Simuproc (Introduccion A las tecnologias de la informacion)

Autor: Rodrigo Soto Parra
Competencia: Gestion en TI (Nivel 1)

Descripcion de la actividad

Recibirán por correo un ejerció que deben resolver con ensamblador de Simuproc este ejercicio es único para cada alumno y pose un archivo .asm base para realizar el mismo.
El presente problema consiste en realizar un codigo en ensamblador del Simuproc para calcular el promedio de una lista de numeros en memoria.

Descarga el archivo http://www.inf.uct.cl/~amellado/problemas/rsotop2011.asm . En ese archivo encontraras 2 direcciones de memoria dadas, la primera contiene la cantidad de numeros para realizar el calculo del promedio y la segunda posee la lista de numeros a promediar.

Se requiere entonces, resolver el problema usando el simulador de CPU Simuproc, indicando ademas el funcionamiento de los ciclos de reloj para las primeras 4 instrucciones del codigo propuesto.


Ejemplo:

#056   <- primera direccion de memoria
  110   ;cantidad de numeros a promediar

;numeros a promediar
#061  <- segunda direccion de memoria
    10
    100
    111
    101
    100
 +  10
 ---------
 11000 / 110 = 100 -> promedio = 4


La actividad sera evaluada, deben subir 2 archivos a la seccion de tareas del Educa Moodle. Un archivo que contenga la explicacion de los ciclos de reloj y el otro que contenga el archivo rsotop2011.asm con el codigo programado.

Introduccion

La siguiente actividad cumple la funcion de estar familiarizados con la maquina o CPU en lenguaje mas cercano al computador, Gracias al programa ensamblador simuproc que creamos un codigo simple y logramos ver los cilos de reloj que este produce.

Desarrollo.

#SimuProc 1.4.3.0
# AUTOR: Rodrigo Andres Soto Parra

      mov cx,047 ;cx toma el valor de 047

#001
      mov bx,020 ; bx toma el valor de 0120
      ldb 053    ; 053 se carga en ax mas bx
      add 018    ; suma ax el valor de 018
      sta 018    ; guarda el valor de ax en 018
      inc 020    ; incrementa en 1 el valor de 020
      mov bx,020 ; copia en bx el valor de 015
      loop 001   ; cx se decrementa y repite el ciclo
      div 047    ; divide ax por el valor de 047
      msg "El promedio es"
      eap
      hlt

#047
   1000   ;cantidad de numeros a promediar



;numeros a promediar
#052
   101
   111111
   110
   1100000
   110001
   1001111
   101
   100000

Ciclos De Reloj

1º 20

*Leo en pc la próxima dirección a ejecutar:000
*Envio al MAR la próxima dirección de mem a leer
*Llevo al MDR el contenido de dicha dirección de memoria
*Le entrego al ir el dato para que lo decodifique en incremento el pc
*Leo la POS 47 de memoria el valor a copiar en cx
*Escribo 1000 en cx

*Leo en pc la próxima dirección a ejecutar:001
*Envio al MAR la próxima dirección de mem a leer
*Llevo al mdr el contenido de dicha dirección de memoria
*Le entrego al ir el dato para que lo decoodifique en incremento el pc
 *Leo la pos 020 de memoria el valor a copiar en BX
*Escribo en BX

*Leo en PC la próxima dirección a ejecutar :002
*Envio al MAR la próxima dirección de mem a leer
*Llevo al MDR el contenido de dicha dirección de memoria
*Le entrego al IR el dato para que lo decodifique en incremento el PC
*LDB: 053 a esta dirección le sumo el valor de BX:0 posiciones
*Llevo la MDR el contenido de la dirección 053
*Cargo en AX el contenido de la dirección 111111

*Leo en PC la próxima dirección a ejecutar : 003
*Envio al MAR la próxima dirección de mem a leer
*Llevo al MDR el contenido de dicha dirección de memoria
*Le entrego al IR el dato para que lo decodifique en incremento el PC

Conclusion

En conclusion logramos familiarizarnos mas con el lenguaje de maquina con numeros binarios y ya estamos al nivel de simular una maquina virtual con simuproc. Gracias a la clase que tuvimos con el profesor Alejandro Mellado logramos completar los objetivos que se nos impusieron al principio de la actividad.

domingo, 13 de noviembre de 2011

Actividad #2 - pitFinder (Proyecto Robotica).

Autor: Rodrigo Andres Soto Parra
Competencia:Aplica las Ciencias de la ingeniería. (Nivel 1).



Descripcion de la actividad 
Un robot recorre la meseta de una montaña, y su misión es detectar las alturas de los precipicios de ésta, información que servirá para escaladores, paracaidistas, deportes extremos en general.

Implementación

  • La meseta de la montaña estará dada por la mesa de competición sin paredes.
  • Cada vez que el robot detecte el fin de la mesa, deberá detenerse, y medir la altura del “precipicio”. Este dato será registrado y guardado en un ARRAY de enteros.
  • Después de medir, debe (al azar) buscar otro borde de la mesa, y realizar la misma operación.
  • El robot finaliza su trabajo de búsqueda cuando registró la medición del 4to “precipicio”.
  • Finalizada la búsqueda genera un reporte que guardará en un archivo (WriteLnString).. Un ejemplo del formato del reporte sería:

REPORTE PITFINDER
--------------------
Precipicio 1 ==> 20 mts
Precipicio 2 ==> 10 mts
Precipicio 3 ==> 30 mts
Precipicio 4 ==> 20 mts
  • Al final, deberá mostrar en el visor del NXT el reporte de los precipicios anteriormente guardado en el archivo, a través de la lectura del mismo (ReadLnString).
 



Introducción
Terminando el trabajo anterior, nos preguntábamos, ¿Cuál podría ser el siguiente trabajo?. Al leer la actividad, nos dimos cuenta que la intención de nuestros profesores no era complicarnos la vida como pensábamos, sino que atreves de tareas medianamente complicadas insertarnos los conocimientos y de alguna manera obligarnos a ocuparlos dentro del trabajo. Para la actividad numero 2, se nos pide que dentro de un espacio determinado (Sin paredes), nuestro robot se desplace de manera aleatoria, hasta que encuentre el fin de la acera. Al momento de conseguir el primer objetivo, se pide que nuestro robot tome la distancia que hay desde la pista hasta el suelo y guardarlo en un arreglo. Luego de repetir durante 4 veces este proceso, se solicita que los resultados sean expuestos por la pantalla del robot. Las nuevas funciones son “WriteLnString” (Escribir en el archivo, o guardar objetos) y “ReadLnString” (Leer el archivo).


Objetivos
Iniciada la actividad numero 2 y unas ves determinas las funciones de cada integrante del grupo, se plantea una serie de objetivos los cuales deben ser cumplidos al término de la actividad. Dentro de estos no estaba solamente entregar el trabajo, sino también que cada uno de los integrantes lograse entender de manera clara el nuevo código y la implementación de las nuevas funciones dentro de este.
· Implementar las nuevas sentencias en de programación pasadas en la semana como:
o WriteLnString (Escribir en el archivo, o guardar objetos).
o ReadLnString (Leer el archivo).
· Trabajar en Grupo.
· Entregar el trabajo puntualmente y sin mayores complicaciones.
· Optimizar el código de manera que sea entendible a simple vista.
· Trabajar con la materia anterior, para formar un código completo, optimizado y sin errores.


Estrategia de Trabajo
Para esta actividad, variaron los cargos rotundamente. En el ramo anterior (Programación de Robots), a medida que los cargos rotaban, todos los integrantes del grupo podían experimentar los diferentes cargos que hay dentro de este. Es por esto que ahora todos podrían estar en cualquier cargo y para demostrar esto, es que cambiamos los roles para este trabajo. Además, el trabajo ejecutado de esta manera, resulta dinámico y entretenido.
Jefe de Grupo: Representante legal de grupo. Encargado principalmente de que en este, se mantenga el orden, la disciplina y predomine el trabajo antes que la pérdida de tiempo. También tiene como función ayudar en lo que se le solicite y resolver dudas de los integrantes del grupo.
Productor multimedia: Preocupado de tomar fotografías para la entrega del informe, pero su principal función es grabar el video que corresponde a un segmento importante y de alto puntaje dentro del trabajo.
Secretario: Atento y veloz en la toma de apuntes y detalles, los cuales pueden ser muy útiles a la hora de la construcción del informe, donde la mayor participación la tiene el mismo.
Staff de apoyo: Ayuda de manera animosa y colaborativa en cualquier tarea donde se le solicite, puede ser en la construcción del informe, en la toma de fotografías o simplemente para subir el trabajo a la plataforma.


Diseño y uso de sensores
Analizando la actividad, nos dimos cuenta de que para este proyecto, la estructura actual del robot no nos serviría, por lo tanto tomamos una clase de laboratorio para estructúralo nuevamente y el resultado fue el siguiente: Se desconectaron todos los sensores excepto en de ultrasonido, el cual, es el único utilizado para esta ocasión. El sensor recién mencionado, es ubicado en la parte Frontal-Posterior del robot (Obviamente, no obstruyendo el trabajo de las ruedas) en dirección hacia el suelo, (De manera que cuando no detectara piso, tomara sin complicaciones la distancia desde este, hacia el suelo). Todo lo demás fue dejado donde mismo, ya que su cambio de ubicación, no afectaría en el resultado final de la actividad.







Código Fuente
int medidas[4];
int a=0;
int i=0;
int j=0;
int num=0;
int tam=512;
byte punteroArchivo;
byte bytesEscritos;
mutex semaforo;
string numeros;
string linea="_==>";
string cadena;
string leer;
string mas="precipicio";
#define Medid 20
sub Altura()
{
medidas[a]=SensorUS(IN_2);
NumOut(0,10*a,medidas[a]);
a++;
}
sub Archivos()
{
CreateFile("Dato.txt", tam, punteroArchivo);
WriteLnString(punteroArchivo, "REPORTE PITFINDER", bytesEscritos);
WriteLnString(punteroArchivo, "--------------------", bytesEscritos);
for(j=0; j < ArrayLen(medidas); j++)
{
num++;
numeros= NumToStr(num);
cadena = NumToStr(medidas[j]);
cadena = mas + numeros + linea + cadena;
WriteLnString(punteroArchivo, cadena, bytesEscritos);
}
CloseFile(punteroArchivo);
}
task Programa()
{
while (i<4)
{
OnFwd(OUT_C,50);
OnFwd(OUT_A,55);
if (SensorUS(IN_2)>Medid)
{
i++;
Acquire(semaforo);
OnFwd(OUT_C,50);
OnFwd(OUT_A,55);
Wait(300);
Off(OUT_AC);
Wait(1000);
Altura();
OnRev(OUT_C,50);
OnRev(OUT_A,55);
Wait(1000);
OnFwd(OUT_C,50);
OnRev(OUT_A,55);
Wait(Random(1500)+400);
Release(semaforo);
}
}
int pa=50;
bool eof = false;
Off(OUT_AC);
Archivos();
ClearScreen();
OpenFileRead("Dato.txt", tam, punteroArchivo);
while (eof == false){ if(ReadLnString(punteroArchivo,leer) != NO_ERR) eof = true;
TextOut(LCD_LINE8,pa,leer);
pa= pa-10;
Wait(500);}
Wait(5000);
CloseFile(punteroArchivo);
}
task main()
{
Precedes(Programa);
SetSensorLowspeed(IN_2);
}


Link del video



Conclusión
 Cuando el informe estuvo totalmente construido, el video editado y el código optimizado y funcionando, pudimos concluir que la actividad resulto todo un éxito, ya que todos los integrantes del grupo cumplieron su función de manera plena y sin complicación alguna. También se ve de manera clara un buen manejo de las funciones aprendidas hasta ahora, junto con las más recientes que son “WriteLnString” y “ReadLnString”, las cuales fueron aplicadas de manera adecuada y se puede comprobar en el video, donde se ve que el código no tuvo ningún problema al momento de su ejecución.

 

Uso del tracker y bases de datos (base de datos

Autor: Rodrigo Soto Parra
Competencia: Aplica las Ciencias de la ingeniería. (Nivel 1).

Descripcion de la actividad.


En el presente informe se presenta la actividad de modelación de trayectorias rectilíneas de objetos móviles  través de funciones de software  como el denominado Tracker donde sobre el plano euclidiano,  una curva puede ser representado en función de los ejes x e y , en donde la obtención de dichos puntos en un experimento.
  



1) Introduccion. 

 
El desarrollo de la actividad necesita de un conocimiento  medio del manejo de Sentencias del  Software  Mysql y de Matemáticas.
Dicha actividad presentara  la combinación de la Base de Datos (Mysql) con el plano euclidiano (Tracker).El desarrollo de la actividad debe realizarse  en grupo en donde cada integrante debe ser capaz de realizar cada actividad por si solo y en conjunto con el grupo, para que de esta manera se llegue a un resultado optimo.



2. Evidenciar del uso de videos y del uso del software Tracker
Para empezar tuvimos que grabar varios videos los cuales les adjunto ahora:


después ingresamos al programa tracker el cual era bastante complicado para llegar a terminar un proyecto, para llegar a nuestro resultado los pasos son los siguientes:
1.- Tenemos que importar el archivo de video:

2.-Tubimos que hacer un plano euclidiano para ver la trayectoria de la pelota, despues entramos al menú desplegable trayectorias, nuevo, masa puntual para seleccionar y ajustarlo.

3.- Iniciamos la reproducción apretando el botón buscar.



 

 
4.- Y el resultado seria este.


5.- Aquí recuperamos los datos de X e Y que sirven para seguir con este proyecto al ingresarlo a la base de datos, ocupando el programa generaInsert


2.3) Evidenciar el diseño de la Base de Datos y las consultas, vistas y otros objetos usados para el cálculo de a,b y r2.

 







Esta es nuestra datos con los puntos en las columnas x e y.





























 

 
Primero calculamos el coeficiente cuadrado de a y de b.



create view b as select
((sum(x)- avg(x)) * (sum(y)-avg(y)) /
((sum(x)-avg(x))*(sum(x)-avg(x))) from datos;






  


create view b as select
(avg(y) - (avg(x) *
((sum(x)- avg(x)) * (sum(y)-avg(y))) / ((sum(x)-avg(x)) * (sum(x)-avg(x)))))
 from datos;









2.4.- Describir el desarrollo de los puntos 1.1.- a 1.4.- de la introducción.

1.1)
El coeficiente de a y b mediante los mínimos cuadrados son y = 1,1438528324x + 4,440898500


1.2)


 
















1.3)
Es asi como sacamos el coeficiente de a y b también por el medio de otra formula logramos obtener   = 0,2582672976 mediante esta formula


 
1.4)
La calidad de ajuste que dio como resultado en la recta es de un 90,4% de probabilidad de perfección puesto que  se usa para calcular la perfección de la línea de tendencia.









2.5)Conclusión.

L a  actividad presentada en el informe se desarrollo en grupo donde a cada integrante se le indico el desarrollo de cierta parte del informe, pero la realización  de las actividades fue  en grupo, por lo mismo cada uno aporto con sus ideas para  el desarrollo completo del informe.
El uso de los programas como Mysql y Tracker ayudo de manera totalmente eficiente al desarrollo de dichas actividades por lo mismo la investigación del uso de estos software se tuvo que llevar a cabo, para que de esta manera poder trabajar  y  evidenciar el uso de estos.