Butialo: Ejemplo 5 - Seguidor de líneas con eventos, utilizando dos sensores de grises - Código

De Proyecto Butiá
Saltar a: navegación, buscar
local COLOR_NEGRO = 35000
local MOTOR_VEL = 500
local MOTOR_GIRO_VEL = 500
local NEGRO_IZQUIERDO, NEGRO_DERECHO, NEGRO_AMBOS, BLANCO = 0, 1, 2, 3
local negro_izquierda
local negro_derecha

local function avanzar()
    Motors.setvel2mtr(0, MOTOR_VEL, 0, MOTOR_VEL)
end

local function detener()
    Motors.setvel2mtr(0, 0, 0, 0)
end

local function es_negro(valor)
    return (valor > COLOR_NEGRO)
end

local function girar_derecha()
    Motors.setvel2mtr(0,MOTOR_GIRO_VEL,0,0)
end

local function girar_izquierda()
    Motors.setvel2mtr(0,0,0,MOTOR_GIRO_VEL)
end

local function obtener_estado()
    negro_izquierda = es_negro(Grey_1.getValue())
    negro_derecha = es_negro(Grey_2.getValue())
    if (negro_izquierda and negro_derecha) then
	return NEGRO_AMBOS
    elseif (negro_izquierda) then
	return NEGRO_IZQUIERDO
    elseif (negro_derecha) then
	return NEGRO_DERECHA
    else
	return BLANCO
    end
end

events.add(obtener_estado, '==', NEGRO_IZQUIERDO, girar_izquierda)
events.add(obtener_estado, '==', NEGRO_DERECHO, girar_derecha)
events.add(obtener_estado, '==', NEGRO_AMBOS, avanzar)
events.add(obtener_estado, '==', BLANCO, detener)

events.go()