I'm having an issue with Arduino code. Regardless of entry, serial.read() function returns a value of somewhere between 50 and 55 for int PWM variable. If anyone has any ideas, please let me know. Here's what I have so far.
Quad LED PWM with serial interface:
void setup() {
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
delay(54);
Serial.begin(9600); //set 9600 baud rate.
Serial.println("Initialized");
delay(500);
PromptColor();
}
int ActiveLed;
String TargetLED;
String PWMValue;
void loop(){
}
void PromptColor() {
Serial.println("Enter Selected LED Color:");
delay(100);
ReadColor();
}
void PromptPWM(String LEDColor, int LedPin) {
Serial.print("Enter ");
Serial.print(LEDColor);
Serial.println(" LED PWM Value:");
ReadPWM(LedPin, LEDColor);
}
void ReadColor() {
String TargetLED = Serial.readString();
if (TargetLED.equalsIgnoreCase("Yellow")) {
TargetLED = "Yellow";
ActiveLed = 5;
PromptPWM(TargetLED,5);}
if (TargetLED.equalsIgnoreCase("Red")) {
TargetLED = "Red";
ActiveLed = 6;
PromptPWM(TargetLED,6);}
if (TargetLED.equalsIgnoreCase("Green")) {
TargetLED = "Green";
ActiveLed = 9;
PromptPWM(TargetLED,9);}
if (TargetLED.equalsIgnoreCase("Blue")) {
TargetLED = "Blue";
ActiveLed = 10;
PromptPWM(TargetLED,10);}
else delay(2000);
ReadColor();
}
// Everything works up to this point.
void ReadPWM(int LedPin, String LEDColor) {
if (Serial.available()) {
int PWM = Serial.read();
if (PWM>=0 and PWM<=100) {
Serial.print(LEDColor);
Serial.print(" LED PWM Value Set to: ");
Serial.println(PWM);
analogWrite(LedPin, map(PWM,0,100,0,255));}
}
else {
delay(1000);
analogWrite(LedPin, 0);
ReadPWM(LedPin, LEDColor);
}
PromptColor();}
I'm using an UNO board, IDE 1.8.7.
Thanks a bunch.