Script: radio_tilt_grip_controlled_cyberbot
This is the script to run on the cyber:bot robot. It receives values from the micro:bit tilt controller that are used for its drive servos and Gripper servo.
- Right-click the cyber_bot_gripper_forward_object.hex link below, choose Save As, and then save the file to your computer.
radio_tilt_grip_controlled_cyberbot.hex
- Open the saved file with the micro:bit Python Editor editor.
- If you are working with more than one of these robots in a classroom, update channel=7 to your assigned channel.
The script was created by entering the text below into the python.microbit.org editor. The cyberbot.py module was also added to the Project Files as shown in Add modules to your micro:bit. The Script Name was set to cyber_bot_gripper_forward_object before saving it as a .hex file as shown in Save & Edit Scripts.
- Plug the battery pack’s barrel plug into the cyber:bot board’s barrel jack.
- Set the cyber:bot board’s PWR switch to 0.
- Click Send to micro:bit.
- Disconnect the USB from the cyber:bot robot’s micro:bit module.
- Set the cyber:bot on the floor, and then set the cyber:bot board's PWR switch to 2.
# radio_tilt_grip_controlled_cyberbot from cyberbot import * import radio radio.on() radio.config(channel=7, queue=1, length=64) while True: packet = radio.receive() if packet: try: dictionary = eval(packet) x = dictionary.get('x') y = dictionary.get('y') needle = dictionary.get('needle') fb = y / 10 lr = x / 10 button = dictionary['button'] # added except Exception as e: display.show(Image.SAD) print("Exception e:", e) print("Type:", type(e)) continue else: if abs(y) > 80: display.show(Image.ALL_CLOCKS[needle]) vL = fb vR = -fb if(fb < 0): lr = -lr vL = vL - lr/2 # Reduced lr term by 2 vR = vR - lr/2 # Reduced lr term by 2 else: display.show(Image.DIAMOND_SMALL) vL = None vR = None if button == 'B': # added bot(16).servo_angle(30) # added Gripper close & lift elif button == 'A': # added bot(16).servo_angle(150) # added Gripper lower & open finally: bot(18).servo_speed(vL) bot(19).servo_speed(vR)