# 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":"!U_rT:pU(U,eXH}97}2_","extraState":{"optionLevel":0},"fields":{"VAR":{"id":"-Vn`7EAPf$S.6SXW(mDh"}},"next":{"block":{"type":"variables_setup_imported_function","id":"|^dN7mqPdP!j5f;2JQ]7","fields":{"FROM_MODULE":"MBC_exp6_obj_Lib","VAR":{"id":"DR+x{?J4LyG~y~.Hc{%9"}},"next":{"block":{"type":"variables_setup_imported_function","id":"VO!g||KtK=eF*WKjw|HL","fields":{"FROM_MODULE":"MBC_exp6_obj_Lib","VAR":{"id":"$Q`K7EOjZV[OmBC?kDq^"}},"next":{"block":{"type":"variables_setup_object_instance","id":"d~!?A2[sqfK}BjOAPkFY","extraState":{"optionLevel":2},"fields":{"VAR":{"id":"DEJ@^[~ft(^;(04)*-s("},"CLASS_NAME":"MBC_EXP6"},"inputs":{"ARG0":{"shadow":{"type":"blockMathNumber","id":"YAIA:r#fZGrkpii}`e)8","fields":{"NUM":3}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"fh~!tA6di9UHFxgGO6^f","fields":{"NUM":0}},"block":{"type":"blockLogicTrueFalse","id":"/O/L4|.NAjBQ#_~r8YoC","fields":{"BOOL":"TRUE"}}}}}}}}}}}}},{"type":"blockGlobalStart","id":"3tJe|AWl0baN(wH9a$@.","x":0,"y":278,"deletable":false,"next":{"block":{"type":"blockComment","id":"EH6MMd3je21^-v(J@eJ:","fields":{"FIELDNAME":"EXP6 範例 4：按住左鍵正轉、右鍵反轉、放開停；左右鍵一起按結束。馬達接擴充孔 1"},"next":{"block":{"type":"blockWaitUntil","id":"r;v?7wRKw4Fu)^;[aI$t","inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"U7#-=}B]eaLX@^MMx8H2"},"block":{"type":"blockLogicCompare","id":"]U6^L]otw02y-4X*+R1Q","fields":{"OP1":"EQ"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"fFVxrqjcqPa*a%T=jgVb","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":"=1D):w!s^HoMcyFa38BO","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"get_device_id"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"C?@Ev8j|UydTwSAsfxsT","fields":{"VAR":{"id":"DEJ@^[~ft(^;(04)*-s(","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"Dd$c?44bD?GjN.ROKkXO","fields":{"NUM":1}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"i@vM-q7X:xegSE!`aT7v","fields":{"NUM":5}}}}}}},"next":{"block":{"type":"blockFlowWhile","id":":S8GQeSi=!Jg#7udRt9-","fields":{"MODE":"UNTIL"},"inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":",^d`]7~ID[od#H]PaH=F"},"block":{"type":"blockLogicOperation","id":"EXCpAz(V6eIs}ztKSOG(","fields":{"OP":"AND"},"inputs":{"A":{"shadow":{"type":"blockLogicTrue","id":"q6gikmm2DR6@_oWM|@Q`"},"block":{"type":"blockButtonIsPressed","id":"9swvLkpOLMGxy;F8r*d`","inputs":{"VAR":{"shadow":{"type":"variables_get_keypad","id":"7FhXl*QI))`Tid+K59sl","fields":{"VAR":{"id":"-Vn`7EAPf$S.6SXW(mDh","name":"hub","type":"PrimeHub"}}}},"VALUE0":{"shadow":{"type":"blockParametersButton","id":"T4TlI8Fk23}Ak=Z^|%Os","fields":{"VALUE":"LEFT"}}}}}},"B":{"shadow":{"type":"blockLogicTrue","id":"=VChEM?+T!jl/^6BO+g;"},"block":{"type":"blockButtonIsPressed","id":"Oz#i=2_bS/J_T4{:[tHs","inputs":{"VAR":{"shadow":{"type":"variables_get_keypad","id":"uHTXbS8?`+z/p=y:/.)t","fields":{"VAR":{"id":"-Vn`7EAPf$S.6SXW(mDh","name":"hub","type":"PrimeHub"}}}},"VALUE0":{"shadow":{"type":"blockParametersButton","id":"N(R4/QpaH`hlS`Edc/j9","fields":{"VALUE":"RIGHT"}}}}}}}}},"DO":{"block":{"type":"blockIfElse","id":"uS;]~RQ,6~^~aiwDol|f","extraState":{"optionLevel":2},"inputs":{"IF0":{"shadow":{"type":"blockLogicTrue","id":"9yhRX0-gnsQ_v}=sCjA*"},"block":{"type":"blockButtonIsPressed","id":"Qd[EOw,Gdim$tx#ITB65","inputs":{"VAR":{"shadow":{"type":"variables_get_keypad","id":"bCqiv{4Abv[Gln_!LwCA","fields":{"VAR":{"id":"-Vn`7EAPf$S.6SXW(mDh","name":"hub","type":"PrimeHub"}}}},"VALUE0":{"shadow":{"type":"blockParametersButton","id":"`~Do`~b0HkTc6YneLk_X","fields":{"VALUE":"LEFT"}}}}}},"DO0":{"block":{"type":"blockObjectInstanceCallStatement","id":"ca1kP)w2]J41}iaYxb|s","extraState":{"optionLevel":2},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_run"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"9-q%|(RZw#KIFW9]BscB","fields":{"VAR":{"id":"DEJ@^[~ft(^;(04)*-s(","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"#}vb4Wab9V_|`W,zBPv@","fields":{"NUM":1}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"@r`h|hVXM$:DvQkTb6{*","fields":{"NUM":50}}}}}},"IF1":{"shadow":{"type":"blockLogicTrue","id":"D2OJ/0(Y!oE.Z/LNW%(."},"block":{"type":"blockButtonIsPressed","id":"}~r:}xTVdE+xns}i4Ko;","inputs":{"VAR":{"shadow":{"type":"variables_get_keypad","id":"Gqb`O7G2_d/B=$84MP1y","fields":{"VAR":{"id":"-Vn`7EAPf$S.6SXW(mDh","name":"hub","type":"PrimeHub"}}}},"VALUE0":{"shadow":{"type":"blockParametersButton","id":"79(b[*SlD1?n13o.!!mx","fields":{"VALUE":"RIGHT"}}}}}},"DO1":{"block":{"type":"blockObjectInstanceCallStatement","id":"J$W-SOm`4@O_Q:xC{_C~","extraState":{"optionLevel":2},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_run"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"lfg0l8@]wW-9`QA|:Xch","fields":{"VAR":{"id":"DEJ@^[~ft(^;(04)*-s(","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"|{_wF[_^2N+N!Lnjm=KJ","fields":{"NUM":1}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"jaHZ/Ab-U_+V$h!Y)J]W","fields":{"NUM":-50}}}}}},"ELSE":{"block":{"type":"blockObjectInstanceCallStatement","id":"z1+_MYQWk7{}a=rSv$46","extraState":{"optionLevel":2},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"motor_stop"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":")WTr~1DaqKYMZ[Kn%_W[","fields":{"VAR":{"id":"DEJ@^[~ft(^;(04)*-s(","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"3RrzQ=}GL8cd[Y/F![nF","fields":{"NUM":1}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"{Q3}%C_]M8/LD%Qw/Ia1","fields":{"NUM":2}}}}}}},"next":{"block":{"type":"blockWaitTime","id":"!7lW:B3(Si;*m1IPZ,Dh","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"u+|Ph8hOHP-;QohKZBiq","fields":{"VALUE0":50}}}}}}}}},"next":{"block":{"type":"blockObjectInstanceCallStatement","id":"W3Lg-V]Zqdx)IRfYO8_M","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"stop_all"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"6!nt6/tJ956-@0Lv5f@7","fields":{"VAR":{"id":"DEJ@^[~ft(^;(04)*-s(","name":"exp6","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"Tgs4x,!1KIr+#C2SU=u0","fields":{"NUM":1}}}}}}}}}}}}}]},"variables":[{"name":"red","id":";eW@SZOXk/s^P;a6}ljo","type":"ColorDef"},{"name":"orange","id":"%Er`Gx_+pK9mj1sVN`fB","type":"ColorDef"},{"name":"yellow","id":"fk?G}3a$)N~AkGQ.o(Yx","type":"ColorDef"},{"name":"green","id":"=Nb0F|.~ifT0HsR4i~B-","type":"ColorDef"},{"name":"cyan","id":"^O=tJ9Xs$gV7A6YqLf=z","type":"ColorDef"},{"name":"blue","id":"[g:nLUq9W=KUXLyM?s7w","type":"ColorDef"},{"name":"violet","id":"=Ng4r?NM;S3Ix=j;/Z_}","type":"ColorDef"},{"name":"magenta","id":"Nt1o:XPCD#L88Vv%xsA%","type":"ColorDef"},{"name":"white","id":"Lhv9DIQYb:2cGYNN=ap=","type":"ColorDef"},{"name":"none","id":"+TeF1R=2xikRyNQetkgS","type":"ColorDef"},{"name":"hub","id":"-Vn`7EAPf$S.6SXW(mDh","type":"PrimeHub"},{"name":"MBC_EXP6","id":"DR+x{?J4LyG~y~.Hc{%9","type":"FunctionImported"},{"name":"run_task","id":"$Q`K7EOjZV[OmBC?kDq^","type":"FunctionImported"},{"name":"exp6","id":"DEJ@^[~ft(^;(04)*-s(","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.parameters import Button
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 範例 4：按住左鍵正轉、右鍵反轉、放開停；左右鍵一起按結束。馬達接擴充孔 1
    while not await exp6.get_device_id(1) == 5:
        await wait(0)
    while not (Button.LEFT in hub.buttons.pressed() and Button.RIGHT in hub.buttons.pressed()):
        await wait(0)
        if Button.LEFT in hub.buttons.pressed():
            await exp6.motor_run(1, 50)
        elif Button.RIGHT in hub.buttons.pressed():
            await exp6.motor_run(1, -50)
        else:
            await exp6.motor_stop(1, 2)
        await wait(50)
    await exp6.stop_all(1)


run_task(main())