hello im brand new to arduino and ive been tasked with creating a code that turns on an LED depending on what i type in the serial monitor. it works but i want them to stay on for 3 seconds before turning off, can anyone help me?
heres my code
int LEDRedPin = 5;
int LEDYellowPin = 3;
int LEDGreenPin = 4;
int LEDWhitePin = 2;
void setup()
{
Serial.begin(9600);
pinMode(LEDRedPin, OUTPUT);
pinMode(LEDYellowPin, OUTPUT);
pinMode(LEDGreenPin, OUTPUT);
pinMode(LEDWhitePin, OUTPUT);
}
void toggleLED (int LEDPin)
{
digitalWrite(LEDPin, !digitalRead(LEDPin));
}
void loop()
{
if (Serial.available() > 0)
{
int inByte = Serial.read();
switch (inByte)
{
case 'R':
toggleLED(LEDRedPin);
break;
case 'Y':
toggleLED(LEDYellowPin);
break;
case 'G':
toggleLED(LEDGreenPin);
break;
case 'W':
toggleLED(LEDWhitePin);
break;
default:
digitalWrite(LEDRedPin, LOW);
digitalWrite(LEDYellowPin, LOW);
digitalWrite(LEDGreenPin, LOW);
digitalWrite(LEDWhitePin, LOW);
break;
}
}
}
Yes, I have added a delay() function to your sketch.
Using the delay() function is a quick and easy, but unsightly addition.
Normally each letter would need its own 3 second timer.
Just try it out and play around.
int LEDRedPin = 5;
int LEDYellowPin = 3;
int LEDGreenPin = 4;
int LEDWhitePin = 2;
void setup()
{
Serial.begin(9600);
pinMode(LEDRedPin, OUTPUT);
pinMode(LEDYellowPin, OUTPUT);
pinMode(LEDGreenPin, OUTPUT);
pinMode(LEDWhitePin, OUTPUT);
}
void toggleLED (int LEDPin)
{
digitalWrite(LEDPin, !digitalRead(LEDPin));
}
void loop()
{
if (Serial.available() > 0)
{
int inByte = Serial.read();
switch (inByte)
{
case 'R':
toggleLED(LEDRedPin);
break;
case 'Y':
toggleLED(LEDYellowPin);
break;
case 'G':
toggleLED(LEDGreenPin);
break;
case 'W':
toggleLED(LEDWhitePin);
break;
default:
delay(3000);
digitalWrite(LEDRedPin, LOW);
digitalWrite(LEDYellowPin, LOW);
digitalWrite(LEDGreenPin, LOW);
digitalWrite(LEDWhitePin, LOW);
break;
}
}
}