I’ve found that when I use “Advanced Bloxter” and create functions I hit an error when I try to execute the program. The error is:
local variable 'gpg' referenced before assignment
When I look at the Python code produced by Bloxter, the problem is quite clear. The
gpg = easy.EasyGoPiGo3() line is written after my function is declared.
Is this a known problem? Is there a work-around I can employ?
The full python code is shown below:
import easygopigo3 as easy import time direction = None x = None my_servo_portSERVO1 = gpg.init_servo('SERVO1') my_Distance_portI2C = gpg.init_distance_sensor('I2C') time.sleep(0.1) """Describe this function... """ def look_and_drive(direction): global x my_servo_portSERVO1.rotate_servo(direction) if my_Distance_portI2C.read() > 15: gpg.led_off(1) gpg.led_off(0) gpg.open_eyes() if my_Distance_portI2C.read() > 30: gpg.set_speed(400) else: gpg.set_speed(200) gpg.forward() else: gpg.close_eyes() gpg.set_speed(200) if direction == 90: gpg.led_on(1) gpg.led_on(0) gpg.turn_degrees(1*180, blocking=True) else: if direction == 45: gpg.led_on(0) gpg.turn_degrees(-1*45, blocking=True) else: gpg.led_on(1) gpg.turn_degrees(1*45, blocking=True) gpg.led_off(1) gpg.led_off(0) gpg = easy.EasyGoPiGo3() # start while True: direction = 45 look_and_drive(direction) direction = 90 look_and_drive(direction) direction = 135 look_and_drive(direction) time.sleep(0.05) # slowdown