Cambiando el contenido de una variable
Explicábamos en la fase anterior que haciendo uso de la página http://xx.xxx.xx.xxx/VV_Show.htm
que se aloja de fábrica en el servidor web del PINK, podremos tener
control del contenido de cualquiera de las 100 variables que disponemos;
esto es, que podremos manualmente modificar valores desde esta para que
los lea nuestro circuito con BS y también haremos que este escriba,
cambie, el contenido de algunas variables para que nosotros podamos
visualizarlos desde esta misma página. Más adelante crearemos nuestra
página web de control, accesible desde cualquier lugar del mundo.
Para cambiar el contenido de una de las variables desde esta página es
tan fácil como pulsar el enlace "Modify" que se encuentra junto a
cada variable del listado ( www.todomicrostamp.com/data/gp_pink200710a.gif
). En la nueva página introducimos un valor cualquiera (numérico o
alfanumérico) y aceptamos el cambio. De nuevo en el listado observaremos
que ya está cambiado el contenido de esa variable. Podríamos mirar
de cambiar la primera de las variables (la "00") introduciendo un "1"
para hacer que un sencillo circuito LED, controlado por el BS2, encienda
el LED; si el valor de esa variable lo ponemos a "0", que lo apague.
Haciendo que nuestro circuito con BASIC Stamp lea variables
Montaremos un primer circuito de prueba para ver cómo actúa el BASIC
Stamp conjuntamente con el PINK. El circuito podría ser el de un simple
LED conectado al pin 0 del circuito BS ( http://www.todomicrostamp.com/img/pink3_led.gif
).
El código del programa podría ser este:
' {$STAMP BS2}
' {$PBASIC 2.5}
NBVAR VAR Byte
LOW 0
lee_pink:
SEROUT 8,396,["!NB0R00"]
SERIN 7,396,[NBVAR]
IF NBVAR = 48 THEN LOW 0 'apaga LED
IF NBVAR = 49 THEN HIGH 0 'enciende LED
PAUSE 1000
GOTO lee_pink
Si os fijais en el código, para leer el valor de una variable en el
módulo PINK con el BASIC Stamp (en este caso la variable 00), nuestro
programa en el BS debe enviar serialmente mediante SEROUT el
siguiente comando: !NB0RXX (donde XX es el número de la variable que
estamos usando). Es como decirle al PINK "mírame que valor tiene la
variable 00".
Entonces, el PINK responde almacenando el contenido de esta variable
en la variable NBVAR, que es leída mediante SERIN: si es "0"
("48" en valor ASCII), pone en estado bajo el pin 0 del circuito BS, es
decir, el LED permanece apagado; si es "1" ("49" en valor ASCII), pone
en estado alto el pin 0 del circuito BS (el LED es encendido). Así
pues, en nuestro código en el BS debemos tener en cuenta que con SEROUT
enviamos el comando al PINK y con SERIN recogemos el valor.