vinti6674:
Yes Mr. Krupski. The product made it to the customer, but sadly this problem has got to be fixed.
Unfortunately, the only proper way to fix the problem is to re-arrange the LCD and MOSFET wiring so that you are not using the SPI pins.
Also, of course you need to use a PWM output for the MOSFET (motor controller).
As far as battery life goes, the LCD backlight takes quite a bit of current. You may want to add a bit of hardware and code to turn the backlight on and off - it doesn't need to glow continuously. In fact, aside from when the motor runs, the backlight draws the MOST current of the whole project.
The Arduino board itself only uses something like 30 milliamps and probably 10 to 20 mA for the LCD... the backlight probably draws 1/4 amp (250 mA) or more.
Here's another idea to stop that momentary motor jump: Maybe drive the MOSFET through a small resistor (like around 220 ohm) then connect the GATE side to another Arduino port. The very first thing in the code would be to enable the extra port as an OUTPUT, then do a "digitalWrite(port, LOW)" to "short" the MOSFET gate to ground (which is safe because of the 220 ohm resistor protecting the PWM pin).
Then call the SPI init code, do a small delay to let the "glitch" go by, then set the extra port pin to "pinMode(pin, INPUT)" so that it's basically open circuited.
See what I mean? Use another port to SHORT OUT (disable) the MOSFET gate just long enough for the SPI glitch to go by, then set the port as an input to make it electrically "go away".
The best way to fix the problem is to change the wiring, but what I mentioned above will most likely work.
If there's anything I can help you with, let me know.
-- Roger