Consulta error al usar constrain en variable convertida de string a int

Estimados, tengo el siguiente problema:

Estoy aprendiendo arduino, y estoy haciendo un ejercicio que consiste en ingresar en la consola un texto en el formato “TTT,tt”, donde TTT es una temperatura y tt es un tiempo, el programa busca la separación del texto dada por la coma (,) y con un substring separa los valores, hasta aquí todo bien. Mi problema viene en que el valor máximo de TTT debe ser 255 y el valor máximo de tt debe ser 10, por lo que intenté usar la función constrain, lo cual me arroja un error que resumo en “conversion from ‘int’ to ‘const string’ is ambiguous”, intenté realizar el mismo proceso con un if a ver si estaba aplicando mal la función pero me sale el mismo error, adjunto el código y el error por si me pudieran explicar que está mal.

int led = 3;
int contador;
String temperatura;
String tiempo;
int coma;

void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  int indice;

}

void loop() {
  if (Serial.available()) {

    String valor = Serial.readStringUntil('\n');
    valor.trim();

    coma = valor.indexOf(",");
    temperatura = valor.substring(0, coma);
    tiempo = valor.substring(coma + 1, valor.length());

    temperatura = temperatura.toInt();
    if (temperatura > 255) {
      temperatura = 255;
    }
    else if (temperatura < 0) {
      temperatura = 0;
    }


    tiempo = tiempo.toInt();

    if (tiempo > 10) {
      tiempo = 10;
    }
    else if (tiempo < 0) {
      tiempo = 0;
    }

    //tiempo=constrain(tiempo,0,10);

    Serial.print("Temperatura: "); Serial.println(temperatura);
    Serial.print("Tiempo: "); Serial.println(tiempo);

  }

}


Y el error:

Arduino:1.8.13 (Windows 10), Tarjeta:"Arduino Uno"

C:\Users\sebas\Desktop\Arduino\Ejemplo_horno_potenciometro\Ejemplo_horno_potenciometro.ino: In function 'void loop()':

Ejemplo_horno_potenciometro:25:23: error: conversion from 'int' to 'const String' is ambiguous

     if (temperatura > 255) {

                       ^~~

In file included from D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:232:0,

                 from sketch\Ejemplo_horno_potenciometro.ino.cpp:1:

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:61:2: note: candidate: String::String(const __FlashStringHelper*) <near match>

  String(const __FlashStringHelper *str);

  ^~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:61:2: note:   conversion of argument 1 would be ill-formed:

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:59:2: note: candidate: String::String(const char*) <near match>

  String(const char *cstr = "");

  ^~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:59:2: note:   conversion of argument 1 would be ill-formed:

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:147:16: note:   initializing argument 1 of 'unsigned char String::operator>(const String&) const'

  unsigned char operator >  (const String &rhs) const;

                ^~~~~~~~

Ejemplo_horno_potenciometro:28:28: error: conversion from 'int' to 'const String' is ambiguous

     else if (temperatura < 0) {

                            ^

In file included from D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:232:0,

                 from sketch\Ejemplo_horno_potenciometro.ino.cpp:1:

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:61:2: note: candidate: String::String(const __FlashStringHelper*)

  String(const __FlashStringHelper *str);

  ^~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:59:2: note: candidate: String::String(const char*)

  String(const char *cstr = "");

  ^~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:146:16: note:   initializing argument 1 of 'unsigned char String::operator<(const String&) const'

  unsigned char operator <  (const String &rhs) const;

                ^~~~~~~~

Ejemplo_horno_potenciometro:29:21: error: ambiguous overload for 'operator=' (operand types are 'String' and 'int')

       temperatura = 0;

                     ^

In file included from D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:232:0,

                 from sketch\Ejemplo_horno_potenciometro.ino.cpp:1:

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: candidate: String& String::operator=(const String&)

  String & operator = (const String &rhs);

           ^~~~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: candidate: String& String::operator=(const char*)

  String & operator = (const char *cstr);

           ^~~~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: candidate: String& String::operator=(const __FlashStringHelper*)

  String & operator = (const __FlashStringHelper *str);

           ^~~~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:90:11: note: candidate: String& String::operator=(String&&)

  String & operator = (String &&rval);

           ^~~~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:91:11: note: candidate: String& String::operator=(StringSumHelper&&)

  String & operator = (StringSumHelper &&rval);

           ^~~~~~~~

Ejemplo_horno_potenciometro:35:18: error: conversion from 'int' to 'const String' is ambiguous

     if (tiempo > 10) {

                  ^~

In file included from D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:232:0,

                 from sketch\Ejemplo_horno_potenciometro.ino.cpp:1:

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:61:2: note: candidate: String::String(const __FlashStringHelper*) <near match>

  String(const __FlashStringHelper *str);

  ^~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:61:2: note:   conversion of argument 1 would be ill-formed:

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:59:2: note: candidate: String::String(const char*) <near match>

  String(const char *cstr = "");

  ^~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:59:2: note:   conversion of argument 1 would be ill-formed:

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:147:16: note:   initializing argument 1 of 'unsigned char String::operator>(const String&) const'

  unsigned char operator >  (const String &rhs) const;

                ^~~~~~~~

Ejemplo_horno_potenciometro:38:23: error: conversion from 'int' to 'const String' is ambiguous

     else if (tiempo < 0) {

                       ^

In file included from D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:232:0,

                 from sketch\Ejemplo_horno_potenciometro.ino.cpp:1:

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:61:2: note: candidate: String::String(const __FlashStringHelper*)

  String(const __FlashStringHelper *str);

  ^~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:59:2: note: candidate: String::String(const char*)

  String(const char *cstr = "");

  ^~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:146:16: note:   initializing argument 1 of 'unsigned char String::operator<(const String&) const'

  unsigned char operator <  (const String &rhs) const;

                ^~~~~~~~

Ejemplo_horno_potenciometro:39:16: error: ambiguous overload for 'operator=' (operand types are 'String' and 'int')

       tiempo = 0;

                ^

In file included from D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:232:0,

                 from sketch\Ejemplo_horno_potenciometro.ino.cpp:1:

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: candidate: String& String::operator=(const String&)

  String & operator = (const String &rhs);

           ^~~~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: candidate: String& String::operator=(const char*)

  String & operator = (const char *cstr);

           ^~~~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: candidate: String& String::operator=(const __FlashStringHelper*)

  String & operator = (const __FlashStringHelper *str);

           ^~~~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:90:11: note: candidate: String& String::operator=(String&&)

  String & operator = (String &&rval);

           ^~~~~~~~

D:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:91:11: note: candidate: String& String::operator=(StringSumHelper&&)

  String & operator = (StringSumHelper &&rval);

           ^~~~~~~~

exit status 1

conversion from 'int' to 'const String' is ambiguous



Este informe podría contener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.

Saludos y muchas gracias de antemano

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.