Código de Arduino - El código no se compilará

0

Estoy creando un tipo de telégrafo con mi Arduino y en lugar de usar el código Morse, tomo cada personaje y le doy un valor de 1-26 (a-z), 27 para un espacio y 28 para desconocido. Luego convierto ese número a binario. Pero sigo recibiendo errores. ¿Alguien podría ayudarme por favor? Gracias!

int button_0 = 13;
int button_1 = 12;

int out_0 = 11;
int out_1 = 10;

int in_0 = 9;
int in_1 = 8;

int buzzer = 7;

void setup() {

  pinMode(button_0, INPUT);
  pinMode(button_1, INPUT);

  pinMode(out_0, OUTPUT);
  pinMode(out_1, OUTPUT);

  pinMode(in_0, OUTPUT);
  pinMode(in_1, OUTPUT);

  pinMode(buzzer, OUTPUT);

  Serial.begin(9600);

}


void loop() {

  Serial.println("Message to binary: ");
  String input = "Hello World";
  String message = input.toLowerCase();
  String binaryNumber = "";

  for(int i = 0; i <= message.length(); i++) {

    char l = message.charAt(i);
    int letter = 0;

    if (l == 'a') {

      letter = 1;

    } 
    else if (l == 'b') {

      letter = 2;

    } 
    else if (l == 'c') {

      letter = 3;

    } 
    else if (l == 'd') {

      letter = 4;

    } 
    else if (l == 'e') {

      letter = 5;

    } 
    else if (l == 'f') {

      letter = 6;

    } 
    else if (l == 'g') {

      letter = 7;

    } 
    else if (l == 'h') {

      letter = 8;

    } 
    else if (l == 'i') {

      letter = 9;

    } 
    else if (l == 'j') {

      letter = 10;

    } 
    else if (l == 'k') {

      letter = 11;

    } 
    else if (l == 'l') {

      letter = 12;

    } 
    else if (l == 'o') {

      letter = 13;

    } 
    else if (l == 'm') {

      letter = 14;

    } 
    else if (l == 'n') {

      letter = 15;

    } 
    else if (l == 'p') {

      letter = 16;

    } 
    else if (l == 'q') {

      letter = 17;

    } 
    else if (l == 'r') {

      letter = 18;

    } 
    else if (l == 's') {

      letter = 19;

    } 
    else if (l == 't') {

      letter = 20;

    } 
    else if (l == 'u') {

      letter = 21;

    } 
    else if (l == 'v') {

      letter = 22;

    } 
    else if (l == 'w') {

      letter = 23;

    }

    else if (l == 'x') {

      letter = 24;

    } 
    else if (l == 'y') {

      letter = 25;

    } 
    else if (l == 'z') {

      letter = 26;

    } 
    else if (l == ' ') {

      letter = 27;

    } 
    else {

      letter = 28;

    }

    binaryNumber = binaryNumber + String(letter, BIN) + " ";

  }

  Serial.println("Message to binary:\n"+binaryNumber);

}

Aquí está mi error:

binary_telegraph.cpp: In function ‘void loop()’:
binary_telegraph.cpp:37:38: error: conversion from ‘void’ to non-scalar type ‘String’ requested
    
pregunta user1978786

1 respuesta

1
La función

toLowerCase() convierte el objeto al que se llama en minúsculas. No devuelve nada. Entonces, lo que probablemente quieras hacer es:

String input = "Hello World";
String message = input;
message.toLowerCase();

Esto explica el error: coloca un vacío, una nada, en la variable message . Esto no es un error irrazonable, según la documentación :

  

Obtenga una versión minúscula de una cadena. A partir de la 1.0, toLowerCase () modifica la cadena en lugar de devolver una nueva.

Por lo tanto, la función toLowerCase() utilizada para devolver una versión de caja inferior de la cadena. Ahora solo modifica la cadena a la que se llama y no devuelve nada.

Ahora, en la línea 37:

for(int i = 0; i <= message.length(); i++) {

Usted espera que message sea una cadena, al llamar al método de longitud. Ahora, el compilador intenta convertir el vacío en message en una cadena, pero eso no es posible. Por lo tanto, obtienes un error.

P.S. Como regla general, aquí hay mi proceso personal para depurar este tipo de errores:

  • Mira la línea donde se produce el error
  • Consulte la documentación de todas las funciones utilizadas en esa línea (en este caso aquí )
  • Si eso no lo resuelve, vuelva a verificar mis suposiciones acerca de la sintaxis del idioma según el mensaje de error.
respondido por el angelatlarge

Lea otras preguntas en las etiquetas