Nano auto bot code restarting?

Hi i am making a robot with a l293d motor driver, a servo, and a h-sr04 distance sensor. I have 2 motors. for some reasone the code keeps restarting after 15 secs, from the setup section. Why is this happening? I have nothing touching the rst pin.
Code:

//compliler
#include <Servo.h>

//Servo

Servo cam;
int pos;
#define servpin 9

//Buzzer
#define spk 3
#define c3  131
#define d3  147
#define e3  165
#define f3  175
#define g3  196
#define a3  220
#define b3  247
#define c4  262
int start[5] = {c3, d3, e3, f3, g3};

// h-sr04
#define  trigPin 7
#define echoPin 8
int lookdir;
float duration, distance;

//Drive train
#define MotorL1 5
#define MotorL2 6
#define MotorR1 10
#define MotorR2 11

//setup
void setup() {
  // put your setup code here, to run once:
  systemConfig();
  systemBoot();
  Serial.begin(9200);
  while(!Serial.available()){
    trigger();
    Serial.println(meadis());
    tone(spk, 220, 5000);
    noTone(spk);
    delay(1000);
    tone(spk, 440, 5000);
    noTone(spk);
    delay(1000);
  }
  delay(15000);
}

void loop() {
  trigger();
  if(meadis()<14){
    look(meadis());
  }
  else{
    driveF(255);
  }

}
void trigger(){
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
}
int meadis(){
  duration = pulseIn(echoPin, HIGH);
  distance = (duration / 2) * 0.0343;
  int convt = round(distance);
  return convt;
}
void look(int dis){
  int r = 10;
  pos = 10;
  while(dis<13){
    while(r < 171){
      pos++;
      cam.write(pos);
      r++;
    }
    while(r>11){
      pos--;
      cam.write(pos);
      r--;
    }
    
  }
  if(pos>90){
      turnRight(100, meadis());
    }
  else{
      turnLeft(100, meadis());
  }
  pos = 90;
}
void turnLeft(int pwm, int dis){
  while(dis<14){
    analogWrite(MotorL1, pwm);
    digitalWrite(MotorL2, LOW);
    analogWrite(MotorR2, pwm);
    digitalWrite(MotorR1, LOW);
  }
}
void turnRight(int pwm, int dis){
  while(dis<14){
    analogWrite(MotorL2, pwm);
    digitalWrite(MotorL1, LOW);
    analogWrite(MotorR1, pwm);
    digitalWrite(MotorR2, LOW);
  }
}
void driveF(int pwm){
  analogWrite(MotorR1, pwm);
  digitalWrite(MotorR2, LOW);
  analogWrite(MotorL1, pwm);
  digitalWrite(MotorL2, LOW);
}
void systemConfig(){
  Serial.begin(9200);
  cam.attach(servpin);
  cam.write(pos);
  pinMode(spk, OUTPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(MotorL1, OUTPUT);
  pinMode(MotorL2, OUTPUT);
  pinMode(MotorR1, OUTPUT);
  pinMode(MotorR2, OUTPUT);
}
void systemBoot(){
  pos = 170;
  cam.write(pos);
  delay(1000);
  pos = 10;
  cam.write(pos);
  delay(1000);  
  pos = 90;
  cam.write(pos);
  delay(1000);

}

strange baud rate, did you possibly mean 9600??

it's probably the while (!Serial.available()) loop that's in you setup..
Does it just constantly beep??
Is it suppose to sit and wait to receive a transmission??
I'm half thinking you meant while(!Serial) to make sure Serial was ready..

bots are fun.. ~q

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.