Diferencia entre revisiones de «HackPoints»

De Proyecto Butiá
Saltar a: navegación, buscar
Línea 36: Línea 36:
  
 
* Un ejemplo sencillo de seguidor de línea, donde se utilizan 4 pines y a los cuales se conectan dos motores de continua (ver [[Tutorial de armado de butiá con motores de corriente Continua]] para más información).  
 
* Un ejemplo sencillo de seguidor de línea, donde se utilizan 4 pines y a los cuales se conectan dos motores de continua (ver [[Tutorial de armado de butiá con motores de corriente Continua]] para más información).  
 
+
<!--
 
<br><syntaxhighlight lang="lua">
 
<br><syntaxhighlight lang="lua">
 
  -- Example of simple line follower with hackpoints and dc motors
 
  -- Example of simple line follower with hackpoints and dc motors
 +
local ERROR = -1
 +
local GREY_TRESHOLD = 35000 -- this value must be calibrated. In this example values under ...... -FIXME
 
local socket = require("socket")
 
local socket = require("socket")
  
Línea 50: Línea 52:
 
end
 
end
  
while true do
+
send("CALL hackp writePort 0")  -- init
  
 +
-- find grey sensor connected
 +
list = send("LIST")
 +
_, pos = string.find(list, "grey:")
 +
if pos == nil then
 +
    print("ABORTING :: No grey sensor is connected.\n");
 +
    return ERROR
 
end
 
end
</syntaxhighlight>
 
  
 +
port = string.sub(list,pos+1,pos+1) -- get grey port number
 +
local msg_g = "CALL grey:"..port.." getValue"
 +
 +
-- main loop
 +
while true do
 +
    if tonumber(send(msg_g)) > GREY_TRESHOLD then
 +
        send("CALL hackp writePort 144") -- turn -FIXME
 +
    else
 +
        send("CALL hackp writePort 160") -- forward
 +
    end
 +
end
 +
</syntaxhighlight>-->
  
 
== Tortubots ==
 
== Tortubots ==

Revisión del 18:08 27 dic 2012

En el diseño actual de la placa se incluye un puerto para manejar 8 pines digitales. Los mismos pueden ser utilizados en modo entrada como en modo salida. Esto permite extender las capacidades de la placa usb4butia.

Su ubicación en la placa USB4butia es la siguiente:

Hackp5.png

Firmware y bobot

En el firmware están implementadas las correspondientes funciones para manejar los pines de forma individual, o en forma general cambiando la configuración de los 8 pines en una sola llamada.

El correspondiente driver en bobot para interactuar con los pines se encarga de solicitar y enviar los datos a la placa. Podemos fácilmente escribir nuestro programa en lua invocando a las funciones definidas en el driver mencionado:

read(pin)
write(pin,value)
setMode(pin,mode)
changePortDir(mode)
writePort(value)


read Recibe como parámetro el pin cuyo valor nos interesa consultar. Retorna el valor del pin en ese instante. El pin debe estar seteado como entrada.

write Recibe como parámetro el pin cuyo valor nos interesa actualizar, y el valor propiamente dicho que queremos que adopte (0 ó 1). Retorna -1 en caso de error, 0 sino. El pin debe estar seteado como salida.

setMode Recibe como parámetro el pin cuya dirección nos interesa modificar, y el modo que queremos que adopte (0=SALIDA ó 1=ENTRADA). Retorna -1 en caso de error, 0 sino.

changePortDir Similar a la función anterior pero se actualiza el modo de todos los pines del puerto, pasando a ser 0 ó 1, según se haya indicado en el parámetro que recibe. Retorna -1 en caso de error, 0 sino.

writePort Al igual que la función write, actualiza el valor de cada uno de los pines del puerto, según lo interpretado en el parámetro recibido, el mismo puede ser cualquier valor entre 0 y 255. Retorna -1 en caso de error, 0 sino.


Tortubots

Desde tortubots podemos manejar estos pines mediante bloques individuales que nos permiten cambiar el modo (IN/OUT) y el nivel (HIGH/LOW) de los mismos. Estos bloques se encuentran en la paleta extra de butiá:


Hackp1.png

Notar que los pines los nombramos desde 1 a 8.


  • Para cambiar el modo a entrada (IN) o salida (OUT) utilizamos el siguiente bloque:

Hackp4.png cambiando el pin 3 a salida.

Recibe como parámetros el pin con el que deseamos trabajar, y un modo, SALIDA ó ENTRADA.

  • Si tenemos seteado el modo del pin como SALIDA, para setear el nivel (0 o 1) utilizamos el bloque:

Hackp3.png escribir el pin 3.

El mismo recibe como parámetros el número de pin que queremos modificar y el valor que nos interesa, ALTO (= 1) ó BAJO (= 0). Previamente tenemos que haber seteado el modo como SALIDA.

  • Si tenemos seteado el modo del pin como ENTRADA, para consultar el valor del pin utilizamos el bloque:

Hackp2.png leer el pin 3.

Como parámetro recibe el número de pin, y si no hay error, nos devuelve su valor.


Para ver aplicaciones que hacen uso de estos pines: Tutorial de armado de butiá con motores de corriente Continua

Para conocer la utilidad de los restantes bloques de esta paleta: Medir voltaje y resistencia