sábado, 12 de marzo de 2011

Practicas con el PIC16F628A (también #foreveralone o recuperando el tiempo perdido ;) )

En vacaciones me puse a estudiar con más entusiasmo que nunca la programación de microcontroladores, tanto que hasta le perdí el miedo al lenguaje ensamblador =P y hasta hice unos programitas ahi para observar como funcionan los registros del pic, los famosos trisb, portb, porta, trisa, status, option reg, etc etc.

Solo hice tres programas en ensamblador: prender y apagar un led, un contador del 0 al 9 con un display de 7 segmentos y finalmente la lectura de un teclado matricial en el portb.

Después me pasé a programar en lenguaje c usando el compilador de CCS: PicC. Ahi he desarrollado todos mis programas para pic. Ahi voy poco a poco, paso lento pero seguro, ya acabé el primer módulo de un curso que me rolaron.

Este primer módulo del que hablo es introductorio mas que a los pics, al lenguaje de programación. Solo es una práctica con un semáforo y otra con un dado. Mas que nada para conocer la sintaxis del lenguaje y las estructuras de control que maneja. Yo como dije anteriormente usé lenguaje c para programar. Lo que estaba en basic lo hice en c y listo, funciona exactamente igual :D


Bueno, aquí está la evidencia de las prácticas:
La primera consiste en la realización de un programa que simule el comportamiento de un semáforo. El programa en si es muy sencillo y la implementación del circuito aun más.
El semáforo tiene dos modos de funcionamiento, el normal con los intervalos de tiempo entre los colores verde, amarillo y rojo; y el funcionamiento de cuando se "desconfiguran " (?) que sólo muestra el color amarillo.
El circuito, conforme avance seré mas ordenado en la implementación =P
No me detengas ahora... que acabo de empezar y me gusta =P


La seguunda práctica es un poco más compleja, es para conocer las estructuras de selección del lenguaje de programación que es case e if y una de las de repetición que es for, hay más estructuras pero en este ejemplo solo manejan esas. Se trata de un dado electrónico, se presiona un botón y se selecciona un número al azar entre 1 y 6. Para hacer más interesante la cosa el autor de lo módulos sugiere usar una bocina y aprovechar el display para dar la sensación de que en verdad se eligió un número al azar.
El circuito, con todo y bocina :D
ñ_ñ

Ahi voy con los pics, se a donde quiero llegar con todo este rollo. No quiero limitarme al desarrollo de aplicaciones para computadora, también quiero entrarle a la robótica y el desarrollo de dispositivos. Me da un poco de vegüenza esto ya que se supone que estos circuitos son de segundo semestre y yo apenas en quinto semestre los estoy haciendo, aunque me reconforta un poco saber que hay quienes estan en octavo de ingeniería en informática y no saben y querran saber nada de esto :) porque o bien ya son unos expertos en el desarrollo de aplicaciones (web entre ellas) para distintas plataformas como android, ipad, el extinto symbian, etc, o porque se la han pasado toda la carrera tonteando aqui y allá con las "clases" que nos dan los maestros. Yo se que es lo que quiero, tengo un objetivo y lo cumpliré :D.
 
Jaja, le pongo de fondo música legendaria al primer video y al segundo algo de "The darkness", ya me imagino que rolas usaré cuando desarrolle algo mucho más chido :D.

En otras cosas... ya aprendí algo de programación orientada a objetos en php y como usar los objetos para la gestión de bases de datos, ya quiero que mi prof de manejadores de bases de datos nos diga que rayos vamos a desarrollar para empezar cuanto antes. De antemano solo se que se trata de la ejecución del script directamente por linea de comandos mas una aplicación local mas otra aplicación web que checará el prof en internet :D.

Bueno retornando a los pics, para los que lo necesiten, publico el código fuente y el archivo de simulación en proteus en este link.

Eso es todo por el momento, ahora a estudiar la comunicación rs232,  me despido entonces no si obsequiarles unos wallpapers a todos y en especial a los forevealone xD:



Por cierto... antes de que se me olvide. Usé el pic16f628a, en los videos se ve en ambas protos un pic "chonchote", el que acompaña al semáforo es un 16f677a y el que está al lado del dado es el 18f4550 que tiene capacidad de comunicarse directamente con el puerto usb de la pc :P.
Saludos!

domingo, 6 de marzo de 2011

My first post in english =P

Hi guys, this post was written with the help of Google translate... Naaa es más fácil para mi en estos momentos escribir en español. En realidad no tengo mucho que escribir, paso la primera evaluación departamental en UPIICSA, en general pasé bien a exepción de contabilidad que la pienso pasar en ETS con ya ayuda de @YahsiFunnyLove :P

En otras cosas... este semestre lo inicie con ganas de hacer proyectos chidos por mi cuenta para pasar las materias, he mejorado notablemente en la programación de PICs tomando en cuenta que tercer semestre no hice ni madres y en cuarto me vi forzado a aprender. Hoy ya programé un circuito para manipular la entrada de un teclado matricial 4x3 en C :D.

En realidad me dí cuenta de que he perdido demasiado tiempo en UPIICSA. Pero bueno, mejor ahora que estoy a la mitad de la carrera que al salir. Estoy estudiando la posibilidad de conseguir un trabajo de medio tiempo aunque la paga no sea buena, en realidad no me es necesario trabajar :P pero ya debo de ir viendo un poco del mundo real :(

He estado estudiando las notas que me envió Evil Geek y espero que terminar un proyecto que tengo pendiente sobre comunicación inalambrica y automatización, en realidad es una ampliación del proyecto que nos dejo el prof Torres Coronel, que en lugar de comunicarse vía puerto paralelo o serial con la pc comunicarlo en forma inalambrica o vía usb. En realidad el curso de Evil Geek está en PicBasic Pro pero yo lo estoy programando todo en c, digo al fin y al cabo poco importa el lenguaje :P aparte de que otras cosas me motivan a programar en c.

Sobre PHP puedo decir que los cursos que han dado en el Telmex Hub han sido de buen nivel, también es una buena opción la comunidad para conseguir trabajo y se me ocurren más cosas para programar en PHP, seré un genio si logro vincular PHP con los PICs :D aparte de que hay otro proyecto para desarrollar una página web del equipo de Karate  :) de la cual J. Aviña ya ha adelantado mucho la verdad.

Algo que noté en los cursos que han dado en el telmex hub es que la mayoria de los asistentes son alumnos de upiicsa. Es triste saberlo porque te das cuenta que la escuela tiene un nivel más bajo de lo que crees, que necesidad de ir a tomar un curso de Java básico cuando se supone que en la escuela te deben enseñar eso. Tal vez tenga que ver con lo que me dijo un prof que la verdad no creo que sea cierto... me dijo que antes a los aspirantes a Ing en Informática los filtraban según de la carrera de nivel medio superior que vinieran, en pocas palabras si venias de técnico en sistemas digitales, computación, programación, informática tenias una ventaja notable sobre los otros aspirantes ajenos al área de informática, quiza por eso los profs se aburrieron de tener que volver a las bases en lugar de irse en chinga hacia adelante total lo escencial y un poco más ya lo sabian los alumnos.

Naaa no creo que los profs se aburriera, mas bien se han quedado atrasados.

Bueno, eso fue todo por día de hoy, espero que en el transcurso de la semana consiga una cámara para tomar foto y video de mis desarrollo de prácticas.