Arduino program help needed (Serial LED FLASH, NO Delay)

  • Thread starter Deleted User
  • Start date
  • Views 809
  • Replies 0
D

Deleted User

Guest
OP
Hi all, hopefully someone can help me with this.

I recently got an Arduino, and have been having some fun playing around with it, but I cannot for the life of me understand, or get, Millis() working with Serial commands.

Here's what I'm trying to do:

I want to send a letter/number over serial usb to the ARduino, in order to flash an LED. However, what I have in mind requires as little lag as possible due to timing, so I cannot use Delay(). Instead, I must use Millis(). The flash needs to be fast, but it can only be 1 single flash per each time I send a command, it cannot be a "toggle" command.

Where I've come to the problem, is that I can get it to turn on the led, but only after sending my command twice. Furthermore, It does not automatically turn off, i, again, must send the same command, twice, which is exceptionally odd.

If someone is willing to tell/help me in whatever way possible, I'd greatly appreciate it, as the Arduino forums haven't been of any help, and it's been about 2 days worth of googling now and I'm getting quite fedup.

Below is my code, but its only 1 of the variants I've tried.

Code:
const int ledPin = 3;
const int interval = 250;
unsigned long startMillis;
unsigned long currentMillis;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  while (!Serial);
}

void loop(){
  startMillis = millis();
  int state = Serial.parseInt();
 
  if (Serial.available()){
   
      if (state == 2) {
      digitalWrite(3, HIGH);
      currentMillis = millis();
          if(currentMillis - startMillis >= interval) {
          digitalWrite(3, LOW);
          startMillis = currentMillis;
      }
    }
  }
}

Thanks in advanced for any help! I seriously appreciate it, brain is fried at this point!
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    K3Nv2 @ K3Nv2: https://youtube.com/shorts/wZgjSNb-o4c?si=ajt4Lgq_LTYcXxs2 +1