今天上課的題目: 機器人定速前進, 但壓下觸碰感應器後就會定速後退。
關鍵在於使用兩個task來管理subroutine, 並透過傳值來使馬達反轉。 aaa與bbb都使用了 Acquire()與Release()來管理, 避免兩個 task 打架。
又澄是一位可愛但有點愛偷懶的妹妹, 由於堅持不讓本尊曝光, 所以沒有照片…
============================================
int a = 30;
mutex move;
sub x(int power)
{ OnFwd(OUT_AB,power); }
task aaa()
{
while(true)
{
Acquire(move);
x(a);
Wait(300);
Release(move);
}
}//aaa
task bbb()
{
while(true)
{
if(Sensor(S2)==1)
{
Acquire(move);
x(-a);
Wait(300);
Release(move);
}
}
}//bbb
task main()
{
SetSensorTouch(S2);
Precedes(aaa,bbb);
}