Butialo: Ejemplo 4 - Robot que no se caiga de la mesa con eventos, utilizando un sensor de grises - Código
De Proyecto Butiá
Revisión del 11:46 15 oct 2012 de Lcairelli (Discusión | contribuciones)
local COLOR_MESA = 55000
local INTERVALO_CHEQUEO = 0.05
local TIEMPO_RETROCESO = 0.1
local VELOCIDAD_RETROCESO = 500
local VELOCIDAD_GIRO = 500
local MOTOR_VEL = 500
local MIN_TIEMPO_GIRO = 0.5
local MAX_TIEMPO_GIRO = 2
local MIN_TIEMPO_RETROCESO = 1.5
local MAX_TIEMPO_RETROCESO = 2.5
local function avanzar()
Motors.setvel2mtr(0, MOTOR_VEL, 0, MOTOR_VEL)
end
local function chequear_giro_izquierda()
-- Para girar random izq o der, uso un entero del 0-1
-- Si valor random > 0.5 es izq, sino der
-- DERECHA = false, IZQUIERDA = true
local sentido = math.random (0, 1)
return sentido > 0.5
end
local function girar_aleatorio()
local tiempo_giro = math.random(MIN_TIEMPO_GIRO, MAX_TIEMPO_GIRO)
local izquierda = chequear_giro_izquierda()
if (izquierda) then
Motors.setvel2mtr(0, VELOCIDAD_GIRO, 1, VELOCIDAD_GIRO)
else
Motors.setvel2mtr(1, VELOCIDAD_GIRO, 0, VELOCIDAD_GIRO)
end
util.wait(tiempo_giro)
end
local function retroceder_aleatorio()
local tiempo_retroceso = math.random(MIN_TIEMPO_RETROCESO, MAX_TIEMPO_RETROCESO)
Motors.setvel2mtr(1, VELOCIDAD_RETROCESO, 1, VELOCIDAD_RETROCESO)
util.wait(tiempo_retroceso)
end
local function retroceder_y_girar_aleatorio()
retroceder_aleatorio()
girar_aleatorio()
end
events.add(Grey_2.getValue, '>=', COLOR_MESA,retroceder_y_girar_aleatorio)
events.add(Grey_2.getValue, '<', COLOR_MESA, avanzar )
events.go()