Hola, llevo todo dos días intentando entender como arreglar mi código pero no tengo a quien preguntar y sin tratamiento para mi déficit de atención me resulta ya demasiado, hace mucho que no toco código y se que tiene que haber muchos errores, es un arduino uno, he buscado ejemplos y ayuda en internet y nada, dejo el enunciado y mi intento de código aquí si alguien pudiera ayudarme, muchas gracias:
Diseña el programa que te proponemos en los apartados siguientes, completando en cada paso cada una de sus partes; si no sabes completar un apartado, simúlalo para que funcione al menos con constantes, imprimiendo lo que debería, para poder seguir.
a) Imprime el siguiente menú con opciones y haz que pregunte, en el primer caso, el nombre de usuario en
el monitor serial y que conteste “Hola nombreusuario”, y que en el cuarto caso, se despida con el nombre
“Adiós nombredeusuario. Fin del programa” y, por último, que salga para acabar el programa (cuando se
pulse una tecla u opción no realice nada). Ahora mismo no hace falta hacer nada en los otros casos.
- Saludo.
- Encender Luz.
- Evitar explosión.
- Fin.
b) En el segundo caso, pregunta si se quiere encender la luz (led incorporado en Arduino), si contesta N o NO,
apaga el led; si contesta S o SÍ, enciende el led.
c) En el tercer caso debe pedir, guardar y luego imprimir el siguiente vector de LOST: 4 8 15 16 23 42 . Comprueba
que cuando se introduce un número sea el correcto, si no, escribe "BOOOM!!";.
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
Serial.println("1. Saludo.");
Serial.println("2. Encender luz.");
Serial.println("3. Evitar explosión.");
Serial.println("4. Fin.");
}
String frase() {
String inString = "";
while (Serial.available() > 0) {
char inChar = Serial.read();
if (inChar == '\n' || inChar == '\r') {
inString.trim();
return inString;
} else {
inString += inChar;
}
}
return "";
}
void loop() {
int x;
String nombre;
x = Serial.parseInt();
switch (x) {
case 1:
Serial.println("¿Cuál es tu nombre?");
delay(1000); // Espera a que se complete la entrada del usuario
nombre = frase();
Serial.println("Hola " + nombre);
break;
case 2:
Serial.println("¿Quiere encender la luz? (S/N)");
while (!Serial.available()) {} // Espera a que el usuario ingrese una opción
char encendido = Serial.read();
if (encendido == 'S' || encendido == 's') {
digitalWrite(LED_BUILTIN, HIGH);
} else if (encendido == 'N' || encendido == 'n') {
digitalWrite(LED_BUILTIN, LOW);
}
break;
case 3:
{
int cadena[] = {4, 8, 15, 16, 23, 42};
Serial.println("Para desactivar la bomba debes meter los siguientes numeros: 4, 8, 15, 16, 23, 42");
Serial.println("Introduzca numero: ");
for (int i = 0; i < 6; i++) {
while (!Serial.available()) {} // Espera a que el usuario ingrese un número
int micadena = Serial.parseInt();
if (micadena == cadena[i]) {
if (i < 5) {
Serial.println("Siguiente numero: ");
} else {
Serial.println("Bomba desactivada.");
}
} else {
Serial.println("***BOOOM!!!!!***");
return;
}
}
}
break;
case 4:
Serial.print("Adios ");
Serial.print(nombre);
Serial.println(". Fin del programa.");
delay(1000); // Espera para que el mensaje se muestre completamente
exit(0); // Termina el programa
break;
default:
break;
}
}