# pybricks blocks file:{"blocks":{"languageVersion":0,"blocks":[{"type":"blockGlobalSetup","id":"bjK,wS1MYO7aiYkFSwd{","x":615,"y":-132,"deletable":false,"next":{"block":{"type":"variables_setup_imported_function","id":"Mm|-z2KB8$X1uDy.BOq5","fields":{"FROM_MODULE":"MBC_line8_obj_Lib","VAR":{"id":"i4(GleWDRVhn)F#^I:re"}},"next":{"block":{"type":"variables_setup_object_instance","id":"EAt,^8a9-NO[7`UL_LAw","extraState":{"optionLevel":2},"fields":{"VAR":{"id":"4PBe5V]{}ga!Lu5Yp6xb"},"CLASS_NAME":"MBC_LINE8"},"inputs":{"ARG0":{"shadow":{"type":"blockMathNumber","id":"fgOuD*V*n38~xX#I?F[I","fields":{"NUM":3}}},"ARG1":{"shadow":{"type":"blockMathNumber","id":"mN[(7bap?(/ZHRdIT$#Q","fields":{"NUM":0}},"block":{"type":"blockLogicTrueFalse","id":"eQLubCadL?aP,l}[@,G:","fields":{"BOOL":"TRUE"}}}},"next":{"block":{"type":"variables_set_prime_hub","id":"UAvXx-XsiDl:((iQHiRr","extraState":{"optionLevel":0},"fields":{"VAR":{"id":"LJr+Yjj8]kWSKh_}IE!}"}},"next":{"block":{"type":"variables_set_motor","id":"mEt/K#@-ESznFQWVEwS#","fields":{"VAR":{"id":"!_%XO!G$qCK@5OrgYufu"}},"inputs":{"PORT":{"shadow":{"type":"blockParametersPort","id":"v!t*.H~)uTb8p@z23!BM","fields":{"NAME":"E"}}},"POSITIVE_DIRECTION":{"shadow":{"type":"blockParametersDirection","id":"!T~yCN8!eq=]*:9#N0`d","fields":{"SELECTION":"Direction.COUNTERCLOCKWISE"}}}},"next":{"block":{"type":"variables_set_motor","id":"+ACI%-g.h^Rw4b?83:,V","fields":{"VAR":{"id":"];nxhj8P=OW1npolvN`q"}},"inputs":{"PORT":{"shadow":{"type":"blockParametersPort","id":"%D~BLG]3}])ff~ae()jv","fields":{"NAME":"F"}}},"POSITIVE_DIRECTION":{"shadow":{"type":"blockParametersDirection","id":"|S{,X|ct-Xup_acc_X]{","fields":{"SELECTION":"Direction.CLOCKWISE"}}}},"next":{"block":{"type":"variables_setup_any","id":"KdY9H@FM^TePD!@[F+Zk","fields":{"VAR":{"id":"n$vP48UgC6mt4_[umx1D"}},"inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"cVzT:{@^BMxML@eB3b]r","fields":{"NUM":0}}}},"next":{"block":{"type":"variables_setup_any","id":"4FCJcIJ{3zM8?[(w`2HU","fields":{"VAR":{"id":"6s^+?@J+{Vw=8NVdB^1@"}},"inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"l7@V:P?89AeWIwX_(h|J","fields":{"NUM":0}}}}}}}}}}}}}}}}}}},{"type":"blockGlobalStart","id":"3tJe|AWl0baN(wH9a$@.","x":1191,"y":-126,"deletable":false,"next":{"block":{"type":"blockComment","id":"O%gkd-0}g;LC2TFj:NSc","fields":{"FIELDNAME":"Connect Line8 sensor to port C (3) and enable multitasking (true)."},"next":{"block":{"type":"blockMultiTask","id":"Pt`ncAB6E^4wz*|coCjn","extraState":{"optionLevel":0},"fields":{"METHOD":"MULTITASK_ALL"},"inputs":{"TASK0":{"block":{"type":"blockFlowWhile","id":"EuhdwO7gOMMKrqhTXLi=","fields":{"MODE":"WHILE"},"inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"LCbYd~1r=9,Q+v+{cY7R"}},"DO":{"block":{"type":"blockPrint","id":"j,,T}?rBkaW$1v?olp4p","extraState":{"optionLevel":2},"fields":{"SEP":"SEP_SPACE"},"inputs":{"TEXT0":{"shadow":{"type":"text","id":"!x5.0YiWya^`(y)yO5B8","fields":{"TEXT":"Hello, Pybricks!"}},"block":{"type":"blockObjectInstanceCallValue","id":"%m:b4((ExI]qMxx^#7N6","extraState":{"optionLevel":0},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"pos8"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"-0b`i2a*K`]-wbnBT9q%","fields":{"VAR":{"id":"4PBe5V]{}ga!Lu5Yp6xb","name":"line8","type":"ObjectInstance"}}}}}}},"TEXT1":{"shadow":{"type":"text","id":"$I_p]o.ngfXRquF-.XA9","fields":{"TEXT":"abc"}},"block":{"type":"blockObjectInstanceCallValue","id":"]R[)4c?LL|PFrz|qJ2Bc","extraState":{"optionLevel":0},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"pos100"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"3W,]P=kV)@=NB]q][S_U","fields":{"VAR":{"id":"4PBe5V]{}ga!Lu5Yp6xb","name":"line8","type":"ObjectInstance"}}}}}}},"TEXT2":{"shadow":{"type":"text","id":"K;kdXj~whWtVQJ3jiqV8","fields":{"TEXT":"abc"}},"block":{"type":"blockObjectInstanceCallValue","id":"5y3xWw3._CO@2W*N`4fF","extraState":{"optionLevel":1},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"ir_ch"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"x_b7/QbYRdZw%bsx-LDc","fields":{"VAR":{"id":"4PBe5V]{}ga!Lu5Yp6xb","name":"line8","type":"ObjectInstance"}}}},"ARG0":{"shadow":{"type":"blockMathNumber","id":"RkB!#b+m$uXCiVAEPTT7","fields":{"NUM":1}}}}}}},"next":{"block":{"type":"blockWaitTime","id":"ro9(|`i-5*`3MCxE1-o@","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"Gb%?*K5fjk+)h-oByvWV","fields":{"VALUE0":10}}}}}}}}}}},"TASK1":{"block":{"type":"blockFlowWhile","id":"DSe?2VN;q,{.IiwVU6IZ","fields":{"MODE":"WHILE"},"inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"mC,BdN]bB_Xd,s5fkBzP"}},"DO":{"block":{"type":"blockIfElse","id":"g8%-:/T8g0z2ThmygDW4","extraState":{"optionLevel":1},"inputs":{"IF0":{"shadow":{"type":"blockLogicTrue","id":"L2bV(s~(NEa5khzn*=q/"},"block":{"type":"blockLogicCompare","id":"rwvo(UeKi4Lp[k%0c1MT","fields":{"OP1":"GT"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":";opIs]6Lqd-xc[]G`u,x","fields":{"NUM":3}},"block":{"type":"blockObjectInstanceCallValue","id":"u1r(g=@|t2O4l^Hb3R4m","extraState":{"optionLevel":0},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"width"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"aSm]O$EESmxI#57TbxQ(","fields":{"VAR":{"id":"4PBe5V]{}ga!Lu5Yp6xb","name":"line8","type":"ObjectInstance"}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"$ktzD~o-`f8_,7]q7WsW","fields":{"NUM":6}}}}}},"DO0":{"block":{"type":"blockMotorDuty","id":"`EV*shr@9e[]^N81g/4V","inputs":{"VAR":{"shadow":{"type":"variables_get_simple_motor_device","id":"x89LyALycF]5WV5Up5yu","fields":{"VAR":{"id":"!_%XO!G$qCK@5OrgYufu","name":"motorL","type":"Motor"}}}},"VALUE0":{"shadow":{"type":"unit_percent","id":"|RFi$O(tRVGVc=d5Qg-j","fields":{"VALUE0":0}}}},"next":{"block":{"type":"blockMotorDuty","id":"Ez-f0/WX{n3!$AlW[?;E","inputs":{"VAR":{"shadow":{"type":"variables_get_simple_motor_device","id":"-Fe1=iy/Y(+!#-Q-o#CX","fields":{"VAR":{"id":"];nxhj8P=OW1npolvN`q","name":"motorR","type":"Motor"}}}},"VALUE0":{"shadow":{"type":"unit_percent","id":"e|b%4Ng$iG.VA.wa$3;0","fields":{"VALUE0":0}}}}}}}},"ELSE":{"block":{"type":"blockVariableSetValue","id":"x(riMGIJy.u$0+0zdY:M","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"cye.{};zPhr!T5S:5E(M","fields":{"VAR":{"id":"n$vP48UgC6mt4_[umx1D","name":"PD","type":"Any"}}}},"VALUE0":{"shadow":{"type":"blockMathNumber","id":"+fTvp3|hB.k]U:JG!h,j","fields":{"NUM":0}},"block":{"type":"blockMathArithmetic","id":"7KKXMiDW-As:vWvTMsJm","fields":{"OP":"ADD"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":",L%*Q5rSm30RChJb#kTG","fields":{"NUM":1}},"block":{"type":"blockMathArithmetic","id":"(^M?Nj-MAd#N-V/~)g@a","fields":{"OP":"MULTIPLY"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"y.jf3:?|fv5n3?;%R_gJ","fields":{"NUM":1}},"block":{"type":"blockObjectInstanceCallValue","id":"R-zb;q.]Gxm@dQd]~%hK","extraState":{"optionLevel":0},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"pos100"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"YaLNc_#aR$nc,sdcNh{g","fields":{"VAR":{"id":"4PBe5V]{}ga!Lu5Yp6xb","name":"line8","type":"ObjectInstance"}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"KBy~{pCJQqhQouMu{no;","fields":{"NUM":1.2}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"dl7Bd_or)]oj@AxiV%o4","fields":{"NUM":1}},"block":{"type":"blockMathArithmetic","id":"BomC,594A@nBRe1^0BT$","fields":{"OP":"MULTIPLY"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"QrO[}+C8+7lE6U?Y_kO_","fields":{"NUM":1}},"block":{"type":"blockMathArithmetic","id":"`5l2afgIS}uz}#hrFu5|","fields":{"OP":"MINUS"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"p7EYnycuL%N9lxs0M;l2","fields":{"NUM":1}},"block":{"type":"blockObjectInstanceCallValue","id":"p~F{Sp`P?^k2y3RiS[9E","extraState":{"optionLevel":0},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"pos100"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"n!9[Y#).(QA`A=f!x!vh","fields":{"VAR":{"id":"4PBe5V]{}ga!Lu5Yp6xb","name":"line8","type":"ObjectInstance"}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"~$X4+X,DKE-)l=L|i|+S","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"_E5P[5q~2zGyAt|Tm:X=","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"fqd@hd-OH1LY6u!ZmCX|","fields":{"VAR":{"id":"6s^+?@J+{Vw=8NVdB^1@","name":"posLast","type":"Any"}}}}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"9|yWj7bs@AX{oaWx7rKZ","fields":{"NUM":3.6}}}}}}}}}},"next":{"block":{"type":"blockMotorDuty","id":"aJM{~dIz!(aG#?Ga!-=I","inputs":{"VAR":{"shadow":{"type":"variables_get_simple_motor_device","id":"v$TcJ-=3Y0F[7gsh0?0`","fields":{"VAR":{"id":"!_%XO!G$qCK@5OrgYufu","name":"motorL","type":"Motor"}}}},"VALUE0":{"shadow":{"type":"unit_percent","id":"SaNZEY*7mS3z4F;aUvn8","fields":{"VALUE0":50}},"block":{"type":"blockMathArithmetic","id":"G4:z8hm;8~kU/Zejfmr+","fields":{"OP":"ADD"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"m+Z9b$h!;5Q6|xzvKUOw","fields":{"NUM":75}}},"B":{"shadow":{"type":"blockMathNumber","id":"vXQLkYrAw47y$cZd]bwl","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":";%1fK)@`Ju`Egs4[@(8C","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"{p_agwy(uC-F~}M;:D2H","fields":{"VAR":{"id":"n$vP48UgC6mt4_[umx1D","name":"PD","type":"Any"}}}}}}}}}}},"next":{"block":{"type":"blockMotorDuty","id":"[hQrDnI5.+lZ2*%DQ6lB","inputs":{"VAR":{"shadow":{"type":"variables_get_simple_motor_device","id":"#edoxI3/5gN99MryTJ3#","fields":{"VAR":{"id":"];nxhj8P=OW1npolvN`q","name":"motorR","type":"Motor"}}}},"VALUE0":{"shadow":{"type":"unit_percent","id":"~ho9S]trcRfJ.|j|U0Bz","fields":{"VALUE0":50}},"block":{"type":"blockMathArithmetic","id":"TVo;@F0G!YmJ1iOvIMdR","fields":{"OP":"MINUS"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"Tyov=swBQT!;gq!HW{G!","fields":{"NUM":75}}},"B":{"shadow":{"type":"blockMathNumber","id":"Np%@Xp6h,|j)PbHn1J)f","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"4B_G8+7IHHE]9!75aSSs","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"LhrGxufzy1.IqTJIzy_]","fields":{"VAR":{"id":"n$vP48UgC6mt4_[umx1D","name":"PD","type":"Any"}}}}}}}}}}},"next":{"block":{"type":"blockVariableSetValue","id":"=y^Y#iUVV%8QQfK)#u|N","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"C:LMI9hJ-^[*kE8gnFGT","fields":{"VAR":{"id":"6s^+?@J+{Vw=8NVdB^1@","name":"posLast","type":"Any"}}}},"VALUE0":{"shadow":{"type":"blockMathNumber","id":"3*ZeO,@}CM0N$z7G3{.f","fields":{"NUM":0}},"block":{"type":"blockObjectInstanceCallValue","id":".;:{eA$]]}7eRum9^tZ8","extraState":{"optionLevel":0},"fields":{"CALL_TYPE":"CLASS_CALL_METHOD_ASYNC","METHOD":"pos100"},"inputs":{"VAR":{"shadow":{"type":"variables_get_object_instance","id":"ohD}c;e|a)@SPY,M{IiF","fields":{"VAR":{"id":"4PBe5V]{}ga!Lu5Yp6xb","name":"line8","type":"ObjectInstance"}}}}}}}},"next":{"block":{"type":"blockWaitTime","id":"fA3$Av_xQTW}jfbn6^9.","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":",`Cf5z}07I:CYZBz0%nT","fields":{"VALUE0":10}}}}}}}}}}}}}}}}}}}}}}}}}}]},"variables":[{"name":"red","id":"@1ZpoG9u]RXv=ZZ(j3E`","type":"ColorDef"},{"name":"orange","id":"xW3@2wx{?!Pum4uQfnc#","type":"ColorDef"},{"name":"yellow","id":"l+Mw7VnY8TJ@~:}`r[GR","type":"ColorDef"},{"name":"green","id":"+zMu[u39-oCfP#](Afa*","type":"ColorDef"},{"name":"cyan","id":"T[_:Ob-`j|hrp1I}P{G@","type":"ColorDef"},{"name":"blue","id":"HNc@pQ,;8lxoM+HBm6xU","type":"ColorDef"},{"name":"violet","id":"6ZA/3GT8xqY-pOvf-T-6","type":"ColorDef"},{"name":"magenta","id":"v[7nB26b=]6H?|KgP`rx","type":"ColorDef"},{"name":"white","id":"X0Ki[qknv#YsyGN?9|@d","type":"ColorDef"},{"name":"none","id":"2IYe@-8V.u][pLd1dW,n","type":"ColorDef"},{"name":"prime hub","id":"LJr+Yjj8]kWSKh_}IE!}","type":"PrimeHub"},{"name":"MBC_LINE8","id":"i4(GleWDRVhn)F#^I:re","type":"FunctionImported"},{"name":"line8","id":"4PBe5V]{}ga!Lu5Yp6xb","type":"ObjectInstance"},{"name":"motorL","id":"!_%XO!G$qCK@5OrgYufu","type":"Motor"},{"name":"motorR","id":"];nxhj8P=OW1npolvN`q","type":"Motor"},{"name":"posLast","id":"6s^+?@J+{Vw=8NVdB^1@","type":"Any"},{"name":"PD","id":"n$vP48UgC6mt4_[umx1D","type":"Any"}],"info":{"type":"pybricks","version":"2.0.0"},"workspaceOptions":{"scrollX":-485.85142054551034,"scrollY":182.83741156245253,"scale":0.9493745839581038}}
from pybricks.hubs import PrimeHub
from pybricks.parameters import Direction, Port
from pybricks.pupdevices import Motor
from pybricks.tools import multitask, run_task, wait

from MBC_line8_obj_Lib import MBC_LINE8

# Set up.
line8 = MBC_LINE8(3, True)
prime_hub = PrimeHub()
motorL = Motor(Port.E, Direction.COUNTERCLOCKWISE)
motorR = Motor(Port.F, Direction.CLOCKWISE)
PD = 0
posLast = 0

async def subtask():
    while True:
        await wait(0)
        print(await line8.pos8(), await line8.pos100(), await line8.ir_ch(1))
        await wait(10)

async def subtask2():
    global PD, posLast
    while True:
        await wait(0)
        if await line8.width() > 6:
            motorL.dc(0)
            motorR.dc(0)
        else:
            PD = await line8.pos100() * 1.2 + (await line8.pos100() - posLast) * 3.6
            motorL.dc(75 + PD)
            motorR.dc(75 - PD)
            posLast = await line8.pos100()
            await wait(10)

async def main():
    global PD, posLast
    # Connect Line8 sensor to port C (3) and enable multitasking (true).
    await multitask(
        subtask(),
        subtask2(),
    )


run_task(main())