Skip to content

Examples

vihaanvp edited this page Jun 25, 2026 · 4 revisions

Examples


Example 1 — Single DC Motor

import time
from megawrapper import Board

board = Board("/dev/ttyUSB0")

motor = board.attach_motor(
    2,   # Direction pin 1
    4,   # Direction pin 2
    11,  # PWM pin
)

motor.forward(100)          # full speed forward
time.sleep(2)
motor.backward(50)          # half speed backward
time.sleep(2)
motor.stop()                # coast to stop

board.close()

Example 2 — Dual DC Motors (Tank Drive)

import time
from megawrapper import Board

board = Board("/dev/ttyUSB0")

left  = board.attach_motor(2, 4, 11, name="left")
right = board.attach_motor(5, 3, 10, name="right")

# Go straight
left.forward(100)
right.forward(100)
time.sleep(2)

# Turn right
left.forward(100)
right.forward(50)
time.sleep(2)

# Stop
board.stop_all()
board.close()

Example 3 — TB6612FNG Standby Pin

import time
from megawrapper import Board

board = Board("/dev/ttyUSB0", stby=6)

motor = board.attach_motor(2, 4, 11)

motor.forward(100)
time.sleep(2)

board.sleep()           # driver disabled
time.sleep(1)

board.wake()            # driver re-enabled
motor.backward(100)
time.sleep(2)

board.close()

Example 4 — Context Manager

from megawrapper import Board

with Board("/dev/ttyUSB0") as board:
    motor = board.attach_motor(2, 4, 11)
    motor.forward(100)
    input("Press Enter to stop...")
# board.close() called automatically

Example 5 — Single Servo

from megawrapper import Board, Servo, delay

Board("/dev/ttyUSB0")

servo = Servo()
servo.attach(9)

servo.write(90)            # centre
delay(1000)

servo.write(0)             # minimum
delay(1000)

servo.write(180)           # maximum

Example 6 — Smooth Servo Movement

from megawrapper import Board, Servo

Board("/dev/ttyUSB0")
servo = Servo()
servo.attach(9)

servo.move_smooth(180)     # smooth 1°/step, 15 ms between steps

Example 7 — Continuous Servo Sweep

from megawrapper import Board, Servo, delay

Board("/dev/ttyUSB0")
servo = Servo()
servo.attach(6)

while True:
    # Slow sweep up
    for angle in range(0, 181):
        servo.write(angle)
        delay(15)

    # Fast return
    for angle in range(180, -1, -5):
        servo.write(angle)
        delay(5)

Example 8 — Servo + Motor on One Board

import time
from megawrapper import Board, Servo, delay

board = Board("/dev/ttyUSB0")

# Motor
motor = board.attach_motor(2, 4, 11)
motor.forward(100)

# Servo (uses the same board automatically)
servo = Servo()
servo.attach(9)
servo.write(90)

time.sleep(2)

board.close()   # stops motor, cleans up everything

Example 9 — Keyboard Interactive Motor Control

from megawrapper import Board

board = Board("/dev/ttyUSB0")
motor = board.attach_motor(2, 4, 11)

while True:
    cmd = input("f=forward b=backward s=stop q=quit > ").lower()
    if cmd == "f":
        motor.forward(100)
    elif cmd == "b":
        motor.backward(100)
    elif cmd == "s":
        motor.stop()
    elif cmd == "q":
        break

board.close()

Example 10 — Error Handling

from megawrapper import (
    Board, MegaWrapperError,
    BoardConnectionError,
    InvalidSpeedError,
)

try:
    board = Board("COM99")    # wrong port
except BoardConnectionError as e:
    print(f"Connection failed: {e}")
    exit(1)

motor = board.attach_motor(2, 4, 11)

try:
    motor.forward(-5)         # invalid speed
except InvalidSpeedError as e:
    print(f"Speed error: {e}")
    motor.stop()

board.close()

Clone this wiki locally