diff --git a/Code/OpenMV Code/square_tracking.py b/Code/OpenMV Code/square_tracking.py
new file mode 100644
index 0000000000000000000000000000000000000000..942c66bbb6c56b44819c0ca33580e94631f83918
--- /dev/null
+++ b/Code/OpenMV Code/square_tracking.py	
@@ -0,0 +1,45 @@
+# Find Rects Example
+#
+# This example shows off how to find rectangles in the image using the quad threshold
+# detection code from our April Tags code. The quad threshold detection algorithm
+# detects rectangles in an extremely robust way and is much better than Hough
+# Transform based methods. For example, it can still detect rectangles even when lens
+# distortion causes those rectangles to look bent. Rounded rectangles are no problem!
+# (But, given this the code will also detect small radius circles too)...
+
+import sensor, image, time, pyb
+ir_led = pyb.LED(4)
+red_led = pyb.LED(1)
+b_led = pyb.LED(2)
+g_led = pyb.LED(3)
+ir_led.off()
+ir_led.on()
+red_led.off()
+#red_led.on()
+
+sensor.reset()
+sensor.set_pixformat(sensor.RGB565) # grayscale is faster (160x120 max on OpenMV-M7)
+sensor.set_framesize(sensor.QVGA)
+sensor.skip_frames(time = 2000)
+sensor.set_auto_gain(False)  # must turn this off to prevent image washout...
+sensor.set_auto_whitebal(False)  # must turn this off to prevent image washout...
+sensor.set_auto_exposure(False, 25000)
+clock = time.clock()
+
+while(True):
+    ir_led.on()
+    #red_led.on()
+    #b_led.on()
+    #g_led.on()
+    img = sensor.snapshot()
+
+    # `threshold` below should be set to a high enough value to filter out noise
+    # rectangles detected in the image which have low edge magnitudes. Rectangles
+    # have larger edge magnitudes the larger and more contrasty they are...
+
+    for r in img.find_rects(threshold = 5000):
+        #img.draw_rectangle(r.rect(), color = (255, 0, 0))
+        #for p in r.corners(): img.draw_circle(p[0], p[1], 5, color = (0, 255, 0))
+        print(r)
+
+    print("FPS %f" % clock.fps())