I have an Arduino UNO with 3 switches attached (2 limit switches, 1 activation switch). I'm trying to make the activation switch turn the motor forwards once hit, then wait for any of the limit switches to be hit and stop the motor. The next step is to wait for the activation switch to be hit again and turn the motor in the opposite direction and wait for the limit switch to be hit and stop the motor.
But the issue I'm facing right now is when i press the activation switch the arduino board and H bridge board restart. The LED's turn on and off and the code restarts. And nothing happens. I know all the switches and motor is working because i have tested them by simplifying the code with just the functions.
(edit) Here is a picture of the schematic: 
Can someone please review my code below to see if my logic is correct.
const byte frontButtonPin = 2;
const byte backButtonPin = 4;
const byte onOffButtonPin = 11;
const int motorPin = 8;
const int motorPin2 = 7;
boolean frontButtonState = 0;
boolean backButtonState = 0;
boolean onOffButtonState = 0;
/**
setup inputs for switches and outs for motor pins
serial begin to read the switches to test for errors
*/
void setup() {
// initialize the pin as an inputs:
pinMode(motorPin, OUTPUT);
pinMode(motorPin2, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(frontButtonPin, INPUT);
pinMode(backButtonPin, INPUT);
pinMode(onOffButtonPin, INPUT);
Serial.begin(9600);
}
/**
this function turns motor foward
*/
void drawMovesForward() {
// turn motor foward:
digitalWrite(motorPin, LOW);
digitalWrite(motorPin2, HIGH);
}
/**
this function turns motor backwards
*/
void drawMovesBackward() {
// turn motor in other direction:
digitalWrite(motorPin, HIGH);
digitalWrite(motorPin2, LOW);
}
/**
Stop the motor form moving
*/
void stopDrawFromMoving() {
digitalWrite(motorPin, LOW);
digitalWrite(motorPin2, LOW);
}
/**
*/
void loop() {
frontButtonState = digitalRead(frontButtonPin);
backButtonState = digitalRead(backButtonPin);
onOffButtonState = digitalRead(onOffButtonPin);
if (onOffButtonState == HIGH) {
if ( frontButtonState == LOW ) {
drawMovesForward();
}
else if (backButtonState == LOW ) {
drawMovesBackward();
}
}
else {
if ( frontButtonState == HIGH ) {
stopDrawFromMoving();
}
else if (backButtonState == HIGH ) {
stopDrawFromMoving();
}
}
}