Jump to content

So I got this code from a buddy of mine. And I had to make the part of the servos and the part of the led blinking go parallel.

#include <Servo.h>
Servo motor1;
Servo motor2;

void setup() {
    motor1.attach(6);
    motor2.attach(5);
    pinMode(13,OUTPUT);

}

void loop() {
    motor1.write(86);
    motor2.write(99);
    delay(1200);
    motor1.write(90);
    motor2.write(92);
    delay(1000);
    motor1.write(95);
    motor2.write(86);
    delay(1310);
    motor1.write(90);
    motor2.write(92);
    delay(4000);

if (analogRead(A0) > 300) {
  	digitalWrite(13, HIGH);
  	delay(400);
  	digitalWrite(13, LOW);
  	delay(100);
  	digitalWrite(13, HIGH);
  	delay(300);
  	digitalWrite(13, LOW);
	delay(200);

	} else {
  		digitalWrite(13, LOW);
	}

}

In which I succeeded, see code below. 

#include <Servo.h>
Servo motor1; 
Servo motor2;
unsigned long previousMillis1 = 0;			
unsigned long currentMillis1 = millis();	
unsigned long previousMillis2 = 0;			
unsigned long currentMillis2 = millis();	
void setup() {
	motor1.attach(6);		
	motor2.attach(5);		
	pinMode(13,OUTPUT);		
}

void loop() {
	if (currentMillis1 - previousMillis1 >= 0){			
		previousMillis1 = currentMillis1;				
		motor1.write(86);
		motor2.write(99);
		//delay(1200);
		if (currentMillis1 - previousMillis1 >= 1200){		
			previousMillis1 = currentMillis1;
			motor1.write(90);
			motor2.write(92);
			//delay(1000);
			if (currentMillis1 - previousMillis1 >= 1000){
				previousMillis1 = currentMillis1;
				motor1.write(95);
				motor2.write(86);
				//delay(1310);
				if (currentMillis1 - previousMillis1 >= 1310){
					previousMillis1 = currentMillis1;
					motor1.write(90);
					motor2.write(92);
					//delay(4000);
					if (currentMillis1 - previousMillis1 >= 4000){
						previousMillis1 = currentMillis1;
					}
				}
			}
		}
	}

	//als de afstandssensor hoger meet dan 300
	if (analogRead(A0) > 300) {
		// gaat het lampje knipperen
		if (currentMillis2 - previousMillis2 >= 0){
			previousMillis2 = currentMillis2;
			digitalWrite(13, HIGH);
			//delay(400);
			if (currentMillis2 - previousMillis2 >= 400){
				previousMillis2 = currentMillis2;
				digitalWrite(13, LOW);
				//delay(100);
				if (currentMillis2 - previousMillis2 >= 100){
					previousMillis2 = currentMillis2;
					digitalWrite(13, HIGH);
					//delay(300);
					if (currentMillis2 - previousMillis2 >= 300){
						previousMillis2 = currentMillis2;
						digitalWrite(13, LOW);
						//delay(200);
						if (currentMillis2 - previousMillis2 >= 200){
							previousMillis2 = currentMillis2;
						}
					}
				}
			}
		}
	} else {
		digitalWrite(13, LOW);
	}
}

But the problem is as following:

The servos aren't rotating back and forth like they used to do. But now they're rotating at a continuous speed.

 

I hope that you guys can see the problem because I cant.

 

Thanks in advance,

 

Anton

Link to comment
https://linustechtips.com/topic/973415-servo-keeps-rotating-after-rewriting-code/
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×