TripleMutexwithTouchandDistance
From ZENotes
mutex moveMutex; task move_square() { while (true) { Acquire(moveMutex); OnFwd(OUT_AC, 55); Wait(1000); OnRev(OUT_C, 50); Wait(500); Release(moveMutex); } } task check_sensors() { while (true) { if (SENSOR_1 == 1) { Acquire(moveMutex); OnRev(OUT_AC, 15); Wait(3000); Release(moveMutex); } } } task closeup() { while(true) { while(SensorUS(IN_4)>15); Acquire(moveMutex); Off(OUT_AC); OnRev(OUT_C,100); Wait(800); Release(moveMutex); } } task main() { SetSensor(IN_1,SENSOR_TOUCH); SetSensorLowspeed(IN_4); Precedes(check_sensors, move_square, closeup); }