diff --git a/omniwheels_x4_soccer_goal.blockly b/omniwheels_x4_soccer_goal.blockly index 48bd351401a0309102cb5c9342ec1d0ce1f4bf95..362b793d307f1d92a2aaeeb533e99ce9f18644fb 100644 --- a/omniwheels_x4_soccer_goal.blockly +++ b/omniwheels_x4_soccer_goal.blockly @@ -2,6 +2,7 @@ <variables> <variable id="DfDz@$]?^P=(6r:%^xC*">v</variable> <variable id="l9lR0!)Laya}3RYVW(ZQ">ticks</variable> + <variable id="ymkMx:g,wGvcvRtYUanL">shot</variable> <variable id="L([~[g+MhSG}}P1bZ{oS">factor_x</variable> <variable id="v3eHF0atAL+ouaa{W$=m">ts_ball</variable> <variable id=";Ki:[qYaZnowqSa`]/aW">ts_goal_left</variable> @@ -423,7 +424,14 @@ </value> <statement name="DO0"> <block type="procedures_callnoreturn" id="90_K~]2igif9F@eo$.5Z"> - <mutation name="stepBall"/> + <mutation name="stepBall"> + <arg name="shot"/> + </mutation> + <value name="ARG0"> + <block type="logic_boolean" id="_$3,;B)-(K-03ZzRYj!5"> + <field name="BOOL">TRUE</field> + </block> + </value> </block> </statement> <value name="IF1"> @@ -550,7 +558,7 @@ </value> <value name="ARG1"> <block type="math_number" id="gcH1Ps(J*{a)=3pi9diY"> - <field name="NUM">20</field> + <field name="NUM">10</field> </block> </value> </block> @@ -609,7 +617,7 @@ </value> <value name="ARG1"> <block type="math_number" id=")k]SdR3F1bII`Mo!4Q2T"> - <field name="NUM">20</field> + <field name="NUM">10</field> </block> </value> </block> @@ -626,7 +634,14 @@ </value> <next> <block type="procedures_callnoreturn" id=")f0^YOdfvadl{9t=j|w1"> - <mutation name="stepBall"/> + <mutation name="stepBall"> + <arg name="shot"/> + </mutation> + <value name="ARG0"> + <block type="logic_boolean" id="oi!78vnT!+MpPB1n]qMf"> + <field name="BOOL">FALSE</field> + </block> + </value> </block> </next> </block> @@ -1246,8 +1261,12 @@ </block> </statement> </block> - <block type="procedures_defnoreturn" id="BJV|hZc!#JXq:io7MmM`" x="0" y="4183"> + <block type="procedures_defnoreturn" id="BJV|hZc!#JXq:io7MmM`" x="0" y="4239"> + <mutation> + <arg name="shot" varid="ymkMx:g,wGvcvRtYUanL" argid=":62/?4I]sXmWy2!AnMxj"/> + </mutation> <field name="NAME">stepBall</field> + <field name=":62/?4I]sXmWy2!AnMxj">shot</field> <statement name="STACK"> <block type="variables_set" id=".tHpZ}-+@nb7zjqP7C^#"> <field name="VAR" id="vH;^OzJY7dOdepMScU1s">state</field> @@ -1404,7 +1423,7 @@ </value> <statement name="DO2"> <block type="controls_if" id="Bp.|BTULdy(,]aAoN,l["> - <mutation elseif="3" else="1"/> + <mutation elseif="4" else="1"/> <value name="IF0"> <block type="logic_compare" id="Y-Fctm`Flpx7MN)@x%-u"> <field name="OP">LTE</field> @@ -1492,6 +1511,29 @@ </block> </statement> <value name="IF2"> + <block type="variables_get" id="gKGYl8yua]Rj4F#na608"> + <field name="VAR" id="ymkMx:g,wGvcvRtYUanL">shot</field> + </block> + </value> + <statement name="DO2"> + <block type="procedures_callnoreturn" id="e#(2U7V=y-AnQZE@~9Ze"> + <mutation name="fwd"> + <arg name="v"/> + <arg name="ticks"/> + </mutation> + <value name="ARG0"> + <block type="variables_get" id="kAGg.QR}9+5$8#CK+(kM"> + <field name="VAR" id=")rK_fR,m=]b(j[{.CtBj">v_slow</field> + </block> + </value> + <value name="ARG1"> + <block type="math_number" id="x)bJS0]ZqGDYoez,1r^("> + <field name="NUM">5</field> + </block> + </value> + </block> + </statement> + <value name="IF3"> <block type="logic_operation" id=":2kiZ:)l/(drayLhwske" inline="false"> <field name="OP">AND</field> <value name="A"> @@ -1526,7 +1568,7 @@ </value> </block> </value> - <statement name="DO2"> + <statement name="DO3"> <block type="procedures_callnoreturn" id="5?xr%Un4{ZZP/*kbTrS4"> <mutation name="turnSideLeft"> <arg name="v"/> @@ -1544,7 +1586,7 @@ </value> </block> </statement> - <value name="IF3"> + <value name="IF4"> <block type="logic_compare" id="O3!qDGS(I#FcP9l5t9T!"> <field name="OP">LTE</field> <value name="A"> @@ -1559,7 +1601,7 @@ </value> </block> </value> - <statement name="DO3"> + <statement name="DO4"> <block type="procedures_callnoreturn" id="iE.eGjQ64)ne8c#zdVbM"> <mutation name="bwd"> <arg name="v"/> @@ -1584,7 +1626,7 @@ </block> </statement> </block> - <block type="procedures_defnoreturn" id="N2EC5uK:$~0ERXAdK0!y" x="0" y="5278"> + <block type="procedures_defnoreturn" id="N2EC5uK:$~0ERXAdK0!y" x="0" y="5478"> <field name="NAME">checkTimeoutsSetGoalBoth</field> <statement name="STACK"> <block type="controls_if" id="63FfwOqK(iF!2~DVc~`p"> @@ -1807,7 +1849,7 @@ </block> </statement> </block> - <block type="camera_on_ball_detected" id="dgC*A|KHMC_R5S#ZRk}d" x="0" y="5943"> + <block type="camera_on_ball_detected" id="dgC*A|KHMC_R5S#ZRk}d" x="0" y="6143"> <field name="instance_name">ball_detector</field> <statement name="statement"> <block type="variables_set" id="=2/,IQfcLO{_5PNd3UK~"> @@ -2008,7 +2050,7 @@ </block> </statement> </block> - <block type="camera_on_ball_detected" id="Rg2Gt(0WT:J2|Us~[j.3" x="0" y="6610"> + <block type="camera_on_ball_detected" id="Rg2Gt(0WT:J2|Us~[j.3" x="0" y="6810"> <field name="instance_name">ball_detector_goal_left</field> <statement name="statement"> <block type="variables_set" id="kvK,D4e%04[?+!jq*Lch"> @@ -2089,7 +2131,7 @@ </block> </statement> </block> - <block type="camera_on_ball_detected" id="(?slhGsN^:d1`vP{j9#|" x="0" y="6941"> + <block type="camera_on_ball_detected" id="(?slhGsN^:d1`vP{j9#|" x="0" y="7141"> <field name="instance_name">ball_detector_goal_right</field> <statement name="statement"> <block type="variables_set" id="0!1?#@4|tcM8+U6E[$Tl"> @@ -2170,7 +2212,7 @@ </block> </statement> </block> - <block type="counter_event" id="T^aHOKaV|bU#ZeZfn[GJ" x="0" y="7272"> + <block type="counter_event" id="T^aHOKaV|bU#ZeZfn[GJ" x="0" y="7472"> <value name="condition"> <shadow type="counter_if_value" id="9`P*eh,|:Wnytp?G[|;{"> <field name="instance_name">TXT_M_C1_motor_step_counter</field> @@ -2218,7 +2260,7 @@ </block> </statement> </block> - <block type="counter_event" id="7wA~J+BkZ5~nV6aI|fLZ" x="0" y="7419"> + <block type="counter_event" id="7wA~J+BkZ5~nV6aI|fLZ" x="0" y="7619"> <value name="condition"> <shadow type="counter_if_value" id="RDF|2PoXWvG^_k{FB37U"> <field name="instance_name">TXT_M_C2_motor_step_counter</field> @@ -2266,7 +2308,7 @@ </block> </statement> </block> - <block type="counter_event" id="Nv;e.HwUkTK/=(qEs~82" x="0" y="7566"> + <block type="counter_event" id="Nv;e.HwUkTK/=(qEs~82" x="0" y="7766"> <value name="condition"> <shadow type="counter_if_value" id="05ihu;VYh*tmqA78pJQL"> <field name="instance_name">TXT_M_C3_motor_step_counter</field> @@ -2314,7 +2356,7 @@ </block> </statement> </block> - <block type="counter_event" id="j|Pz^uHewb7]si9}3az3" x="0" y="7713"> + <block type="counter_event" id="j|Pz^uHewb7]si9}3az3" x="0" y="7913"> <value name="condition"> <shadow type="counter_if_value" id="N9]b*Kn_Nxk}[I9e!^Z."> <field name="instance_name">TXT_M_C4_motor_step_counter</field> @@ -2362,7 +2404,7 @@ </block> </statement> </block> - <block type="input_event" id="j(TuhJ0G}{^qGSq:26FY" x="0" y="7860"> + <block type="input_event" id="j(TuhJ0G}{^qGSq:26FY" x="0" y="8060"> <value name="condition"> <block type="input_photo_transistor_if_state" id="dX]-jf`=2/tNnEnHfKvx"> <field name="instance_name">TXT_M_I8_photo_transistor</field> @@ -2385,7 +2427,7 @@ </block> </statement> </block> - <block type="procedures_defnoreturn" id="RyK*td9aN5aR;@gw4f)+" x="0" y="7997"> + <block type="procedures_defnoreturn" id="RyK*td9aN5aR;@gw4f)+" x="0" y="8197"> <field name="NAME">shotBall</field> <statement name="STACK"> <block type="variables_set" id="l,2u2WF|]I#%kDS#5O7-"> @@ -2421,7 +2463,7 @@ </value> <value name="distance"> <shadow type="math_number" id="!vn0#[@_$kjeevcKcnqF"> - <field name="NUM">100</field> + <field name="NUM">50</field> </shadow> </value> <next> @@ -2465,7 +2507,7 @@ </value> <value name="distance"> <shadow type="math_number" id="vv:iZ6tXN]M@jx0UY]0T"> - <field name="NUM">40</field> + <field name="NUM">20</field> </shadow> </value> <next> @@ -2497,7 +2539,7 @@ </block> </statement> </block> - <block type="procedures_defnoreturn" id="na=DVwj{P1Npv6z`ZSY{" x="0" y="8554"> + <block type="procedures_defnoreturn" id="na=DVwj{P1Npv6z`ZSY{" x="0" y="8754"> <field name="NAME">soundGoal</field> <statement name="STACK"> <block type="variables_set" id="o^c1yss2pIv%8YmX`=6X"> @@ -2538,7 +2580,7 @@ </block> </statement> </block> - <block type="procedures_defnoreturn" id="UFM0X7|X:*ja#f+^7kz;" x="0" y="8748"> + <block type="procedures_defnoreturn" id="UFM0X7|X:*ja#f+^7kz;" x="0" y="8948"> <mutation> <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="-fFb#6a:h}yA(|L+pf*l"/> <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="h?@dWX*~x|BDzo:O{is["/> @@ -2635,7 +2677,7 @@ </block> </statement> </block> - <block type="procedures_defnoreturn" id="*i[s2YTWD*g9HS4dxkPq" x="0" y="9161"> + <block type="procedures_defnoreturn" id="*i[s2YTWD*g9HS4dxkPq" x="0" y="9361"> <mutation> <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="k6At@e}Qga_x|SmVlf6C"/> <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="~VyZflQ+9HCPP`ynQ/=Y"/> @@ -2732,7 +2774,7 @@ </block> </statement> </block> - <block type="procedures_defnoreturn" id="oSa9Ly*^-c^M{$gkMZt1" x="0" y="9574"> + <block type="procedures_defnoreturn" id="oSa9Ly*^-c^M{$gkMZt1" x="0" y="9774"> <mutation> <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="K)Z,8|d5@gck+Q]pnW01"/> <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="(Id`t]O(jxfZJay}20X{"/> @@ -2808,7 +2850,7 @@ </block> </statement> </block> - <block type="procedures_defnoreturn" id="G@]xamrhDPW$7uQ6oPo#" x="0" y="9959"> + <block type="procedures_defnoreturn" id="G@]xamrhDPW$7uQ6oPo#" x="0" y="10159"> <mutation> <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="_mFFsmoZwL{(llRvf-eW"/> <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="aNHXtqe[T`=Y[mqp`ZDN"/> @@ -2884,7 +2926,7 @@ </block> </statement> </block> - <block type="procedures_defnoreturn" id="5Hv=PFtVvPQA=IZrkJfU" x="0" y="10344"> + <block type="procedures_defnoreturn" id="5Hv=PFtVvPQA=IZrkJfU" x="0" y="10544"> <mutation> <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="~d8Z+AHZ!wz|G]JHW0lQ"/> <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="jRMx@L,Ya|zd@/bBb#1T"/> @@ -2975,7 +3017,7 @@ </block> </statement> </block> - <block type="procedures_defnoreturn" id="[S@[MO!Z/cNt:Jsg4dd}" x="0" y="10785"> + <block type="procedures_defnoreturn" id="[S@[MO!Z/cNt:Jsg4dd}" x="0" y="10985"> <mutation> <arg name="v" varid="DfDz@$]?^P=(6r:%^xC*" argid="8Z2n_ZVA.)85]V7j%3;7"/> <arg name="ticks" varid="l9lR0!)Laya}3RYVW(ZQ" argid="J(gJ~*9ZJJa,[V1)[xn#"/> diff --git a/omniwheels_x4_soccer_goal.py b/omniwheels_x4_soccer_goal.py index 2a153047a2d3b246f5983b7299532968036bd3c8..7058bb4dc7ac3f22656f7f77506a6081935bfb7a 100644 --- a/omniwheels_x4_soccer_goal.py +++ b/omniwheels_x4_soccer_goal.py @@ -9,6 +9,7 @@ from fischertechnik.controller.Motor import Motor v = None ticks = None +shot = None factor_x = None ts_ball = None ts_goal_left = None @@ -36,7 +37,7 @@ y_ball_touch = None y_ball_near = None search_dir_left = None def checkTimeoutsSetGoalBoth(): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left if posx_goal_left != None and posx_goal_right != None: goal_width = posx_goal_right - posx_goal_left posx_goal_both = posx_goal_left + goal_width / 2 @@ -52,7 +53,7 @@ def checkTimeoutsSetGoalBoth(): -def stepBall(): +def stepBall(shot): global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left state = 'stepBall' if posx_ball < x_min: @@ -64,6 +65,8 @@ def stepBall(): fwd(v_fast, 10) elif posy_ball > y_ball_far and posy_ball <= y_ball_near: fwd(v_slow, 5) + elif shot: + fwd(v_slow, 5) elif posy_ball > y_ball_near and posy_ball <= y_ball_touch: turnSideLeft(v_fast, 20) elif posy_ball <= y_ball_touch: @@ -73,7 +76,7 @@ def stepBall(): def ball_callback(event): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left ts_ball = (time.time() * 1000) posx_ball = event.value.x posy_ball = event.value.y @@ -86,7 +89,7 @@ ball_detector.add_detection_listener(ball_callback) def ball_callback2(event): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left ts_goal_left = (time.time() * 1000) posx_goal_left = event.value.x posy_goal_left = event.value.y @@ -97,7 +100,7 @@ ball_detector_goal_left.add_detection_listener(ball_callback2) def ball_callback23(event): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left ts_goal_right = (time.time() * 1000) posx_goal_right = event.value.x posy_goal_right = event.value.y @@ -108,7 +111,7 @@ ball_detector_goal_right.add_detection_listener(ball_callback23) def callback(event): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left if TXT_M_C1_motor_step_counter.get_count() >= 0: counters[0] = TXT_M_C1_motor_step_counter.get_count() display.set_attr("txt_label_counters.text", str(counters)) @@ -118,7 +121,7 @@ TXT_M_C1_motor_step_counter.add_change_listener("count", callback) def callback2(event): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left if TXT_M_C2_motor_step_counter.get_count() >= 0: counters[1] = TXT_M_C2_motor_step_counter.get_count() display.set_attr("txt_label_counters.text", str(counters)) @@ -128,7 +131,7 @@ TXT_M_C2_motor_step_counter.add_change_listener("count", callback2) def callback3(event): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left if TXT_M_C3_motor_step_counter.get_count() >= 0: counters[2] = TXT_M_C3_motor_step_counter.get_count() display.set_attr("txt_label_counters.text", str(counters)) @@ -138,7 +141,7 @@ TXT_M_C3_motor_step_counter.add_change_listener("count", callback3) def callback4(event): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left if TXT_M_C4_motor_step_counter.get_count() >= 0: counters[3] = TXT_M_C4_motor_step_counter.get_count() display.set_attr("txt_label_counters.text", str(counters)) @@ -148,7 +151,7 @@ TXT_M_C4_motor_step_counter.add_change_listener("count", callback4) def callback5(event): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left if TXT_M_I8_photo_transistor.is_dark(): shotBall() time.sleep(5) @@ -158,14 +161,14 @@ TXT_M_I8_photo_transistor.add_change_listener("dark", callback5) def shotBall(): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left cmd = 'shotBall' TXT_M_S1_servomotor.set_position(int(400)) TXT_M_M1_encodermotor.set_speed(int(512), Motor.CCW) TXT_M_M2_encodermotor.set_speed(int(512), Motor.CCW) TXT_M_M3_encodermotor.set_speed(int(512), Motor.CCW) TXT_M_M4_encodermotor.set_speed(int(512), Motor.CCW) - TXT_M_M1_encodermotor.set_distance(int(100), TXT_M_M2_encodermotor, TXT_M_M3_encodermotor, TXT_M_M4_encodermotor) + TXT_M_M1_encodermotor.set_distance(int(50), TXT_M_M2_encodermotor, TXT_M_M3_encodermotor, TXT_M_M4_encodermotor) time.sleep(0.05) TXT_M_S1_servomotor.set_position(int(256)) while True: @@ -176,7 +179,7 @@ def shotBall(): TXT_M_M2_encodermotor.set_speed(int(512), Motor.CW) TXT_M_M3_encodermotor.set_speed(int(512), Motor.CW) TXT_M_M4_encodermotor.set_speed(int(512), Motor.CW) - TXT_M_M1_encodermotor.set_distance(int(40), TXT_M_M2_encodermotor, TXT_M_M3_encodermotor, TXT_M_M4_encodermotor) + TXT_M_M1_encodermotor.set_distance(int(20), TXT_M_M2_encodermotor, TXT_M_M3_encodermotor, TXT_M_M4_encodermotor) while True: if (not TXT_M_M1_encodermotor.is_running()): break @@ -185,7 +188,7 @@ def shotBall(): def soundGoal(): - global v, ticks, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global v, ticks, shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left cmd = 'soundGOAL' TXT_M.get_loudspeaker().play("26_Augenzwinkern.wav", False) display.set_attr("txt_switch_active.checked", str(False).lower()) @@ -196,7 +199,7 @@ def soundGoal(): def turnSideLeft(v, ticks): - global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left cmd = 'turnSideLeft' if ticks >= 1: TXT_M_M1_encodermotor.set_speed(int(v_slow), Motor.CCW) @@ -212,7 +215,7 @@ def turnSideLeft(v, ticks): def turnSideRight(v, ticks): - global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left cmd = 'turnSideRight' if ticks >= 1: TXT_M_M1_encodermotor.set_speed(int(v_slow), Motor.CW) @@ -228,7 +231,7 @@ def turnSideRight(v, ticks): def fwd(v, ticks): - global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left cmd = 'fwd' if ticks >= 1: TXT_M_M1_encodermotor.set_speed(int(v), Motor.CCW) @@ -243,7 +246,7 @@ def fwd(v, ticks): def bwd(v, ticks): - global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left cmd = 'bwd' if ticks >= 1: TXT_M_M1_encodermotor.set_speed(int(v), Motor.CW) @@ -258,7 +261,7 @@ def bwd(v, ticks): def left(v, ticks): - global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left cmd = 'left ({}, {})'.format(v, ticks) if ticks >= 1: TXT_M_M1_encodermotor.set_speed(int(v), Motor.CCW) @@ -273,7 +276,7 @@ def left(v, ticks): def right(v, ticks): - global factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left + global shot, factor_x, ts_ball, ts_goal_left, ts_goal_right, cmd, state, factor_y, goal_width, posx_ball, posx_goal_left, posx_goal_right, counters, x_min, posx_goal_both, posy_ball, posy_goal_left, posy_goal_right, x_max, v_var_ball_xpos, v_slow, y_ball_far, v_var_ball_ypos, v_fast, y_ball_touch, y_ball_near, search_dir_left cmd = 'right ({}, {})'.format(v, ticks) if ticks >= 1: TXT_M_M1_encodermotor.set_speed(int(v), Motor.CW) @@ -323,20 +326,20 @@ while True: soundGoal() else: if posx_ball > posx_goal_left and posx_ball < posx_goal_right: - stepBall() + stepBall(True) elif posx_ball < posx_goal_both: turnSideLeft(v_slow, 20) elif posx_ball > posx_goal_both: turnSideRight(v_slow, 20) elif posx_goal_left != None and posx_goal_right == None: state = 'BALL_GOAL_LEFT' - turnSideLeft(v_slow, 20) + turnSideLeft(v_slow, 10) elif posx_goal_left == None and posx_goal_right != None: state = 'BALL_GOAL_RIGHT' - turnSideRight(v_slow, 20) + turnSideRight(v_slow, 10) else: state = 'BALL_NO_GOAL' - stepBall() + stepBall(False) else: if posx_goal_left != None and posx_goal_right != None: state = 'NO_BALL_GOAL_BOTH'