Nadie nace sabiendo ni siendo un experto en cualquier tema. Todo lleva un tiempo de aprendizaje, de práctica y de aplicación. Desarrollar programas eficaces y funcionales para microcontroladores no es la excepción de esta regla. En este artículo no aprenderás a programar sino que encontrarás los consejos más importantes que te guiarán por el camino menos frustrante hacia una realización exitosa. Participa de los mejores consejos que se brindan en los foros más importantes de toda la Web y descubre los secretos que utilizan los programadores más avezados. Entra al mundo geek y sé parte de él.
Foros, listas de correo, blogs, YouTube, MSN y muchos otros medios son utilizados en la Web para permitir que la gente pueda comunicarse entre sí y pueda ayudarse mutuamente en los temas referentes a microcontroladores. Luego de recorrer durante algunos años muchos de estos espacios en busca de información y conocimientos, he encontrado que la mayoría de los interrogantes y consejos que se brindan a quienes recién comienzan en el mundo de los microcontroladores se reiteran una y otra vez en todos los lugares. Pareciera que las dudas y las preguntas son siempre las mismas.
La razón es muy obvia y sencilla: cada día hay más gente con ansias de aprender, y como sabemos que tú eres uno de ellos, hemos preparado un pequeño listado de las cosas más importantes a tener en cuenta al momento de iniciarte en este apasionante mundo de los microcontroladores. Sea cual fuere la marca de microcontrolador que prefieras o el lenguaje de programación que utilices, existen métodos de trabajo que, cuando te acostumbras a ellos, comienzas a descubrir que todo se vuelve más fluido, más sencillo y más rápido. Es allí cuando dejas de perder el tiempo en cosas sencillas o elementales y pasas a utilizar el tiempo para crear y concebir con eficiencia tus mejores trabajos.
Al comenzar, las dudas son interminables y los miedos al fracaso suelen ser los culpables de que muchos abandonen su interés por el mundo de los microcontroladores. No hay que dejar de tener en cuenta que la información está tan dispersa en la red que encontrar lo que estamos buscando es a veces más difícil que ver abrazados a Bill Gates y a Steve Jobs. Por eso, si estabas a un paso de comenzar a trabajar con microcontroladores y no encontrabas la puerta de acceso, ven con nosotros, lee estos pequeños “Tips”, apréndelos, ponlos en práctica y deslúmbranos con tu creatividad.
1 – El Datasheet del microcontrolador
Una de las mayores razones de confusión y de complicaciones al desarrollar un proyecto es la falta de información del microcontrolador que se desea utilizar. Las hojas de datos son los documentos más importantes que debemos acopiar al momento de decidirnos e inclinarnos por un determinado tipo de microcontrolador.
Por ejemplo, si en tu diseño vas a utilizar un PIC 16F877A, debes imprimir, leer y recurrir a sus hojas como si fuese El Libro de la Verdad Absoluta. Todas las respuestas están allí. Todo lo que necesitas saber está allí. No te permitas iniciar un desarrollo sin haber leído las hojas de datos del microcontrolador que utilizarás. Un registro mal “seteado” y nada funcionará. Desde la configuración inicial del dispositivo (fuses), pasando por los registros de los ADC (Analog to Digital Converter) o los módulos CCP que te permiten obtener señales PWM, hasta la mismísima configuración del reloj o clock del sistema. Todo está allí.
2 – Piensa en tus objetivos, sueña con ellos.
¿Qué deseas lograr con tu desarrollo? Pensar en la idea final nos suele llevar a visualizar en la mente el proyecto terminado y consolidado en un prototipo funcionando a la perfección. ¿Qué componentes adicionales necesitaría? ¡Ah! ¿Tengo esos componentes? Luego de que ya hayas dado vuelta todos los estantes y cajones buscando ese material que te faltaba, comienza a anotar los que te hagan falta, los que no tengas. No abuses de tu memoria para recordar todo lo que necesitas comprar en la tienda; coloca en ella tu desarrollo y utilízala como un microcontrolador: optimiza este recurso y utilízalo sólo para ampliar y perfeccionar tu proyecto. Los materiales que hacen falta no deben ocupar espacio en tu mente; haz un listado minucioso y detallado para no hacer dos viajes y listo.
3 – No quieras correr antes de empezar a caminar
Uno de los errores más comunes de los que recién se inician es querer obtener más de lo que pueden llegar a comprender. No intentes hacer como primer trabajo un cartel luminoso de LEDs para venderlo en los estadios de fútbol y volverte millonario la semana próxima. Ni siquiera pretendas construir y empuñar el sable láser de Obi-Wan Kenobi y ser la envidia del colegio. ¡No, no!
Si no tienes noción de la complejidad del proyecto que emprenderás es porque no has leído o interpretado el punto anterior. Las frustraciones provocadas por los fracasos en los primeros intentos aniquilan la confianza en nosotros mismos y arruina toda la diversión que significa construir y materializar nuestros sueños mientras vamos aprendiendo. SIEMPRE comienza con lo más elemental y, a medida que los éxitos comiencen a llegar, puedes ir agregando complejidad a los diseños. Además, cualquier programador experimentado te dirá que su primer trabajo fue escribir “Hola Mundo” en un display o un LED titilando como una baliza. Quien diga que no, te miente cobardemente.
Comienza a caminar comprendiendo los conceptos básicos y la terminología técnica y desarrolla pequeños proyectos de luces, motores o pantallas LCD. Luego, comienza a hacer un poco de jogging y trote liviano con algo más complejo como letreros de luces y pequeños controles de los que se utilizan en industrias. La domótica y la mecatrónica son dos campos muy interesantes y amplios como para sumar buena experiencia. Si no salteas ninguno de los pasos, muy pronto estarás corriendo grandes competencias a la par de los profesionales.
4 – Corta la pizza en porciones, no la comas entera
Por más simple que sea un proyecto, siempre es bueno dividir en bloques o pasos la tarea a realizar. Silbar y comer maní son cosas muy habituales y sencillas de hacer, pero concretarlas al unísono no es algo fácil. Organízate y prepárate a trabajar por partes. Primero ESTO, luego ESTO OTRO y al final AQUELLO. Intentar hacer todo a la vez o en forma desordenada sin un patrón de acción puede ocasionarte errores al momento de construir el proyecto. Por ejemplo, si decides incorporar un Puente H para mover un motor, contrólalo antes de conectarlo al microcontrolador. Es decir, conéctalo y pruébalo en forma independiente para saber que el mismo funciona. Así con todos los bloques en los que puedas sub-dividir tu proyecto.
5 – No sólo la fuerza te guiará, deja que el Sr. Spock también lo haga.
Tus inspiraciones serán una avalancha de imágenes y pequeños trailers en tu imaginación, pero en el teclado deberás actuar de manera puramente lógica. El número uno, nos guste o no, está antes que el dos. Primero el cero, luego el uno, después el dos, el tres y así en adelante. Siempre es así y nunca cambia esa realidad, a pesar de las paradojas de Ariel Palazzesi. Los programas funcionan así. Obtenemos la variable A y la transformamos en B; le sumamos C y el resultado se muestra en el paso D, y así se encadenan los procesos individuales que desembocan en el resultado final del programa. Nada es al azar, ni porque se le ocurra a Max Ferzzola. Los programas siguen un razonamiento lógico y, por lo tanto, los microcontroladores también. Si tu mente se acostumbra a razonar de esta manera, programar será un juego de niños para ti.
6 – El pseudo-código también es lógico.
Te puede parecer arcaico, poco profesional y hasta una pérdida de tiempo, pero escribir en un papel todos los pasos que seguirá tu programa puede ser una ayuda muy importante mientras vas redondeando la idea final.
Por ejemplo:
- Necesito una variable (A) que contenga un valor 20 al iniciar.
- También otra (B) que valga 18 en el mismo momento.
- Después las sumo y coloco el resultado en una tercera variable que se llamará C.
- Las muestro en el display.
En un programa en lenguaje BASIC eso resulta ser:
A = 20
B = 18
C = A+B
Print at 1,1, Dec C
Escribir la secuencia de acciones que queremos que nuestro programa realice nos permitirá modelarlo a nuestro gusto y requerimiento, además de optimizarlo.
Cuando lo aprendes en la escuela, te lo enseñan como Diagrama de Flujo y puede que con el tiempo te olvides de él, pero cuando lo aprendes por ti mismo, razonando los pasos a seguir, no lo olvidas nunca.
Algo que puede parecer muy intrascendente, pero que es de vital importancia, es “comentar” cada línea de código que escribamos. Aunque creamos que es inútil, si no lo haces, terminarás arrancándote los cabellos una semana después al no darte cuenta qué es lo que quisiste colocar allí o por qué llegaste a ese lugar dentro del programa. Que hoy los comentarios te ocupen 10 renglones por cada línea de código significará que el próximo mes te ahorres 10 horas de trabajo intentando descubrir qué intentaste hacer allí.
7 -Organiza y guarda estructuras pre-armadas.
A medida que vayas utilizando un microcontrolador en particular (siempre seleccionamos uno “preferido”) y comiences a utilizarlo reiteradamente, te resultará cómodo tener a mano una estructura estandarizada de conexiones y bloques de programas. Es decir, si acostumbras a utilizar un microcontrolador X, si siempre utilizas la misma frecuencia de cristal oscilador, si siempre utilizas el mismo tipo de LCD, y si además también conectas siempre tus desarrollos a un ordenador a través de un puerto RS-232, tendrás siempre un gran bloque de programa que se repite diseño tras diseño.
Cuando comienzas a darte cuenta que muchos de tus diseños repiten pasos o bloques, allí empiezas a armar tus “templates” que son plantillas pre-armadas de cosas que se reiteran habitualmente. Consérvalas y organízalas en lugares prácticos y de fácil acceso. Te servirán para ahorrar mucho tiempo al momento de iniciar el diseño de un nuevo proyecto. Aprovecha el trabajo que ya tienes hecho y que sabes que funciona.
8 – No preguntar hasta agotar las posibilidades de conocimiento.
En la mayoría de los foros o grupos de correo que aglutinan a miles de entusiastas de los microcontroladores sería muy fácil registrarse gratis, realizar consultas y, una vez que nos brindan las respuestas, seguir adelante. Además, en esos lugares siempre hay gente bien dispuesta a brindar ayuda. Trata de no hacerlo hasta el final de tus posibilidades. Lee las hojas de datos de los materiales que te están complicando el diseño, busca dentro de los foros, utiliza Google, lee algún libro relacionado al tema, busca hasta el cansancio en la ayuda del programa (Help) y, como último recurso, pregunta a otros.
Si ante el menor inconveniente acudes a otras personas para que te resuelvan los problemas, nunca aprenderás lo suficiente. Además, cuando te den la solución a tu problema, no sabrás entender que dicha solución sólo la pudiste obtener allí porque no tienes idea de lo que buscas. Todos siempre necesitamos una ayuda hasta en la tontería más insignificante, pero la comodidad y la holgazanería de que otros te hagan el trabajo no es un buen negocio para un programador. Por último, si pides ayuda, demuestra haber hecho tus intentos de solución contando lo que has realizado y los resultados que has obtenido. Si no haces nada, y sólo te limitas a pegar el enunciado que te han dado tus profesores, no esperes que alguien te ayude.
9 – La frustración es el enemigo a vencer.
Trata de no abandonar los proyectos porque algo no funcionó como esperabas. Descubre en esas oportunidades un reto o un desafío antes que un fracaso. Siempre es bueno mantenerse tranquilo y calmo a pesar de que nuestros circuitos echen humo por los cuatro costados. Todo error que se busca, al encontrarlo y solucionarlo, es un aprendizaje que queda grabado. Puede sonar muy extraño pero la asimilación del conocimiento es directamente proporcional al daño provocado. Es decir, cuanto más grave y más caras sean las roturas, mayores serán los aprendizajes de saber qué es lo que NO se debe hacer y por qué suceden algunas cosas.
No fue Dios el culpable de que algo no nos funcionara, sino que somos nosotros los que hemos metido mal algún cable. Un buen paseo, una buena caminata y al día siguiente retomar el trabajo es una de las mejores formas de vencer la frustración. Por eso, siempre hay que revisar, revisar, revisar y volver a revisar todas las conexiones antes de conectar la energía al circuito. Nada debe dejarse librado al azar y mucho menos restarle importancia creyendo que hemos hecho bien las cosas. Todos somos humanos y podemos cometer el error más infantil que puedas imaginar. No olvides que muchas veces una parte del éxito es una sumatoria de aprendizajes brindados por los fracasos.
10 – Google es el mejor amigo del hombre (programador)
Si lo que buscas no está en Google, es porque no existe y eres un pionero en la materia. Toneladas de material que puede ayudarte está allí en Google esperándote para poner en marcha tu proyecto. En castellano, en inglés o en arameo antiguo, lo que necesites estará en texto, imágenes y video. Nunca dejes de consultar en Google antes de preguntar tus dudas a otros.
Conclusiones
A cada momento puedes descubrir un nuevo modo de estructurar un programa. Disfruta de cada LED que puedas hacer brillar y no lo tomes como algo más; detente y tómate un tiempo para analizar tu buen trabajo. Sin caer en narcisismos banales, aprovecha cada buena rutina de programa para limpiar de tus hombros los fracasos y las tristezas de los códigos que no te funcionaron. Siempre nos parece que los fracasos son demasiado pesados. Solo en tu fuerza interior está la manera de hacer que las alas que te brinda la concreción de un buen trabajo inclinen la balanza y venzan el peso de las frustraciones.
Olvídate de frases bochornosas como “Pues es raro…”, “Nunca había pasado antes”, “Pues ayer funcionaba…” o el clásico y nunca bien ponderado “Debe ser un virus…”. Si no enfrentas el problema, nunca podrás vencerlo, y si no abres tu mente y te cierras con terquedad sin intentar realizar otros caminos, nunca esperes resultados diferentes.
Si has leído hasta aquí y eres un programador con experiencia, seguramente tendrás más consejos para aquellos que recién comienzan. Te invitamos a que los agregues en los comentarios. Gustosamente leeremos tus aventuras y desventuras como programador. Recomendación: No cuentes sólo las ganadas.