# pybricks blocks file:{"blocks":{"languageVersion":0,"blocks":[{"type":"blockGlobalSetup","id":"bjK,wS1MYO7aiYkFSwd{","x":0,"y":0,"deletable":false,"next":{"block":{"type":"variables_set_prime_hub","id":"AB9.4`$~/t.hi8T?X2+z","extraState":{"optionLevel":0},"fields":{"VAR":{"id":"9N,rWJT-bB^uB}V,DS2K"}},"next":{"block":{"type":"variables_setup_imported_function","id":"sod,T:Y!xtQ(32.WTndB","fields":{"FROM_MODULE":"MBC_exp6_obj_Lib","VAR":{"id":"Gd1]ws*lF]*_[`kf;8[Q"}},"next":{"block":{"type":"variables_setup_imported_function","id":"`yjx||/`l$s$l@Y-no.A","fields":{"FROM_MODULE":"MBC_exp6_obj_Lib","VAR":{"id":"*:X+Sg}4kaLq:6N)?L3]"}},"next":{"block":{"type":"variables_setup_object_instance","id":"~p1tdsn@6#T[f;/+AEPw","extraState":{"optionLevel":2},"fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!"},"CLASS_NAME":"MBC_EXP6"},"inputs":{"ARG0":{"shadow":{"type":"blockMathNumber","id":"nxx?NMCQ|6[HFkfCyRIO","fields":{"NUM":3}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"YB|5xp7r4N;;D}S^_s%[","fields":{"NUM":0}},"block":{"type":"blockLogicTrueFalse","id":"f+Lci6{DJ07{F9QO$~.$","fields":{"BOOL":"TRUE"}}}}}}}}}}}}},{"type":"blockGlobalStart","id":"3tJe|AWl0baN(wH9a$@.","x":0,"y":278,"deletable":false,"next":{"block":{"type":"blockComment","id":"^#[HsyzxEHl-KB|F!=/}","fields":{"FIELDNAME":"EXP6 範例 5：兩輪小車走正方形。左輪接擴充孔 1（反裝）、右輪接擴充孔 2"},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"rSlzB[2xUq0%BJ1NuHO7","extraState":{"optionLevel":2},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"set_motor_inverted"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"M@wK/W9KS_L$-/}*NWh@","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"xFX{l^?n_y[IG_Sc@C7,","fields":{"NUM":1}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"t@X|Rwm1l^MsS@MAbd{P","fields":{"NUM":0}},"block":{"type":"blockLogicTrueFalse","id":",$Rjv]ZF2WHr54!84^+2","fields":{"BOOL":"TRUE"}}}},"next":{"block":{"type":"blockWaitUntil","id":"}T,(sCRM6Q|AS-ZErDIR","inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"he3.5)CmcKU5_-K4qAOh"},"block":{"type":"blockLogicCompare","id":"N)6}Mxwr{trAo|h1ja~r","fields":{"OP1":"EQ"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"7}J(1Ts~9y{de;9Su,yZ","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"@{-f*$0Z(72YCAN:d2nH","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_device_id"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"?@4c[~5y|wF~g?i^Z)9Y","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"mk7+|pd{wUxW._k?4,ot","fields":{"NUM":1}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"^E#3Hj^Zj#OYHZPdP:7J","fields":{"NUM":5}}}}}}},"next":{"block":{"type":"blockWaitUntil","id":"m*v7SXZ%mi@?`W(ka+)^","inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"ccdD,lPoLhI:eIe_Hx_s"},"block":{"type":"blockLogicCompare","id":"f!GNro6FYBe*9[;?v04A","fields":{"OP1":"EQ"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"d;h$[wV?R^8WImk+xJ+1","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"o$RSd@xlj%VeSJc^=C7d","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_device_id"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"U!,)FE=J6{GcY]!:;5Yp","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"`geu3^gU./(EF5F?t{IB","fields":{"NUM":2}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"Cgsx;g$7JkmAwHS8l^l?","fields":{"NUM":5}}}}}}},"next":{"block":{"type":"blockWaitTime","id":"keVbQ}+.?7/%2a4T*!sa","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"EyxxSK~IAsc[wOUdNpYK","fields":{"VALUE0":300}}}},"next":{"block":{"type":"blockFlowRepeat","id":"Om^ZuyidJN^8AcXK~hHu","inputs":{"TIMES":{"shadow":{"type":"blockMathNumber","id":"I$J+F3n?*JD49MG=d,R)","fields":{"NUM":4}}},"DO":{"block":{"type":"blockObjectInstanceCallStatement","id":"MTJ0fUZr~3wB]-=U}Jx_","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"reset_angle"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"C4LZW6xC`l@-J@k%K,X(","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"SDK[!(z4,}_K4=[n8g;M","fields":{"NUM":2}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"h*U~*uBjvS,;o0p0!.N`","extraState":{"optionLevel":4},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"drive"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"|^;Rd1?+!~?c6L3Q;HE,","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"Bmdj@~ShEXe(qxx#1foE","fields":{"NUM":1}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"DjIQ_9Z8IU~B}#(b2qx`","fields":{"NUM":2}}},"ARG2":{"shadow":{"type":"blockMathNumber","id":"qZfM-]4MR^wYNEAr!LS5","fields":{"NUM":40}}},"ARG3":{"shadow":{"type":"blockMathNumber","id":"Pg`76OPnZIA,yeZRXR(~","fields":{"NUM":40}}}},"next":{"block":{"type":"blockWaitUntil","id":"/t903AK*rb{;(09y1W#]","inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"@I,E]Rt1GM^QtB3*+Y)d"},"block":{"type":"blockLogicCompare","id":"]wLzz)^=?Wgq-jd;k;e=","fields":{"OP1":"GTE"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"8T@m+]Ge#_mjOxkePnLO","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"|.5`,--NZw?l-]^uf4[H","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_motor_angle"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"m^DQC=P3Z`Eu+Aa:vmPz","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"{eDYi:^vZ(VX.7_YP{(J","fields":{"NUM":2}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"qT?6**pliDn:usz.~$$D","fields":{"NUM":720}}}}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"@UVNo7r@~A9[f[4=AT1F","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"stop_all"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"jTaG=s)QVo,cimu?vj5m","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":")OmjcjKIgdcA*tcHM0s~","fields":{"NUM":2}}}},"next":{"block":{"type":"blockWaitTime","id":"ml8zv0d.K1Lom,hNsVIf","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"/q[*yu)v?HS_Us,+a?bM","fields":{"VALUE0":300}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"WUxH[]__N%{5SS/K.i8F","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"reset_angle"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"z+(E3c_1FFPV1f|PUOtb","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"p;RNTH*;PSLtV!$EgbO+","fields":{"NUM":2}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"n=Qt#)NKxl$PzDq3ycgT","extraState":{"optionLevel":4},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"drive"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"(ld/[=ZC@TtK3uJ](LL$","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"V#!@XGVix4C8zS%2||vW","fields":{"NUM":1}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"EtEOqFfF%!0J8_dRdpD`","fields":{"NUM":2}}},"ARG2":{"shadow":{"type":"blockMathNumber","id":"?xBIbPf{cMYYm_VRTp?|","fields":{"NUM":30}}},"ARG3":{"shadow":{"type":"blockMathNumber","id":"Lwz^R45V=VJpL2{,AUr`","fields":{"NUM":-30}}}},"next":{"block":{"type":"blockWaitUntil","id":"g#C/7(;rlK~}=5|BO/E;","inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"/I}Xr*~,;=pN4.{VP,jg"},"block":{"type":"blockLogicCompare","id":"#U(O8wdZxlof?lc~iyIh","fields":{"OP1":"LTE"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"Tox?mis@3-VJ%#%3V*Pe","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"ejiRw4*p8%5H:#H(UJ)|","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_motor_angle"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"iC,eoK8IRU.u*EmZu|{(","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"UdU*7_?/W+OrX`Tv,[?C","fields":{"NUM":2}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"8#xGdmEUvMQ5o1ib0m75","fields":{"NUM":-180}}}}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"@1[bHX?T@Ch5{za?2_bC","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"stop_all"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"r.2YszZ*W6c7PH8i?4Pj","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"5f;V2VpJ!xz~!sAdt90s","fields":{"NUM":2}}}},"next":{"block":{"type":"blockWaitTime","id":"w~]g-i]OIVXM4d;v2`jB","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"O*m#oVDnf6X{.@k:`gj2","fields":{"VALUE0":300}}}}}}}}}}}}}}}}}}}}}}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"o4{Jx`+A!mDp]Ve9#$oY","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"stop_all"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":":+=NOL*kDlDmhXM/3[aN","fields":{"VAR":{"id":"`ho*ksa}|x(ts{Xv}r,!","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"b0F=aAh/gyj/~XYH861@","fields":{"NUM":1}}}}}}}}}}}}}}}}}}}]},"variables":[{"name":"red","id":"CbA0MDAAzJ)=E@C5:`aU","type":"ColorDef"},{"name":"orange","id":"-r#_x3eE[YkM],or-U4w","type":"ColorDef"},{"name":"yellow","id":"S55!Dn+b-;=U,FLFUCQt","type":"ColorDef"},{"name":"green","id":"w$_TKj%F5#!IeJKrnj+u","type":"ColorDef"},{"name":"cyan","id":"ibu(9hP?qic4Txr$~DI[","type":"ColorDef"},{"name":"blue","id":"c1,C[(*$`5I(3h6VUkpG","type":"ColorDef"},{"name":"violet","id":"(4,VbSQRt%1Nd1(K.F5h","type":"ColorDef"},{"name":"magenta","id":"G`4#,Pd!Tdz3Y8.%{be.","type":"ColorDef"},{"name":"white","id":"300M3^|6!Ryl)Sc5]@~=","type":"ColorDef"},{"name":"none","id":"Lksn!nhVr4?=tSJA~pTA","type":"ColorDef"},{"name":"hub","id":"9N,rWJT-bB^uB}V,DS2K","type":"PrimeHub"},{"name":"MBC_EXP6","id":"Gd1]ws*lF]*_[`kf;8[Q","type":"FunctionImported"},{"name":"run_task","id":"*:X+Sg}4kaLq:6N)?L3]","type":"FunctionImported"},{"name":"exp6","id":"`ho*ksa}|x(ts{Xv}r,!","type":"ObjectInstance"}],"info":{"type":"pybricks","version":"2.1.1"},"workspaceOptions":{"scrollX":120,"scrollY":0,"scale":1}}
from pybricks.hubs import PrimeHub
from pybricks.tools import multitask, run_task, wait

from MBC_exp6_obj_Lib import MBC_EXP6, run_task

# Set up.
hub = PrimeHub()
exp6 = MBC_EXP6(3, True)

async def main():
    # EXP6 範例 5：兩輪小車走正方形。左輪接擴充孔 1（反裝）、右輪接擴充孔 2
    await exp6.set_motor_inverted(1, True)
    while not await exp6.get_device_id(1) == 5:
        await wait(0)
    while not await exp6.get_device_id(2) == 5:
        await wait(0)
    await wait(300)
    for count in range(4):
        await wait(0)
        await exp6.reset_angle(2)
        await exp6.drive(1, 2, 40, 40)
        while not await exp6.get_motor_angle(2) >= 720:
            await wait(0)
        await exp6.stop_all(2)
        await wait(300)
        await exp6.reset_angle(2)
        await exp6.drive(1, 2, 30, -30)
        while not await exp6.get_motor_angle(2) <= -180:
            await wait(0)
        await exp6.stop_all(2)
        await wait(300)
    await exp6.stop_all(1)


run_task(main())