From Sugar Labs
< Activities
Revision as of 20:01, 30 September 2012 by Tonyforster (talk | contribs) (Simple example)
Jump to: navigation, search

Butialo is a user-friendly environment that allows programming of the Butiá in the Lua language. Lua is a simple imperative scripting language but can create sophisticated programs. It is a dynamic language with automatic memory management and is extremely fast. Butialo is a derivative of the Pippy IDE (Python environment provided with the XO), which simplifies the creation of programs for the presence of components connected to the Butiá and offering snippets of code to access them.

The authoritative documentation is in the Spanish language at [1]


Download the Activity at [2]

Simple example

Move forward until there is an obstacle.

Motores.setvel2mtr( 1, 500, 1, 500 )
while true do
  local dist = Dist.getDistancia()
  if dist<700 then
     Motores.setvel2mtr( 1, 0, 1, 0 )
        dist = Dist.getDistancia()
     until dist > 700
     Motores.setvel2mtr( 1, 500, 1, 500 )

Can also be programmed with events. The previous program is equivalent to the following:

local function adelante()   -- adelante is Spanish for forward or proceed
 Motores.setvel2mtr( 1, 500, 1, 500 )
local function esperar()    -- esperar is Spanish for wait
 Motores.setvel2mtr( 1, 0, 1, 0 )
 wait( 1 )

events.add( Dist.getDistancia, '<', 700, esperar )
events.add( Dist.getDistancia, '>', 700, adelante )

Simple example (other)

Butia with dynamic stability. Take a Butiá, remove idler wheels and place an IR distance sensor pointing to the floor. The button toggles the behavior.

local d		--lecturas de distancia
local eq	--posicion de equilibrio de d
local v		--velocidad calculada

while true do

print ("Presione el botón para comenzar") repeat until Boton.getBoton()==1

eq = Dist.getDistancia()

print("Arrancando", eq) util.wait(1)

repeat d = Dist.getDistancia() v = 100+5*math.abs(d-eq) if v > 1024 then v = 1024 end if d < eq then Motores.setvel2mtr(1, v, 1, v) else Motores.setvel2mtr(0, v, 0, v) end until Boton.getBoton()==1

print("Fin") Motores.setvel2mtr(1, 0, 1, 0) util.wait(1)


Continue reading in Spanish