# 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":"hQ`ZeD-]?e2;0{hZUWIN","extraState":{"optionLevel":0},"fields":{"VAR":{"id":"_~$2~q5(TK:f5g*v=:g;"}},"next":{"block":{"type":"variables_setup_imported_function","id":"!*1N8ydTtPMX7g[]PHy}","fields":{"FROM_MODULE":"MBC_exp6_obj_Lib","VAR":{"id":"Y(XB?qCLHK/tU%0|cSfm"}},"next":{"block":{"type":"variables_setup_imported_function","id":"fQ6k.pzO82gT`9h%QLDq","fields":{"FROM_MODULE":"MBC_exp6_obj_Lib","VAR":{"id":"!%@9f[`Y_/py_BQP]rXf"}},"next":{"block":{"type":"variables_setup_object_instance","id":"/,XuRvD}PBq-J96G4]0)","extraState":{"optionLevel":2},"fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn"},"CLASS_NAME":"MBC_EXP6"},"inputs":{"ARG0":{"shadow":{"type":"blockMathNumber","id":"Nn%;~OJ?Ta_(JfF!QlG|","fields":{"NUM":3}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"Xde%bLyYvgK$2CE+n!#A","fields":{"NUM":0}},"block":{"type":"blockLogicTrueFalse","id":"d51+8TxCwQ#Z%;2~e=$p","fields":{"BOOL":"TRUE"}}}}}}}}}}}}},{"type":"blockGlobalStart","id":"3tJe|AWl0baN(wH9a$@.","x":0,"y":278,"deletable":false,"next":{"block":{"type":"blockComment","id":"Yu`Ur(yy;85YE::mB%Hd","fields":{"FIELDNAME":"EXP6 範例 2：三顆馬達一起轉。馬達接 EXP6 擴充孔 1、2、3"},"next":{"block":{"type":"blockWaitUntil","id":"3ovIfKx#sMe`eYqZb}7i","inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"yELLFHs*]|?Ls^`@3j;]"},"block":{"type":"blockLogicCompare","id":"k!nOah9Iv%TMd%mQ%F5p","fields":{"OP1":"EQ"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"vZ$)CprgnZ*fBjWfp`)c","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"W%eb#XqIPQU!o(KO4/RK","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_device_id"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"WKsiFT(.D4OSj=*ASyHT","fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"^@!K^|W1iv:OylJp^i8{","fields":{"NUM":1}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"hYDB.[NZa~ahU!Y+R;:]","fields":{"NUM":5}}}}}}},"next":{"block":{"type":"blockWaitUntil","id":"_C+bu{]I=b-u|gZRzb(*","inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"W[i+vLX([XR)OoJ7[nz{"},"block":{"type":"blockLogicCompare","id":"DNi/hX-6oJlNj4{}%dI=","fields":{"OP1":"EQ"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"33Ua$sE45OQ{I;$UgZMS","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"cN,7phBaX)s~?t_ss408","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_device_id"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"tB]1p)-iSO+ITfM=~V1G","fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"h;gvU!p.!VosL:uYOL5b","fields":{"NUM":2}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"I=:IY}.CuTRO_+#,66KX","fields":{"NUM":5}}}}}}},"next":{"block":{"type":"blockWaitUntil","id":"=rr(`Na7z3IS5ELS~8qj","inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"}z3%4j_h2a+,PE2x5D$("},"block":{"type":"blockLogicCompare","id":"x-0G8^nBPJI6Thdw@;j7","fields":{"OP1":"EQ"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"?R=OAoQBgn(QX72.Floz","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"JZZy8[[Dcxsy9wY4YfcP","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_device_id"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"/MHA)PgJLn8DT[6Zo{+K","fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"3qvoC;=;~#gsb_}O;sS-","fields":{"NUM":3}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"HM{,flE+00=H},%N:5tH","fields":{"NUM":5}}}}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"28WX.;^ijAFU7NKiA%E/","extraState":{"optionLevel":2},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_run"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"G5vD}Xw#8]C4)!=1A{1k","fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"b~!-}gX%,WUZ?[)GYR1x","fields":{"NUM":1}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"hIL9B$Y|bnayUEdbET{d","fields":{"NUM":30}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"Lj8B!yhwpLa168;EWawn","extraState":{"optionLevel":2},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_run"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"r=#[wpY#z1(4gXY!WJ0L","fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"~*$~jTUrj3iyE=y=Al;0","fields":{"NUM":2}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"S}lSS#J$%Op3m.[X`bci","fields":{"NUM":50}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"@d5+?sq,KF}SH#c;t{XG","extraState":{"optionLevel":2},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_run"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"7_u_X_SB)Iyf2S8{WdVr","fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"#WFLcTtV)Y~a;v5Dl$lU","fields":{"NUM":3}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"dt?Aw]U+uF+_6iK=D-XZ","fields":{"NUM":70}}}},"next":{"block":{"type":"blockWaitTime","id":"o#MLyp=}fOQ]u-30zNgY","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"FMY;UOs1v617b:D89xR~","fields":{"VALUE0":3000}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"Z9B%4~hpn*wLLTYI=pji","extraState":{"optionLevel":2},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_run"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"KE9ixAaU]R}sR`hcqc-.","fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"!h7/Mf#2YN=xjtBkkLt4","fields":{"NUM":1}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":":4!@Hu!?+N1R8xf^*f]5","fields":{"NUM":-30}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"j#wi)dLYZFGD5kRTOX;_","extraState":{"optionLevel":2},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_run"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"v]NkI*1xJu7=6.d6Du_(","fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"`cDmMbMi|{cE3T,}(byX","fields":{"NUM":2}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"IYIdbF6m,%BDy2x?h-5!","fields":{"NUM":-50}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"#}xYK~id#WnRw.q{/!F^","extraState":{"optionLevel":2},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_run"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"iKIxckh9O+#y{{PNqe^:","fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"uR^!,fMjxPo,,K]|i[.j","fields":{"NUM":3}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":",OdwlXN%HH8sfJwzTjk%","fields":{"NUM":-70}}}},"next":{"block":{"type":"blockWaitTime","id":"AoF{Fik0UAJA6LIiJ1`v","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"G*ykjm3}]#*)%q9+tJ,S","fields":{"VALUE0":3000}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"bacj?w*nvWi:|HN-b~K[","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"stop_all"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"GnEQ*qUjl3z|%WsS*|`6","fields":{"VAR":{"id":"Y8[fR/[R.)QsY*o@U#Dn","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"A[;1)o]P1{M-3s5Y;YQb","fields":{"NUM":2}}}},"next":{"block":{"type":"blockSpeakerBeep","id":"AlfwW9ii#]T^xv/0o4O/","inputs":{"VAR":{"shadow":{"type":"variables_get_speaker_hub","id":"kg*qmH+nwHJ9Y+t@kgQE","fields":{"VAR":{"id":"_~$2~q5(TK:f5g*v=:g;","name":"hub","type":"PrimeHub"}}}},"VALUE0":{"shadow":{"type":"unit_frequency","id":")?VTc[hPn[Vd/a6+9djY","fields":{"VALUE0":880}}},"VALUE1":{"shadow":{"type":"unit_time","id":"v#IXQ$oNGHeU|.:oc9!n","fields":{"VALUE0":200}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}]},"variables":[{"name":"red","id":"pdWpZWe1A;]fe{}4}3Eb","type":"ColorDef"},{"name":"orange","id":"=Zw.aMwNYKV{%=U-5,av","type":"ColorDef"},{"name":"yellow","id":"`bzgH@j]RNY_Z4~F~]T+","type":"ColorDef"},{"name":"green","id":"Tg#_=!u:D~SZZ5hsD2Sr","type":"ColorDef"},{"name":"cyan","id":"HGiBq2a.CqyY$-|dH9!J","type":"ColorDef"},{"name":"blue","id":"r?m%h{_4z1RemfB+/yZ0","type":"ColorDef"},{"name":"violet","id":"f?f~Ze@RU}Z:0c$OmK4q","type":"ColorDef"},{"name":"magenta","id":"_vN[laemKKuPc=h0Ax@F","type":"ColorDef"},{"name":"white","id":"[%*NBBS;_oGBJ8@bUC_[","type":"ColorDef"},{"name":"none","id":"P|(zoNXW95e;to!yDC87","type":"ColorDef"},{"name":"hub","id":"_~$2~q5(TK:f5g*v=:g;","type":"PrimeHub"},{"name":"MBC_EXP6","id":"Y(XB?qCLHK/tU%0|cSfm","type":"FunctionImported"},{"name":"run_task","id":"!%@9f[`Y_/py_BQP]rXf","type":"FunctionImported"},{"name":"exp6","id":"Y8[fR/[R.)QsY*o@U#Dn","type":"ObjectInstance"}],"info":{"type":"pybricks","version":"2.1.1"},"workspaceOptions":{"scrollX":120,"scrollY":-2.842170943040401e-14,"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 範例 2：三顆馬達一起轉。馬達接 EXP6 擴充孔 1、2、3
    while not await exp6.get_device_id(1) == 5:
        await wait(0)
    while not await exp6.get_device_id(2) == 5:
        await wait(0)
    while not await exp6.get_device_id(3) == 5:
        await wait(0)
    await exp6.motor_run(1, 30)
    await exp6.motor_run(2, 50)
    await exp6.motor_run(3, 70)
    await wait(3000)
    await exp6.motor_run(1, -30)
    await exp6.motor_run(2, -50)
    await exp6.motor_run(3, -70)
    await wait(3000)
    await exp6.stop_all(2)
    await hub.speaker.beep(880, 200)


run_task(main())