domingo, 24 de junio de 2012

usando el puerto de expansion

La placa NP05 posee un puerto de expansión (concretamente el PORTB del micro controlador 18f4550) que se puede usar para tener salidas o entradas digitales de propósito general.
Con icaro-bloques se puede mandar información al puerto de expansión usando el bloque "activar".

Bloque "activar" con una variable como instrucción 


 al igual que en la placa NP03 de puerto serie, para activar los pines del puerto, hay que mandar un valor decimal que el micro controlador representara en valor binario, cada bit es uno de los pines del puerto, encendido o apagado.
Asi, para que se encienda el pin 1 del puerto haremos "activar 1" (00000001) el pin 2 "activar 2" (00000010), el pin 3 "activar 4" (00000100) y asi exponencial-mente hasta el pin 8 que es el valor 128 (10000000).
si bien se podría hacer un programa que simplemente enviara la señal activar ocho veces con los valores 1, 2, 4, 8, 16, 32, 64, 128, en el ejemplo siguiente preferí mostrar como usar una variable para generar un bucle donde en cada iteración la variable "a" se suma a si misma (un acumulador).



programa para encender leds en icaro-bloques

Con el programa anterior, si conectamos una placa con leds (el circuito es bastante simple y se puede hacer con una placa universal) veremos como cada led se va prendiendo en pasos hasta llegar al led 8 donde vuelve a empezar. Los programas en icaro-bloques por regla general son un bucle infinito donde se lee desde el bloque "inicio" hasta llegar al ultimo bloque pegado a la cadena, y luego vuelve a empezar, aunque hay formas para evitar eso (con bucles "while True" vacios al final).
 


Video del puerto de expansión contando 8 pasos


Este programa es para hacer un contador de 255 pasos,  es mas sencillo porque solo necesitamos que la variable se sume a si misma en cara iteración.
 
Programa en icaro-bloques para un contador de 255 pasos



Video del PORTB contado 255 pasos

Con este puerto de expansión se puede agregar funcionalidades a la placa icaro, como prender luces o reles (para manejar un motor de potencia por ejemplo), y con un poco de maña también 8 servos mas (aunque implicaría tocar muchas cosas a nivel C).

No hay comentarios:

Publicar un comentario