# pybricks blocks file:{"blocks":{"languageVersion":0,"blocks":[{"type":"blockGlobalSetup","id":"5bZS|_nt}$c/RwZW3f7(","x":400,"y":-200,"deletable":false,"next":{"block":{"type":"variables_set_prime_hub","id":"`siGdGSip(@B/2Yvtzt@","extraState":{"optionLevel":0},"fields":{"VAR":{"id":"+C-Q0e(;H^IpRK0s{suk"}},"next":{"block":{"type":"variables_set_color_sensor","id":"0hfod+nC01QF`@{u.-I)","extraState":{"optionLevel":0},"fields":{"VAR":{"id":"1gtl=w`S4:OahZl~[ol9"}},"inputs":{"PORT":{"shadow":{"type":"blockParametersPort","id":"Dsu(0;;K.Emn@+pZr%S8","fields":{"NAME":"C"}}}},"next":{"block":{"type":"variables_set_motor","id":"z@/;B%Ifd]gu]Fql`~/i","fields":{"VAR":{"id":"dKs}S4+1Plh9RY#x@EM~"}},"inputs":{"PORT":{"shadow":{"type":"blockParametersPort","id":"IK)ELDf9@77-UU@Fv2~=","fields":{"NAME":"E"}}},"POSITIVE_DIRECTION":{"shadow":{"type":"blockParametersDirection","id":".Qu19SbirbzhIfbgNk%~","fields":{"SELECTION":"Direction.COUNTERCLOCKWISE"}}}},"next":{"block":{"type":"variables_set_motor","id":"GYUgsLS;=##uY9_Kn|L[","fields":{"VAR":{"id":"W-?`t^xa6jxH9.zq/km9"}},"inputs":{"PORT":{"shadow":{"type":"blockParametersPort","id":"oE:pAewM/a`e7(u,524V","fields":{"NAME":"F"}}},"POSITIVE_DIRECTION":{"shadow":{"type":"blockParametersDirection","id":"[}ki+1EucGU]2dhc1_n4","fields":{"SELECTION":"Direction.CLOCKWISE"}}}},"next":{"block":{"type":"variables_setup_any","id":"mK~YzcCCz+VNB./r}E*!","fields":{"VAR":{"id":"Fj#Y#;gtElk1|Vj`nA3@"}},"inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"7gP6#XixFDvXlwRTaKQ7","fields":{"NUM":50}}}},"next":{"block":{"type":"variables_setup_any","id":"~y%N6c@m0@g?E6wq+{*A","fields":{"VAR":{"id":"ICOmI;G(Iz(*fHT{s_]k"}},"inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"jnHQ%t/!Qb!ePA)sdea@","fields":{"NUM":2.5}}}},"next":{"block":{"type":"variables_setup_any","id":"iPvZu,,]xh!h{i(Pk,y-","fields":{"VAR":{"id":"f@V86tQbfWLU2lUOqyW["}},"inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"%(0,nJr5t^Tr?uO(SCp~","fields":{"NUM":10}}}},"next":{"block":{"type":"variables_setup_any","id":"QyTemY^KDWd`;-?7rUx2","fields":{"VAR":{"id":"x`izkLM0:wLUE#K`LHpx"}},"inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"+QlW-L5b9eVGtm`zKD}6","fields":{"NUM":0}}}},"next":{"block":{"type":"variables_setup_any","id":"3{G!~borjfw8$XA_Hru!","fields":{"VAR":{"id":"FRe%O|Kq5qPtGwlgYef+"}},"inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"{aln})#qK5RvtUR/sRfx","fields":{"NUM":0}}}},"next":{"block":{"type":"variables_setup_any","id":"NN1mpxIq?SH-e+Y5X3$Q","fields":{"VAR":{"id":"VLFmFrmio^v]_r#,CY7M"}},"inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"Sf$w_Md^G}vM8}]EtUt@","fields":{"NUM":0}}}}}}}}}}}}}}}}}}}}}}}}},{"type":"blockGlobalStart","id":"c^x_~#^@Kn2h?qZzb)M,","x":400,"y":260,"deletable":false,"next":{"block":{"type":"blockFlowWhile","id":"um:Pba[?CW,B*d2zA*#|","fields":{"MODE":"WHILE"},"inputs":{"BOOL":{"shadow":{"type":"blockLogicTrue","id":"WQ/Vsc25T768tW{S18{2"}},"DO":{"block":{"type":"blockIfElse","id":"m`s15?]T=DqtC89q.(_l","extraState":{"optionLevel":1},"inputs":{"IF0":{"shadow":{"type":"blockLogicTrue","id":",w[U[kq`Q_y:qMo]3S;4"},"block":{"type":"blockLogicCompare","id":"u._CGFjZa~EX]F)+DN)E","fields":{"OP1":"GT"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"5Fr7$0fU%*qDxvvi|jJ1","fields":{"NUM":1}},"block":{"type":"blockFunctionCallerValue","id":"+j-/SI]B!f{88%mGuyVC","extraState":{"optionLevel":0},"fields":{"ICON":"SUITCASE","VAR":{"id":"mx/*-.-3RK-Pi)1LAzX,"}}}},"B":{"shadow":{"type":"blockMathNumber","id":"4l0`UE=e.8vLnAQ?pW-G","fields":{"NUM":10}}}}}},"DO0":{"block":{"type":"blockMotorDuty","id":"/PQ{_g8Wsn=A7mR#0[dV","inputs":{"VAR":{"shadow":{"type":"variables_get_simple_motor_device","id":"/G@C1Yf*;m~rZ?02eyR*","fields":{"VAR":{"id":"dKs}S4+1Plh9RY#x@EM~","name":"motorL","type":"Motor"}}}},"VALUE0":{"shadow":{"type":"unit_percent","id":"j[7fsj):Mh{)orVIKgBo","fields":{"VALUE0":0}}}},"next":{"block":{"type":"blockMotorDuty","id":"}%y%g$ao5sCK}6o`*~W.","inputs":{"VAR":{"shadow":{"type":"variables_get_simple_motor_device","id":"[ak@#SeIX59bY_Uszni^","fields":{"VAR":{"id":"W-?`t^xa6jxH9.zq/km9","name":"motorR","type":"Motor"}}}},"VALUE0":{"shadow":{"type":"unit_percent","id":"`ntjAmkJ:73#f-kap8uQ","fields":{"VALUE0":0}}}}}}}},"ELSE":{"block":{"type":"blockVariableSetValue","id":"t9Zm:+|zxUD,%dq2T^Wz","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"FtJ_gCdBjY3d;+=^W/UF","fields":{"VAR":{"id":"x`izkLM0:wLUE#K`LHpx","name":"error","type":"Any"}}}},"VALUE0":{"shadow":{"type":"blockMathNumber","id":"W(Pz;ZB#V}NXw/IVa!;v","fields":{"NUM":1}},"block":{"type":"blockFunctionCallerValue","id":"jx0)F?`I:0Tb.Ad7+U._","extraState":{"optionLevel":0},"fields":{"ICON":"SUITCASE","VAR":{"id":"n-]$AfTwaUkwmDT2S7Kl"}}}}},"next":{"block":{"type":"blockVariableSetValue","id":"xP6P-iLHAkn+it7*TdQC","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"@1:v:,LH{tyB10=3ON/K","fields":{"VAR":{"id":"VLFmFrmio^v]_r#,CY7M","name":"PD","type":"Any"}}}},"VALUE0":{"shadow":{"type":"blockMathNumber","id":"tn@*L5?:}mg3qwR,4]C6","fields":{"NUM":1}},"block":{"type":"blockMathArithmetic","id":"sMw3h?z(kX#!m?nFerF#","fields":{"OP":"ADD"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"Z_z5Bq7-l%s(6jpUEEMJ","fields":{"NUM":1}},"block":{"type":"blockMathArithmetic","id":"!7I,^]udxG5pX$u)2Kz-","fields":{"OP":"MULTIPLY"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"KC0S%6;H{zFu4DFvF@1a","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"~r*.@?e^Z(UXY|H1R5s0","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"ueHIcMu-6CFay,-#5cX@","fields":{"VAR":{"id":"x`izkLM0:wLUE#K`LHpx","name":"error","type":"Any"}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":";-Ww;FEZXH?D6=OQndPl","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"]@{wT-%oQs6t0tX39i(E","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"vSn$IBsuJHJx4e%HlUjV","fields":{"VAR":{"id":"ICOmI;G(Iz(*fHT{s_]k","name":"KP","type":"Any"}}}}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"|sDR[qr1WYT|i14=c7m|","fields":{"NUM":1}},"block":{"type":"blockMathArithmetic","id":".3FAuZ}[EV%OicK5bYC{","fields":{"OP":"MULTIPLY"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"]AD-AwUj$;$(,v:_!nv+","fields":{"NUM":1}},"block":{"type":"blockMathArithmetic","id":"_sURi.Uh5GO:yOQq@eQk","fields":{"OP":"MINUS"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"3,t,5m{|vQ}/q,!2j5(A","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":":%+*{CfwO}kgB:7sw~TT","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"yGxrop],;!DNn|B%wwpM","fields":{"VAR":{"id":"x`izkLM0:wLUE#K`LHpx","name":"error","type":"Any"}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"{Eqk.ZU60dFO4YV!:3$M","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"9[2GO7e~k;og:[+{lkqc","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"ufzrqTIcrp(x-+RInx41","fields":{"VAR":{"id":"FRe%O|Kq5qPtGwlgYef+","name":"lastError","type":"Any"}}}}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"_)!H5@n,eN}a$-6WE]SK","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"jB7*Qp}nH3Pf-%hpwG+a","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"9dB9Mg[L9H:gb(N!A0Sb","fields":{"VAR":{"id":"f@V86tQbfWLU2lUOqyW[","name":"KD","type":"Any"}}}}}}}}}}}}}},"next":{"block":{"type":"blockMotorDuty","id":"Do,8o++`(RiGm$MNef,r","inputs":{"VAR":{"shadow":{"type":"variables_get_simple_motor_device","id":"Zop2jV?M^*xG*R%V(Rcp","fields":{"VAR":{"id":"dKs}S4+1Plh9RY#x@EM~","name":"motorL","type":"Motor"}}}},"VALUE0":{"shadow":{"type":"unit_percent","id":")uNdJ$U[TD]jFHttUwQ7","fields":{"VALUE0":50}},"block":{"type":"blockMathArithmetic","id":"#*-EX_9ZjU@0tZh|`T?f","fields":{"OP":"ADD"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"JnvCC..zrkR%O%/D2]N1","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"rtZjrpqLs=6jyW!Pf;E{","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"pysGa[knC9CE]RexMDk[","fields":{"VAR":{"id":"Fj#Y#;gtElk1|Vj`nA3@","name":"SPEED","type":"Any"}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"XRjw+0GuQ@ik~X6)kypA","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"#pE2}[C_3h[Y~c%yi*LT","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"3[2M{$LnSL$.hpW%XTC5","fields":{"VAR":{"id":"VLFmFrmio^v]_r#,CY7M","name":"PD","type":"Any"}}}}}}}}}}},"next":{"block":{"type":"blockMotorDuty","id":"CezH/T|O?f7Kk(7n%8j$","inputs":{"VAR":{"shadow":{"type":"variables_get_simple_motor_device","id":"-$)tA:C8^xb6{0m9yX+{","fields":{"VAR":{"id":"W-?`t^xa6jxH9.zq/km9","name":"motorR","type":"Motor"}}}},"VALUE0":{"shadow":{"type":"unit_percent","id":"KPIe*9^5o_GmStawlQql","fields":{"VALUE0":50}},"block":{"type":"blockMathArithmetic","id":"J6!^sKsRqJSs@j!42YoJ","fields":{"OP":"MINUS"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"JOP_T6a^7w~#Dxm70?Ft","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"jfwcDc=fJ)g8SU[NW)%A","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"LOMYPBT:/z/f}Xho/$(r","fields":{"VAR":{"id":"Fj#Y#;gtElk1|Vj`nA3@","name":"SPEED","type":"Any"}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"VzQ;)_R]_0i.egXu$Ll7","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"1{$gDW4_Nzf)p!lNJku}","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"u#2F.KNsyvHc)mDzjoJ/","fields":{"VAR":{"id":"VLFmFrmio^v]_r#,CY7M","name":"PD","type":"Any"}}}}}}}}}}},"next":{"block":{"type":"blockVariableSetValue","id":"AN$WYXLFUsSsGL6u|,at","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"eSuv[t]DPlfcWOG-]|Wr","fields":{"VAR":{"id":"FRe%O|Kq5qPtGwlgYef+","name":"lastError","type":"Any"}}}},"VALUE0":{"shadow":{"type":"blockMathNumber","id":"KKx4F74Ow@$gsLzu?=e_","fields":{"NUM":1}},"block":{"type":"blockVariableGetValue","id":"0V[5OR5Ms^cKM:=={Ic]","inputs":{"VAR":{"shadow":{"type":"variables_get_any","id":"Rsl/:S8cDjNI%AuExWll","fields":{"VAR":{"id":"x`izkLM0:wLUE#K`LHpx","name":"error","type":"Any"}}}}}}}}}}}}}}}}}}},"next":{"block":{"type":"blockWaitTime","id":"pU1DP:}M._o.uM/@;J3E","inputs":{"VALUE0":{"shadow":{"type":"unit_time","id":"URS#ka)lPS`GE[`3]XyY","fields":{"VALUE0":10}}}}}}}}}}}},{"type":"variables_setup_function","id":"~z2.XBA0/m|1KLI=Sce)","x":40,"y":-200,"extraState":{"optionLevel":0},"fields":{"ICON":"SUITCASE","VAR":{"id":"n-]$AfTwaUkwmDT2S7Kl"}},"inputs":{"STACK":{"block":{"type":"blockIfElse","id":"ohz.K5ZyY2lEri;n8ApJ","extraState":{"optionLevel":1},"inputs":{"IF0":{"shadow":{"type":"blockLogicTrue","id":"+]#sPVn7ZA(Z.jo?sm8."},"block":{"type":"blockLogicCompare","id":"@zakRHGLo0eeviNJ}v{[","fields":{"OP1":"GTE"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"_yOQM#k]m8[=*9i(]c1}","fields":{"NUM":3}},"block":{"type":"blockLightReflection","id":"(N`X=BUE;2{o9B8jxW!H","inputs":{"VAR":{"shadow":{"type":"variables_get_light_intensity_device","id":"Yte+Ml5v:BabiZ+w9^,5","fields":{"VAR":{"id":"1gtl=w`S4:OahZl~[ol9","name":"Line16","type":"ColorSensor"}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"^5`XWXM#uvpFhC?]yv+[","fields":{"NUM":0}}}}}},"DO0":{"block":{"type":"blockTaskReturn","id":"O!Ks{5F,`msEfw`qA(O@","inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"dgy#2A(^x#)!v-#Jocnb","fields":{"NUM":0}},"block":{"type":"blockMathArithmetic","id":"q()`Xh+)%J7B?a)ucDx8","fields":{"OP":"MINUS"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"$FrY5_SV+$+qFkU!*S(6","fields":{"NUM":1}},"block":{"type":"blockMathArithmetic","id":"S*d-,u1vAF`,T*Zpk7}q","fields":{"OP":"MATH_DIVIDE_INT"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":":Asq%h;N^J-$C,}rI[T!","fields":{"NUM":1}},"block":{"type":"blockMathOp","id":"bK6oH{JB[iZ~%da`uE+D","extraState":{"optionLevel":0},"fields":{"OP":"ROUNDDOWN"},"inputs":{"NUM":{"shadow":{"type":"blockMathNumber","id":"H=d:eGITP+Q[UUft!qc1","fields":{"NUM":0}},"block":{"type":"blockLightReflection","id":"J4DLOcWH2vW_!FDJ*6:T","inputs":{"VAR":{"shadow":{"type":"variables_get_light_intensity_device","id":"aoAwBLA8^[b`]2G*eI@B","fields":{"VAR":{"id":"1gtl=w`S4:OahZl~[ol9","name":"Line16","type":"ColorSensor"}}}}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"1nQ*{n9nIldBBqb?6^!$","fields":{"NUM":100}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"!xC3oS/6O(sac:kDG094","fields":{"NUM":16}}}}}}}}},"ELSE":{"block":{"type":"blockTaskReturn","id":"@8z=,f,?)LPj@D=aF}Q;","inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"dgy#2A(^x#)!v-#Jocnb","fields":{"NUM":0}},"block":{"type":"blockMathArithmetic","id":"dBNq*{M%o-(5Tz6SJwrW","fields":{"OP":"MINUS"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"$FrY5_SV+$+qFkU!*S(6","fields":{"NUM":1}},"block":{"type":"blockMathArithmetic","id":"Z@]`;0qN##,G1YAamKkv","fields":{"OP":"MATH_DIVIDE_INT"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"Nk14sOlS0XC/9kZ,1`w#","fields":{"NUM":1}},"block":{"type":"blockMathArithmetic","id":"~T.)HRxDbHNO+]mF?Zhp","fields":{"OP":"ADD"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"T/(JeYEDZB_?m2DHmVZS","fields":{"NUM":1}},"block":{"type":"blockMathOp","id":"e(s:ireC[-E@vT|-(SSS","extraState":{"optionLevel":0},"fields":{"OP":"ROUNDUP"},"inputs":{"NUM":{"shadow":{"type":"blockMathNumber","id":"BkAWm]n@m):Ex55rZ;mU","fields":{"NUM":0}},"block":{"type":"blockLightReflection","id":".c4*JuY]A8TTzCm4}XYN","inputs":{"VAR":{"shadow":{"type":"variables_get_light_intensity_device","id":",KcuA,;VONCx;wAio?4r","fields":{"VAR":{"id":"1gtl=w`S4:OahZl~[ol9","name":"Line16","type":"ColorSensor"}}}}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":".^?|1[hH+YO4#w!%rm-Z","fields":{"NUM":6399}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"$7q$b_zN=Z(vQ@zx17:M","fields":{"NUM":100}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"Yh{~Cp+a)HfMf+*E`BZf","fields":{"NUM":16}}}}}}}}}}}}}},{"type":"variables_setup_function","id":"X4RECK-GHO4?MQHA|`YO","x":40,"y":30,"extraState":{"optionLevel":0},"fields":{"ICON":"SUITCASE","VAR":{"id":"mx/*-.-3RK-Pi)1LAzX,"}},"inputs":{"STACK":{"block":{"type":"blockIfElse","id":"=:sJD;1M/6.V6s{ByOhz","extraState":{"optionLevel":1},"inputs":{"IF0":{"shadow":{"type":"blockLogicTrue","id":"+]#sPVn7ZA(Z.jo?sm8."},"block":{"type":"blockLogicCompare","id":"j*g_XWkX7Fkr(3X.rp)^","fields":{"OP1":"GTE"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"_yOQM#k]m8[=*9i(]c1}","fields":{"NUM":3}},"block":{"type":"blockLightReflection","id":"Ge]C{0~/;XL#8|k$C;7z","inputs":{"VAR":{"shadow":{"type":"variables_get_light_intensity_device","id":"blBL2(:V//,|U~rG),;j","fields":{"VAR":{"id":"1gtl=w`S4:OahZl~[ol9","name":"Line16","type":"ColorSensor"}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"^SLu0s-5JkW*j]D}bDUy","fields":{"NUM":0}}}}}},"DO0":{"block":{"type":"blockTaskReturn","id":"!tB3!:+O``8oF+JfEBo^","inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"dgy#2A(^x#)!v-#Jocnb","fields":{"NUM":0}},"block":{"type":"blockMathOp","id":"]M^aW)-2]1kr!{-:-eON","extraState":{"optionLevel":1},"fields":{"OP":"MODULO"},"inputs":{"NUM":{"shadow":{"type":"blockMathNumber","id":"b%~iYkL8..*{%%vx1JcS","fields":{"NUM":0}},"block":{"type":"blockMathOp","id":"Hv{W7VxV|a{+4ob@x=Cg","extraState":{"optionLevel":0},"fields":{"OP":"ROUNDDOWN"},"inputs":{"NUM":{"shadow":{"type":"blockMathNumber","id":"[Z##ZhbqrgrR,2@L`kD3","fields":{"NUM":0}},"block":{"type":"blockLightReflection","id":"j=}m+Jx@dQp%FvVfCZ@`","inputs":{"VAR":{"shadow":{"type":"variables_get_light_intensity_device","id":"WZ%iEMoCZd7?0D@pi!Dc","fields":{"VAR":{"id":"1gtl=w`S4:OahZl~[ol9","name":"Line16","type":"ColorSensor"}}}}}}}}}},"NUM2":{"shadow":{"type":"blockMathNumber","id":"|;3~}6%VO58Sy_T{yKt=","fields":{"NUM":100}}}}}}}}},"ELSE":{"block":{"type":"blockTaskReturn","id":"{Q?qAS3OYsl_r:#djOvH","inputs":{"VALUE0":{"shadow":{"type":"blockMathNumber","id":"dgy#2A(^x#)!v-#Jocnb","fields":{"NUM":0}},"block":{"type":"blockMathOp","id":"`=}C;Rw#v~c@A-@(Z[1C","extraState":{"optionLevel":1},"fields":{"OP":"MODULO"},"inputs":{"NUM":{"shadow":{"type":"blockMathNumber","id":"b%~iYkL8..*{%%vx1JcS","fields":{"NUM":0}},"block":{"type":"blockMathArithmetic","id":"_lps%!BqoM]spH(76)Uu","fields":{"OP":"ADD"},"inputs":{"A":{"shadow":{"type":"blockMathNumber","id":"T/(JeYEDZB_?m2DHmVZS","fields":{"NUM":1}},"block":{"type":"blockMathOp","id":"mnu_`qW`kv_%Lw}Ltzgr","extraState":{"optionLevel":0},"fields":{"OP":"ROUNDUP"},"inputs":{"NUM":{"shadow":{"type":"blockMathNumber","id":"]IjuZfC?z7bsgkN/vI3f","fields":{"NUM":0}},"block":{"type":"blockLightReflection","id":"hi:vTG];%XV+}v8FZI/z","inputs":{"VAR":{"shadow":{"type":"variables_get_light_intensity_device","id":"jP`-IDY`!cKrhjUqzJQJ","fields":{"VAR":{"id":"1gtl=w`S4:OahZl~[ol9","name":"Line16","type":"ColorSensor"}}}}}}}}}},"B":{"shadow":{"type":"blockMathNumber","id":"YQc#:wM;$9VK?:.1p$XD","fields":{"NUM":6399}}}}}},"NUM2":{"shadow":{"type":"blockMathNumber","id":"yg8T}4U]sSQPmaIBg@2]","fields":{"NUM":100}}}}}}}}}}}}}}]},"variables":[{"name":"red","id":"m;P|xbP~Owy]3YESw6#P","type":"ColorDef"},{"name":"orange","id":"[j@=rq!IEasH0?lU7,e5","type":"ColorDef"},{"name":"yellow","id":"b4f9U`p*sT%y*~_]?+[r","type":"ColorDef"},{"name":"green","id":"s/!L{}z^IN[y4G!H9)Qz","type":"ColorDef"},{"name":"cyan","id":"5Aq2T5#/tgGYW%.gZR@)","type":"ColorDef"},{"name":"blue","id":"hOl;G*0YIc=O^({,{W4#","type":"ColorDef"},{"name":"violet","id":"`+z@2NxMW_%~G0J`o[+8","type":"ColorDef"},{"name":"magenta","id":"A{bYb=,*wMLoP(D{SHU|","type":"ColorDef"},{"name":"white","id":"~;yfi~/`5$+yYey:TssW","type":"ColorDef"},{"name":"none","id":"n[kr@A~O|Lvu1Z(Ys5p/","type":"ColorDef"},{"name":"prime hub","id":"+C-Q0e(;H^IpRK0s{suk","type":"PrimeHub"},{"name":"motorL","id":"dKs}S4+1Plh9RY#x@EM~","type":"Motor"},{"name":"motorR","id":"W-?`t^xa6jxH9.zq/km9","type":"Motor"},{"name":"SPEED","id":"Fj#Y#;gtElk1|Vj`nA3@","type":"Any"},{"name":"KP","id":"ICOmI;G(Iz(*fHT{s_]k","type":"Any"},{"name":"KD","id":"f@V86tQbfWLU2lUOqyW[","type":"Any"},{"name":"error","id":"x`izkLM0:wLUE#K`LHpx","type":"Any"},{"name":"lastError","id":"FRe%O|Kq5qPtGwlgYef+","type":"Any"},{"name":"PD","id":"VLFmFrmio^v]_r#,CY7M","type":"Any"},{"name":"Line16","id":"1gtl=w`S4:OahZl~[ol9","type":"ColorSensor"},{"name":"getLinePos16","id":"n-]$AfTwaUkwmDT2S7Kl","type":"Function"},{"name":"getLineWidth16","id":"mx/*-.-3RK-Pi)1LAzX,","type":"Function"}],"info":{"type":"pybricks","version":"2.1.1"},"workspaceOptions":{"scrollX":0,"scrollY":0,"scale":0.7}}
from pybricks.hubs import PrimeHub
from pybricks.parameters import Direction, Port
from pybricks.pupdevices import ColorSensor, Motor
from pybricks.tools import wait
from umath import ceil, floor

# Set up.
prime_hub = PrimeHub()
Line16 = ColorSensor(Port.C)
motorL = Motor(Port.E, Direction.COUNTERCLOCKWISE)
motorR = Motor(Port.F, Direction.CLOCKWISE)
SPEED = 50
KP = 2.5
KD = 10
error = 0
lastError = 0
PD = 0

def getLinePos16():
    if Line16.reflection() >= 0:
        return floor(Line16.reflection()) // 100 - 16
    else:
        return (ceil(Line16.reflection()) + 6399) // 100 - 16

def getLineWidth16():
    if Line16.reflection() >= 0:
        return floor(Line16.reflection()) % 100
    else:
        return (ceil(Line16.reflection()) + 6399) % 100


# The main program starts here.
while True:
    if getLineWidth16() > 10:
        motorL.dc(0)
        motorR.dc(0)
    else:
        error = getLinePos16()
        PD = error * KP + (error - lastError) * KD
        motorL.dc(SPEED + PD)
        motorR.dc(SPEED - PD)
        lastError = error
    wait(10)
