Si bien es cierto que han pasado 25 años desde los primeros micro controladores “todo en uno” de Intel MCS51 que incluían un interprete “Basic” como “Firmware” y hacían nuestras delicias permitiéndonos encender y apagar “lucecitas” con instrucciones muy simples y sin tener que ahondar en profundos conocimientos… nadie discute que paulativamente aquella tecnología dejo de apasionarnos al ritmo que aparecieron nuevos procesadores y electronicas con mucho mas atractivo; de hecho incluso nos avergonzaba tener que numerar las líneas, pero también es cierto que después de aquellos primeros pinitos quedamos fuera de juego inmersos en complejos y potentes sistemas de 16/32b que embebían todo el chip set en un solo encapsulado… ya sabéis el resto de 32 a 64 y la necesidad de acumular un montón de conocimiento previo sobre el medio para poder terminar encendiendo y apagando nuestra querida “lucecita” 🙂 con la diferencia de haber tenido que escribir un monton de codigo mas … complejidad obliga!
Quizás buscando la moraleja se resumiría desde hace algunos años en la nostalgia de NO tener a mano aquellos viejos cacharros que nos permitían activar una salida de pulso con modulación simplemente con : 10 PWM 100,100,1000 , no quiero aburriros explicando como las nuevas plataformas y procesadores se alejaron cada vez mas del “Basic listo para funcionar” y se aproximaron al preámbulo técnico entre compiladores librerías, inicializaciones y descarga de binarios en la ‘flash’ para poder terminar haciendo lo mismo en un procesador super complejo. De ahi la gran aficion a chips como el PICAXE o Basic STAMP… En resumen sin darnos cuenta nos alejábamos definitivamente del concepto “Basic”.
La suerte y la buena noticia para todos los que sentimos pasión por estos artilugios que nos abstraen a esa mágica mezcla entre electrónica y lenguajes, es que a punto de pronunciar el tipico : “El Basic a Muerto” Viva el BASIC!!, vuelve a aparecer a escena la implementacion de «Visual Basic» para projectos del MicroFramework 4.2, que como sabeis solo estaba disponible para C# hasta la fecha.
Que os parecería cacharrear utilizando visual studio y expresiones como las que siguen :
While (True)
Encender(Led_Azul)
Esperar(1)
Apagar(Led_Azul)
Esperar(1)
If "Expresion" = "Cierta" Then
Encender(Alarma_1)
Else
Apagar(Alarma_1)
End If
End While
Uno de los avances mas importantes en este sentido, es la posibilidad de desarrollar y depurar aplicaciones con o sin electrónica, pues podemos crearnos nuestros propios dispositivos emuladores y en el mejor de los casos si disponemos del dispositivo físico podemos depurar directamente sobre la electrónica a traves del puerto serie o USB.
La proposición es fácil, bienvenidos al mundo de los apasionantes sistemas embebidos “on chip”, después de largos años de desarrollo .NET MicroFramework alcanza una madurez envidiable en su versión 4.2, convirtiéndose en un excelente ‘open source’ y como ya he dicho antes, incorporando por fin la posibilidad crear nuestros nuevos proyectos recuperando Visual Basic.
Me permito postearos esta sencilla introducción, como preámbulo a todo un apartado que nos puede dar mucho de que hablar, pues ciertamente muchos lectores de este blog siempre han mostrado especial interés en controlar dispositivos de una forma amigable. Esperando vuestros comentarios para ir dando formato a los futuros artículos.
Aquí tenéis el código completo para un hardware genérico. Creo que es muy interesante motivaros en la forma que podemos adaptar la redacción de nuestras funciones de una forma altamente inteligible.
Imports Microsoft.SPOT
Imports Microsoft.SPOT.Hardware
Public Module Principal
Sub Main()
While (True)
Encender(Led_Azul)
Esperar(1)
Apagar(Led_Azul)
Esperar(1)
If "Expresion" = "Cierta" Then
Encender(Alarma_1)
Else
Apagar(Alarma_1)
End If
End While
End Sub
End Module
' Definicion de funciones
Module Funciones
'
Sub Encender(pin As OutputPort)
pin.Write(True)
End Sub
Sub Apagar(pin As OutputPort)
pin.Write(False)
End Sub
Sub Esperar(segundos As Integer)
Thread.Sleep(segundos * 1000)
End Sub
End Module
' Constructores y definicion de nombres
Module GPIOs
Public Led_Azul As OutputPort = New OutputPort(CType(55, Cpu.Pin), False)
Public Alarma_1 As OutputPort = New OutputPort(CType(18, Cpu.Pin), False)
End Module
Que lo disfrutéis!
PepLluis,