I'm trying to make a simple program to turn a laser on and off. It was working fine until I tried to be able to make it blink by inputting a 2 to the serial monitor. It blinks, but only once. What I'm trying to make it do is blink forever, while also waiting for the user to input something to be able to stop blinking. Here is my code.
int laserPin = 3;
int laserState;
void setup()
{
pinMode(laserPin, OUTPUT); // set pin10 as output pin
digitalWrite(laserPin, LOW); // set the pin value on low at the begin
Serial.begin(9600);
Serial.println(" Commands");
Serial.println("--------------------");
Serial.println("2- makes laser blink");
Serial.println("1- turns laser on");
Serial.println("0- turns laser off");
}
void loop()
{
Serial.println("Set laser state to: "); //Prompt User for Input
while (Serial.available() == 0) {
// Wait for User to Input Data
}
laserState = Serial.parseInt(); //Read the data the user has input
Serial.println(laserState);
if(laserState == 1){
Serial.println("Turning laser on");
digitalWrite(laserPin, HIGH);
}
else if(laserState == 0){
Serial.println("Turning laser off");
digitalWrite(laserPin, LOW);
}
else if(laserState == 2){
Serial.println("Making laser blink");
while(laserState == 2)
{
digitalWrite(laserPin, HIGH);
delay(1000);
digitalWrite(laserPin, LOW);
Serial.println("Set laser state to: "); //Prompt User for Input
laserState = Serial.parseInt(); //Read the data the user has input
}
}
}
Here is the code I made to make the laser blink:
else if(laserState == 2){
Serial.println("Making laser blink");
while(laserState == 2)
{
digitalWrite(laserPin, HIGH);
delay(1000);
digitalWrite(laserPin, LOW);
Serial.println("Set laser state to: "); //Prompt User for Input
laserState = Serial.parseInt(); //Read the data the user has input
}
}