# 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":"QE.KU}K[qpy]|`$`D|3J","extraState":{"optionLevel":0},"fields":{"VAR":{"id":"7vGH(bfA,cNq8}oK80d]"}},"next":{"block":{"type":"variables_setup_imported_function","id":"($lY?tnnQp;PjP[dz^])","fields":{"FROM_MODULE":"MBC_exp6_obj_Lib","VAR":{"id":"!a}.mWMFdztGe6G67_{,"}},"next":{"block":{"type":"variables_setup_imported_function","id":"v%t}i(It]Sl+qBjSNM]H","fields":{"FROM_MODULE":"MBC_exp6_obj_Lib","VAR":{"id":"H[t_ZQK^aRKjjD=-M_aK"}},"next":{"block":{"type":"variables_setup_object_instance","id":"z5IFf(uB{AO.DPpz@xHL","extraState":{"optionLevel":2},"fields":{"VAR":{"id":"ACYsrcF`?SZC.e6Y$:OG"},"CLASS_NAME":"MBC_EXP6"},"inputs":{"ARG0":{"shadow":{"type":"blockMathNumber","id":"zhJLJ?:_irFAdU{z2XLK","fields":{"NUM":3}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"~3[QU8=fF56Cu5-C6[Gn","fields":{"NUM":0}},"block":{"type":"blockLogicTrueFalse","id":"Z0}9CO}T~Qo}GBSD)c{$","fields":{"BOOL":"TRUE"}}}}}}}}}}}}},{"type":"blockGlobalStart","id":"3tJe|AWl0baN(wH9a$@.","x":0,"y":278,"deletable":false,"next":{"block":{"type":"blockComment","id":"*$4gy=$jjK[se#DWMFcb","fields":{"FIELDNAME":"EXP6 範例 1：一顆馬達轉一圈再轉回來。Host 線接主機 C 孔，馬達接 EXP6 擴充孔 1"},"next":{"block":{"type":"blockWaitUntil","id":"f!2cEZ*f%~F:ynN!Nbpu","inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"Sd}l;=2;PKi7yIXY)5?b"},"block":{"type":"blockLogicCompare","id":"yY@=PLbhLr_+|IS.yP(U","fields":{"OP1":"EQ"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"Jue4t_PF4(R!)=5*tjQ6","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"4`uGAo;:7aV@{6Q^=r/t","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_device_id"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":":{/%_SlyMW~Ot844f9bB","fields":{"VAR":{"id":"ACYsrcF`?SZC.e6Y$:OG","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"|s)Tjd({1jHXtSAXM_J*","fields":{"NUM":1}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"_eWctxlGbpk9j*B6]u.s","fields":{"NUM":5}}}}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"keDTZn*wJ-h=,q]WOlh]","extraState":{"optionLevel":4},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_run_degrees"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"2!/ni-{njBKSJ=SQcB9N","fields":{"VAR":{"id":"ACYsrcF`?SZC.e6Y$:OG","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"*5YGyxRsujgfU7*f;UpZ","fields":{"NUM":1}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"*7Z2==7lX?]cm@(69%?]","fields":{"NUM":50}}},"ARG2":{"shadow":{"type":"blockMathNumber","id":"4D%--bxyZ:{9~Gx?jrvR","fields":{"NUM":360}}},"ARG3":{"shadow":{"type":"blockMathNumber","id":"s08oIF:za~Div*gzQMhk","fields":{"NUM":2}}}},"next":{"block":{"type":"blockWaitTime","id":"%^5tXvr[brFun77$)v0q","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"63ML/L)IxulpDh]HR-(8","fields":{"VALUE0":1500}}}},"next":{"block":{"type":"blockLightMatrixDo","id":"z4z-rp9!^`j)veu7:ohK","extraState":{"optionLevel":1},"fields":{"METHOD":"LIGHT_MATRIX_NUMBER"},"inputs":{"VAR":{"shadow":{"type":"variables_get_light_matrix_hub","id":"z*eZS=1K2[1~x7ZM~]+!","fields":{"VAR":{"id":"7vGH(bfA,cNq8}oK80d]","name":"hub","type":"PrimeHub"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":";NM.l#0f9EcR11w4=#4i","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"3WGQ)1_P,M=D1U#-DTv2","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_motor_angle"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"}O~Q:M/|DW2(%P5K|eqg","fields":{"VAR":{"id":"ACYsrcF`?SZC.e6Y$:OG","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"^L8|MVvU)!vhPJ}yHfeT","fields":{"NUM":1}}}}}}},"next":{"block":{"type":"blockWaitTime","id":"#-BZNj}i59X@x4YO;SUA","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"D`)628qGIdnEm*bx|liR","fields":{"VALUE0":2000}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"D-7,Qx8.09g]{gUgpL_y","extraState":{"optionLevel":4},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_run_degrees"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"eBJW/NjidPGLR#{G=.nv","fields":{"VAR":{"id":"ACYsrcF`?SZC.e6Y$:OG","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"@-M@:f|wQ!]|7.wirbfJ","fields":{"NUM":1}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"mg/E~6aXu`G^WLSJKoBK","fields":{"NUM":50}}},"ARG2":{"shadow":{"type":"blockMathNumber","id":"W=sa[RpKIcm2GGQ(GHjr","fields":{"NUM":-360}}},"ARG3":{"shadow":{"type":"blockMathNumber","id":"iFt~vV^x%.b+RZXAJ4eW","fields":{"NUM":2}}}},"next":{"block":{"type":"blockWaitTime","id":"QC=f~k#N)kC{2+HU2V]J","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":":UK!kOD,95X70|,Po:es","fields":{"VALUE0":1500}}}},"next":{"block":{"type":"blockLightMatrixDo","id":"=lb88d13c_GwSawQ-.J@","extraState":{"optionLevel":1},"fields":{"METHOD":"LIGHT_MATRIX_NUMBER"},"inputs":{"VAR":{"shadow":{"type":"variables_get_light_matrix_hub","id":"i.R./RJ9;/XPI80lIAb|","fields":{"VAR":{"id":"7vGH(bfA,cNq8}oK80d]","name":"hub","type":"PrimeHub"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"~S/0krI!FhrDLYqmQQRb","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"uTei=)kD3`=fK3xq!VGn","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_motor_angle"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"o~7AcGe`%1eC/}wXzaZf","fields":{"VAR":{"id":"ACYsrcF`?SZC.e6Y$:OG","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"b4}Nz4PId-=Z#1cOR^TT","fields":{"NUM":1}}}}}}},"next":{"block":{"type":"blockWaitTime","id":"gE}2qa]k`IT`c@^pSy?4","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"RdHG2(kfoTW{`ujgS==$","fields":{"VALUE0":2000}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"{i;iKX)5VxM=dM0+?7(Y","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"stop_all"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"b8SWE?abWQ?;p98~|QM)","fields":{"VAR":{"id":"ACYsrcF`?SZC.e6Y$:OG","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"|mCvj.PwtDm[!x9zATzo","fields":{"NUM":1}}}}}}}}}}}}}}}}}}}}}}}}}}}]},"variables":[{"name":"red","id":"rd[FTo9TK|6O*th|%hJk","type":"ColorDef"},{"name":"orange","id":"4xgFs*i[*83?icibX(],","type":"ColorDef"},{"name":"yellow","id":"2XmNwtF,q{09Zoh2uGCo","type":"ColorDef"},{"name":"green","id":"e_S+_=@Di0t!x]l(HDL^","type":"ColorDef"},{"name":"cyan","id":"gsRd_ca6_!mN/rdl$;M1","type":"ColorDef"},{"name":"blue","id":"w05|z_L!J}wcE)9EF5y6","type":"ColorDef"},{"name":"violet","id":"Xix9c4a-d~JSjgrMeF+h","type":"ColorDef"},{"name":"magenta","id":"}FsN}0xy#P!,p(jC/)LF","type":"ColorDef"},{"name":"white","id":"!,aSYpfT.O:PG9rtqtYa","type":"ColorDef"},{"name":"none","id":"PmEcY0T^l(cgpr#v}eZ9","type":"ColorDef"},{"name":"hub","id":"7vGH(bfA,cNq8}oK80d]","type":"PrimeHub"},{"name":"MBC_EXP6","id":"!a}.mWMFdztGe6G67_{,","type":"FunctionImported"},{"name":"run_task","id":"H[t_ZQK^aRKjjD=-M_aK","type":"FunctionImported"},{"name":"exp6","id":"ACYsrcF`?SZC.e6Y$:OG","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 範例 1：一顆馬達轉一圈再轉回來。Host 線接主機 C 孔，馬達接 EXP6 擴充孔 1
    while not await exp6.get_device_id(1) == 5:
        await wait(0)
    await exp6.motor_run_degrees(1, 50, 360, 2)
    await wait(1500)
    hub.display.number(await exp6.get_motor_angle(1))
    await wait(2000)
    await exp6.motor_run_degrees(1, 50, -360, 2)
    await wait(1500)
    hub.display.number(await exp6.get_motor_angle(1))
    await wait(2000)
    await exp6.stop_all(1)


run_task(main())