The screwdriver can work with two different screw types. To change the screwdriver head, pull the metal part from the handle and insert it back into the handle the opposite way around.
The motors might be wired the wrong way around. This will be clear when controlling it with the remote control as it will turn the opposite way to the button that is pressed, i.e. pressing the left button will make the robot turn right. To fix this, disconnect and reconnect the motor wiring in the correct arrangement.
In mBlock, make sure you have selected the following menu option: Edit > Arduino mode.
If it still doesn’t work after these steps:
Make sure they are all connected together in mBlock. Sometimes code blocks can be near each other but not actually connected.
Make sure they are fully connected to the correct ports.
Make sure the distance that you have chosen in the ultrasonic sensor block isn’t too small.
This will ensure you give the robot time to stop. The distance you need to set will be affected by the speed. If the robot is driving fast, you may need to make the distance larger.
Turning is affected by the speed of the mBot, how much time it is turning for, and the characteristics of the surface the mBot is on.
If the mBot needs to turn more (a sharper turn), try increasing the amount of time it is turning for first and then consider increasing the speed. Especially on rougher surfaces, like carpet, you may need the mBot to turn for a longer time or more quickly than you need on a smoother surface, like tile.
Black lines might be too close together or too narrow. Bad lighting can also confuse the sensor.
Try adding code blocks to reverse the mBot first.
If you do not turn them off the mBot lights will stay on as long as the robot has power. You should include a block like the following to turn off and reset the lights when mBot is driving forward. See the code example