From 1997732ddff54e82e26a4e6e59f6d3858ead6797 Mon Sep 17 00:00:00 2001
From: ft-Demo <fischertechnik-team@fischer.de>
Date: Mon, 25 Oct 2021 15:10:31 +0000
Subject: [PATCH] commit by robo pro coding

---
 omniwheels_x4_soccer_goal.blockly | 98 ++++++++++++++++++++++---------
 omniwheels_x4_soccer_goal.py      | 51 ++++++++--------
 2 files changed, 97 insertions(+), 52 deletions(-)

diff --git a/omniwheels_x4_soccer_goal.blockly b/omniwheels_x4_soccer_goal.blockly
index 48bd351..362b793 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 2a15304..7058bb4 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'
-- 
GitLab