Esto es un contrasentido ,a parte de que faltan las llaves del bloque:
while (Serial available() == 0);
int input= (Serial.read);
return input;
Basicamente estas poniendo en el condicional: mientras no haya nada que leer del buffer (puesto que si Serial.available() es igual a 0 es que no hay datos en el buffer) guardas en input el valor leido ,osea nada.
Buenas noches Hell-Maker, estoy haciendo el mismo ejercicio y se me presentó el mismo problema. La solución es que tanto "AllToLow", como "ShowMessage" son dos funciones que se programan en el mismo sketch, pero debes declararlas antes de que aparezca su primera utilización en el programa, a continuación te copio el programa completo, espero que te ayude:
// Declaracion de constantes
#define BLUE 2 // Pin al que esta conectaDO EL led AZUL
#define GREEN 7 // Pin al que esta conectaDO EL led VERDE
#define WHITE 8 // Pin al que esta conectaDO EL led BLANCO
#define YELLOW 12 // Pin al que esta conectaDO EL led AMARILLO
#define RED 13 // Pin al que esta conectaDO EL led ROJO
#define SERIALSPEED 9600 // Velocidad de transmision del monitor serie
// Funcion que realiza el apagado de todos los LED del circuito
void AllToLow()
{
digitalWrite (BLUE, LOW);
digitalWrite (GREEN, LOW);
digitalWrite (WHITE, LOW);
digitalWrite (YELLOW, LOW);
digitalWrite (RED, LOW);
}
// Funcion que muestra el menú en la consoladel monitor serie y que lee la opcion elegida
int ShowMessage()
{
Serial.println ("Apagar todos los LEDs: 0");
Serial.println ("Encender LED azul: 1");
Serial.println ("Encender LED rojo: 2");
Serial.println ("Encender el segundo LED azul: 3");
Serial.println ("Encender el LED amarillo: 4");
Serial.println ("Encender el segundo LED rojo: 5");
Serial.println ("Encender todos los LEDs: 9");
Serial.println ("introduce la opción: ");
while (Serial.available() == 0);
int input = Serial.read();
return input;
}
//Configuracion de pines e inicializacion del monitor serie
void setup()
{
pinMode (BLUE, OUTPUT);
pinMode (GREEN, OUTPUT);
pinMode (WHITE, OUTPUT);
pinMode (YELLOW, OUTPUT);
pinMode (RED, OUTPUT);
AllToLow() ;
Serial.begin(SERIALSPEED);
}
void loop()
{
// Muestra el mensaje en el monitor serie y lee la opcion elegida
int selected = ShowMessage();
switch (selected)
{
case 48: // Opcion 0 seleccionada
Serial.println("Leds apagados");
AllToLow();
break;
case 49: // Opcion 1 seleccionada
Serial.println("Led azul encendido!");
AllToLow();
digitalWrite (BLUE, HIGH);
break;
case 50: // Opcion 2 seleccionada
Serial.println("Led verde encendido!");
AllToLow();
digitalWrite (GREEN, HIGH);
break;
case 51: // Opcion 3 seleccionada
Serial.println("Led BLANCO encendido!");
AllToLow();
digitalWrite (WHITE, HIGH);
break;
case 52: // Opcion 4 seleccionada
Serial.println("Led amarillo encendido!");
AllToLow();
digitalWrite (YELLOW, HIGH);
break;
case 53: // Opcion 5 seleccionada
Serial.println("Led rojo encendido!");
AllToLow();
digitalWrite (RED, HIGH);
break;
case 57: // Opcion 6 seleccionada
Serial.println("Todos los LEDs encendidos!");
digitalWrite (BLUE, HIGH);
digitalWrite (GREEN, HIGH);
digitalWrite (WHITE, HIGH);
digitalWrite (YELLOW, HIGH);
digitalWrite (RED, HIGH);
break;
}
}