The meter won't respond to 50 microsecond pulses. It will average the voltage, getting 50% of the actual peak voltage. Try changing the delays to 1us and 99us. You should see 1% of the voltage. Then try 99 and 1.
Most drivers are built to work on both 3.3V and 5V systems. Look at the definition for the "digital input high voltage" or whatever. It will usually show 2.1V as a minimum. That means anything over 2.1V will be read as a valid HIGH. The Arduino should be able to do this with no level shifter.