Чтение из EEPROM и объединение
Я пытаюсь прочитать из EEPROM, объединить информацию и отправить ее через SoftwareSerial с помощью функции write(), но получаю следующую ошибку
error: invalid operands of types 'const char [3]' and 'const char*' to binary 'operator+'
void loop()
{
const char* eTest1 = EEPROM.read(1);
const char* eTest2 = EEPROM.read(2);
const char* eTest3 = EEPROM.read(3);
char combinedVal[] = eTest1+":"+eTest2+":"+eTest3;
bluetooth.write(combinedVal);
}
@Rickstar, 👍1
Обсуждение1 ответ
Лучший ответ:
Для этого нельзя использовать оператор +.
Однако, поскольку EEPROM.read возвращает только один байт, а не строку, вы можете сделать гораздо более простую реализацию:
void loop()
{
char result[] = "1:2:3";
for (int item = 0; item < 3; item++)
{
result[item * 2] = EEPROM.read(1 + item);
}
}
Сначала создается строка "1:2:3", в которой цифры перезаписываются в цикле for этим элементом. Обратите внимание, что цифры в строке не имеют значения, это просто свободный «комментарий», он также должен работать при использовании «x:x:x».
Отлично, он пытается их объединить, но выдает следующее предупреждение об ошибке: неверное преобразование из uint8_t {aka unsigned char} в 'const char*' [-fpermissive] const char* eTest1 = EEPROM.read(1); ^, @Rickstar
@Rickstar Я сделал лучшую реализацию, поскольку EEPROM.read всегда возвращает ровно один байт (символ)., @Michel Keijzers
@Rickstar EEPROM.read() возвращает один байт, а не указатель на строку., @KIIV
Спасибо @MichelKeijzers, @Rickstar
Пожалуйста., @Michel Keijzers
- AT-команда не отвечает на последовательный монитор
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Как остановить SoftwareSerial от получения данных и повторно включить его в какой-то другой момент?
- Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- Как работает последовательная связь на Arduino?
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
- Ошибка 'Serial' was not declared in this scope
Кстати: для строки C (массив символов заканчивается 0) функция
write
такая же, какprint()
, @Juraj