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