Thread

problem of code… I want to write to serial port every elapsed 10 seconds and every elapsed 20 seconds and every elapsed 30 seconds. My code is writing only one time 10 , 20, 30 elapsed seconds. Which code I must add ?? these 3 thread must be work standalone, there must be a way for this ? :frowning:

const int ledPin = 13; // the number of the LED pin

// Variables will change:

int ledState = LOW; // ledState used to set the LED

long previousMillis = 0; // will store last time LED was updated

// the follow variables is a long because the time, measured in miliseconds,

// will quickly become a bigger number than can be stored in an int.

long interval = 999; // interval at which to blink (milliseconds)

void setup() {

// set the digital pin as output:

pinMode(ledPin, OUTPUT);

Serial.begin(9600);

}

void loop()

{

// here is where you’d put code that needs to be running all the time.

// check to see if it’s time to blink the LED; that is, if the

// difference between the current time and last time you blinked

// the LED is bigger than the interval at which you want to

// blink the LED.

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > interval) {

// save the last time you blinked the LED

previousMillis = currentMillis;

// if the LED is off turn it on and vice-versa:

if (ledState == LOW)

ledState = HIGH;

else

ledState = LOW;

// set the LED with the ledState of the variable:

digitalWrite(ledPin, ledState);

if (currentMillis == 10000)

{

Serial.println(“10 seconds elapsed”);

}

else if (currentMillis == 20000)

{

Serial.println(“20 seconds elapsed”);

}

else if (currentMillis == 30000)

{

Serial.print(“30 seconds elapsed”);

}

}

}

If you use the code tags your code will retain it’s indentations and be easier to read.

(click to open)

Like this;

const int ledPin = 13; // the number of the LED pin

// Variables will change:
int ledState = LOW; // ledState used to set the LED
long previousMillis = 0; // will store last time LED was updated

// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long interval = 999; // interval at which to blink (milliseconds)

void setup() {
  // set the digital pin as output:
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  // here is where you'd put code that needs to be running all the time.

  // check to see if it's time to blink the LED; that is, if the
  // difference between the current time and last time you blinked
  // the LED is bigger than the interval at which you want to
  // blink the LED.
  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis > interval) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;

    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
    Serial.println("blink");
    // set the LED with the ledState of the variable:
    digitalWrite(ledPin, ledState);

    if (currentMillis == 10000)
    {
      Serial.println("10 seconds elapsed");
    }
    else if (currentMillis == 20000)
    {
      Serial.println("20 seconds elapsed");
    }
    else if (currentMillis == 30000)
    {
      Serial.print("30 seconds elapsed");
    }
  }
}

Does the LED change every 1 second ? It should. How would you make it change every 10 secs ? Given that works, where would you put any code that’s supposed to run every 10 secs ? I added 1 line to the code above, run it and see what happens.