Dr. Zoidberg
Well-known-Papá Pitufo
En la facultad estamos trabajando para cambiar el plan de estudios de la carrera Ingeniería Electrónica, y uno de los principales objetivos es reforzar el análisis y diseño en la programación, a la vez de agregar componentes "motivacionales" que hagan que los chicos tomen a la programación como algo divertido, que pueden aplicar a sus necesidades y que tiene un ciclo de análisis, diseño y desarrollo que se debe encarar en forma seria y metódica si se pretende que los ingenieros dejen de programar como NABOS y apliquen alguna metodología de trabajo ordenada y efectiva.
El primer problema es que la formación en sistemas digitales tiene muchas asignaturas (comparativamente hablando) y estas se extienden a lo largo de toda la carrera, así que la programación deben encararse desde el primer semestre del primer año para que la apropiación de contenidos sea lo suficientemente extensa y firme cuando lleguen a la etapa de aplicación "real".
En este sentido, tenemos algunos cuantos alumnos que ya vienen "programando" desde la escuela secundaria habiendo trabajado, principalmente, con Arduino. Y durante la carrera, hay varias asignaturas que si bien no están relacionadas directamente con los sistemas digitales, hacen uso intensivo de programación microcontroladores utilizando también la plataforma Arduino para el procesamiento digital de señales (Arduino Mega) y para implementación de lazos y componentes de control industrial conectados con sistemas SCADA, PLCs y toda la bola (Arduino Uno y Mega).
Entonces, nos pareció interesante tratar de insertar la plataforma Arduino desde los primeros semestres de la carrera como base para aprender la programación de microcontroladores, aún sin que los chicos sepan todavía que diablos es un microcontrolador (eso lo verán mas adelante en la carrera). De esta forma se les puede secar la mente con las bases de las metodología de análisis y diseño y lograr programas operativos no solo en la PC y con interfaz de usuario, sino también en microcontroladores que hagan "cositas" interactuando con el mundo exterior.
Con esto en mente, decidí hacer algunas pruebas con Arduino Uno y diseñar un shield de muuuuy bajo costo que le permita a los chicos programar un módulo Arduino, ingresar señales (por ahora solo Si/No...no saben tanto como para meter señales analógicas) y mostrar resultados a la salida en un grupo de 8 LEDs. La foto que sigue es la vista del shield del lado de los componentes:
que terminada y colocada en el Arduino queda esto:

Bueno, abajo están los archivos esquemáticos y el PCB para hacer con la plancha, y como verán, no es nada muy sofisticado por que la idea es que comiencen a programar sin romper nada, que puedan comprar su propio Arduino y practicar en casa. El costo del shield es del orden de los 3 trumps, dependiendo donde compren los materiales y cuantos PCB hagan juntos.
Los LEDs están conectados de una forma un poco particular ya que 6 están controlados por los 6 MSB de un port del ATMega y los otros dos, por los 2 LSB de otro port (la idea era no interactuar con las líneas de comunicación serie
), así que les adjunto un par de "sketchs" por si lo hacen y quieren probar el funcionamiento básico:
Tengan en cuenta que a raíz de una discusión que tuve con otro docente, las funciones de acceso al shield NO USAN ninguna de las funciones estándard de Arduino para leer y escribir en los ports, sino que hace acceso directo a los registros de configuración de los puertos y a los registros de los puertos del ATMega. Con eso le demostré que no hace falta usar las bibliotecas estándard de Arduino para mover y leer los bits de los ports. Mas adelante voy a agregar la lectura de los switches usando interrupciones, pero va a tener que esperar un poco por que tengo trabajo pendiente.
Si a alguien le resulta útil, sientase libre de usarlo y modificarlo a su antojo.
El primer problema es que la formación en sistemas digitales tiene muchas asignaturas (comparativamente hablando) y estas se extienden a lo largo de toda la carrera, así que la programación deben encararse desde el primer semestre del primer año para que la apropiación de contenidos sea lo suficientemente extensa y firme cuando lleguen a la etapa de aplicación "real".
En este sentido, tenemos algunos cuantos alumnos que ya vienen "programando" desde la escuela secundaria habiendo trabajado, principalmente, con Arduino. Y durante la carrera, hay varias asignaturas que si bien no están relacionadas directamente con los sistemas digitales, hacen uso intensivo de programación microcontroladores utilizando también la plataforma Arduino para el procesamiento digital de señales (Arduino Mega) y para implementación de lazos y componentes de control industrial conectados con sistemas SCADA, PLCs y toda la bola (Arduino Uno y Mega).
Entonces, nos pareció interesante tratar de insertar la plataforma Arduino desde los primeros semestres de la carrera como base para aprender la programación de microcontroladores, aún sin que los chicos sepan todavía que diablos es un microcontrolador (eso lo verán mas adelante en la carrera). De esta forma se les puede secar la mente con las bases de las metodología de análisis y diseño y lograr programas operativos no solo en la PC y con interfaz de usuario, sino también en microcontroladores que hagan "cositas" interactuando con el mundo exterior.
Con esto en mente, decidí hacer algunas pruebas con Arduino Uno y diseñar un shield de muuuuy bajo costo que le permita a los chicos programar un módulo Arduino, ingresar señales (por ahora solo Si/No...no saben tanto como para meter señales analógicas) y mostrar resultados a la salida en un grupo de 8 LEDs. La foto que sigue es la vista del shield del lado de los componentes:
que terminada y colocada en el Arduino queda esto:

Bueno, abajo están los archivos esquemáticos y el PCB para hacer con la plancha, y como verán, no es nada muy sofisticado por que la idea es que comiencen a programar sin romper nada, que puedan comprar su propio Arduino y practicar en casa. El costo del shield es del orden de los 3 trumps, dependiendo donde compren los materiales y cuantos PCB hagan juntos.
Los LEDs están conectados de una forma un poco particular ya que 6 están controlados por los 6 MSB de un port del ATMega y los otros dos, por los 2 LSB de otro port (la idea era no interactuar con las líneas de comunicación serie
- Prueba03.zip tiene las funciones de configuración y acceso en C ANSI.
- Prueba04.zip está escrito en C++ y aplica el patrón Singleton para proteger el acceso concurrente al puerto, si es que alguien lo hace, y no desparramar varias instancias diferentes de una unica plaqueta, lo que podría traer problemas operativos.
Tengan en cuenta que a raíz de una discusión que tuve con otro docente, las funciones de acceso al shield NO USAN ninguna de las funciones estándard de Arduino para leer y escribir en los ports, sino que hace acceso directo a los registros de configuración de los puertos y a los registros de los puertos del ATMega. Con eso le demostré que no hace falta usar las bibliotecas estándard de Arduino para mover y leer los bits de los ports. Mas adelante voy a agregar la lectura de los switches usando interrupciones, pero va a tener que esperar un poco por que tengo trabajo pendiente.
Si a alguien le resulta útil, sientase libre de usarlo y modificarlo a su antojo.
Adjuntos
Última edición: