@@ -0,0 +1,1665 @@
+package com.thegongoliers.output.motors;%0A%0Aimport com.thegongoliers.input.time.Clock;%0Aimport com.thegongoliers.input.time.RobotClock;%0A%0Apublic class PulseMotorModule implements MotorModule %7B%0A%0A    private final double mOnDuration;%0A    private final double mOffDuration;%0A    private final Clock mClock;%0A%0A    private double mLastStateChangeTime;%0A%0A    private final int STATE_PULSE_ON = 1;%0A    private final int STATE_PULSE_OFF = 2;%0A%0A    private int mState = STATE_PULSE_ON;%0A%0A    public PulseMotorModule(double onDuration, double offDuration, Clock clock)%7B%0A        mOnDuration = onDuration;%0A        mOffDuration = offDuration;%0A        mClock = clock;%0A    %7D%0A%0A    public PulseMotorModule(double onDuration, double offDuration)%7B%0A        this(onDuration, offDuration, new RobotClock());%0A    %7D%0A%0A    @Override%0A    public double run(double currentSpeed, double desiredSpeed, double deltaTime) %7B%0A        if (desiredSpeed == 0.0)%7B%0A            changeState(STATE_PULSE_ON);%0A            return 0;%0A        %7D%0A%0A        switch (mState)%7B%0A            case STATE_PULSE_ON:%0A                if (mClock.getTime() - mLastStateChangeTime %3E= mOnDuration)%7B%0A                    changeState(STATE_PULSE_OFF);%0A                    return 0;%0A                %7D%0A                return desiredSpeed;%0A            case STATE_PULSE_OFF:%0A                if (mClock.getTime() - mLastStateChangeTime %3E= mOffDuration)%7B%0A                    changeState(STATE_PULSE_ON);%0A                    return desiredSpeed;%0A                %7D%0A                return 0;%0A        %7D%0A%0A        return 0;%0A    %7D%0A%0A    private void changeState(int state)%7B%0A        mState = state;%0A        mLastStateChangeTime = mClock.getTime();%0A    %7D%0A%0A%7D%0A

Add pulse module