Hello.
I'm new in arduino world and i need some help.
So, when i have 2 loop on same time 1st one have delay, if i have only the 1st loop all things are fine.
there is my code, where i'm wrong?
#include <AFMotor.h>
#include <Servo.h>
//defining pins and variables
#define left A0
#define right A1
//defining motors
AF_DCMotor motor1(1, MOTOR12_1KHZ);
AF_DCMotor motor2(2, MOTOR12_1KHZ);
AF_DCMotor motor3(3, MOTOR34_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ);
Servo myservo;
int i = 0;
void setup() {
myservo.attach(10);
pinMode(left,INPUT);
pinMode(right,INPUT);
Serial.begin(9600);
}
void loop1(){
Serial.println(digitalRead(left));
Serial.println(digitalRead(right));
if(digitalRead(left)==0 && digitalRead(right)==0){
motor1.run(FORWARD);
motor1.setSpeed(100);
motor2.run(FORWARD);
motor2.setSpeed(100);
motor3.run(FORWARD);
motor3.setSpeed(100);
motor4.run(FORWARD);
motor4.setSpeed(100);
}
else if(digitalRead(left)==0 && digitalRead(right)==1){
//turn left
motor1.run(BACKWARD);
motor1.setSpeed(150);
motor2.run(FORWARD);
motor2.setSpeed(150);
motor3.run(FORWARD);
motor3.setSpeed(150);
motor4.run(BACKWARD);
motor4.setSpeed(150);
}
else if(digitalRead(left)==1 && digitalRead(right)==0){
//turn right
motor1.run(FORWARD);
motor1.setSpeed(150);
motor2.run(BACKWARD);
motor2.setSpeed(150);
motor3.run(BACKWARD);
motor3.setSpeed(150);
motor4.run(FORWARD);
motor4.setSpeed(150);
}
//line detected by none
else if(digitalRead(left)==1 && digitalRead(right)==1){
//stop
motor1.run(RELEASE);
motor1.setSpeed(0);
motor2.run(RELEASE);
motor2.setSpeed(0);
motor3.run(RELEASE);
motor3.setSpeed(0);
motor4.run(RELEASE);
motor4.setSpeed(0);
}
}
void loop2(){
for (i = 45; i <= 140; i= i+1) {
// in steps of 1 degree
myservo.write(i);
delay(15);
}
for (i = 140; i >= 45; i = i- 1) {
myservo.write(i);
delay(15);
}
}
void loop(){
loop1();
loop2();
}