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);
}