error massage: expected primary-expression before '}' token

Hello there

I am making a sketch where i want to make the servo move randomly and als where i want to have te oppertunity to push a button so a LED goes on.
Somebody sayd i could made use of Millis, i tried to apply it to my sketch but i gives me this error massage: expected primary-expression before '}' token

If somebody knows how to help me it would be wonderfull! :slight_smile:

Thanks a lot.

int time;
unsigned long interval = 1000;
#include <Servo.h>
long randomNumber;
Servo myservo;
int pos = 0;


int buttonPin = 7;
int ledPin = 8;
boolean on = false;
int buttonstate = 0;

void setup() {
  myservo.attach(9);
  Serial.begin(9600);
  randomSeed(analogRead(0));

  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {
  static unsigned long previousMillis = millis();
  if (millis() - previousMillis >= interval) {

    buttonstate = digitalRead(buttonPin);

    if (buttonstate == HIGH) {
      if (on == true) {
        on = false;
      }  else {
        on = true;
      }
    }
  }
  if (on == true) {
    digitalWrite(ledPin, HIGH);
  }
  else {
    digitalWrite(ledPin, LOW);
  }

  previousMillis += interval;

  {
    static unsigned long previousMillis = millis();
    if (millis() - previousMillis >= interval)
    }
  {

    randomNumber = random(100000);

    Serial.print("random:");
    Serial.println(randomNumber);

    randomNumber = map(randomNumber, 0, 10000, 0, 180);

    Serial.print("servo:");
    Serial.println(randomNumber);
    myservo.write(randomNumber);
    /*
      if (millis() - previousMillis >= interval) {
      for (pos = 0; pos <= 180; pos += 1)
      myservo.write(pos);
      if (millis() - previousMillis >= interval) {
      previousMillis += interval;

      if (millis() - previousMillis >= interval) {
      for (pos = 180; pos >= 0; pos -= 1)
      myservo.write(pos);
      previousMillis += interval;
    */
    previousMillis += interval;
  }
}
}

Error Massage:

expected primary-expression before '}' token
    static unsigned long previousMillis = millis();
    if (millis() - previousMillis >= interval)
    }
  {
    randomNumber = random(100000);
    Serial.print("random:");
etc ...

What code do you want to execute if the interval has passed ?

Hello UKHeilBob,

I want to have the servo doing his random thing:

  {
    static unsigned long previousMillis = millis();
    if (millis() - previousMillis >= interval)
   
    randomNumber = random(100000);

    Serial.print("random:");
    Serial.println(randomNumber);

    randomNumber = map(randomNumber, 0, 10000, 0, 180);

    Serial.print("servo:");
    Serial.println(randomNumber);
    myservo.write(randomNumber);
    /*
      if (millis() - previousMillis >= interval) {
      for (pos = 0; pos <= 180; pos += 1)
      myservo.write(pos);
      if (millis() - previousMillis >= interval) {
      previousMillis += interval;

      if (millis() - previousMillis >= interval) {
      for (pos = 180; pos >= 0; pos -= 1)
      myservo.write(pos);
      previousMillis += interval;
    */
    previousMillis += interval;
  }
}

And the LED and Button doing there own thing, do i need to put the millis also on the LED and Button if i want to use the millis properly?

Thanks

You need to sort out your braces {}. They're in a mess e.g.

previousMillis += interval;

  {
    static unsigned long previousMillis = millis();
    if (millis() - previousMillis >= interval)
    }
  {

    randomNumber = random(100000);

was never going to work. Any time you have close } followed by open{ with nothing between them something his gone wrong.

Steve

I want to have the servo doing his random thing:

So put the code to be executed in braces

if (thisIsTrue)
{
  //execute the code between the braces
}