Есть задача выводить бегущей строкой на матрицу 8*8 показания с DHT11, на русском. и вроде бы разобрался, НО когда написал скетч вывода по нажатию кнопки выдаёт ошибку. Я выкручивался как мог, но теперь упёрся в тупик. скетч Код (C++): #include <iarduino_DHT.h> #include <SPI.h> // Подключаем библиотеку SPI #include <Adafruit_GFX.h> // Подключаем библиотеку Adafruit_GFX #include <Max72xxPanel.h> // Подключаем библиотеку Max72xxPanel int pinCS = 9; // Указываем к какому выводу подключен контакт CS int numberOfHorizontalDisplays = 1; // Количество матриц по горизонтали int numberOfVerticalDisplays = 4; // Количество матриц по-вертикали Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); String tape = ""; int wait = 100; // интервал, чем меньше тем бытрее бежит строка int spacer = 1; // Промежуток между символами (кол-во точек) int width = 5 + spacer; // Ширина шрифта составляет 5 пикселей iarduino_DHT sensor(4); String utf8rus(String source) { int i, k; String target; unsigned char n; char m[2] = { '0', '\0' }; k = source.length(); i = 0; while (i < k) { n = source[i]; i++; if (n >= 0xC0) { switch (n) { case 0xD0: { n = source[i]; i++; if (n == 0x81) { n = 0xA8; break; } if (n >= 0x90 && n <= 0xBF) n = n + 0x2F; break; } case 0xD1: { n = source[i]; i++; if (n == 0x91) { n = 0xB7; break; } if (n >= 0x80 && n <= 0x8F) n = n + 0x6F; break; } } } m[0] = n; target = target + String(m); } return target; } void setup() { pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); tape = utf8rus("ДАРОВА"); matrix.setIntensity(5); // Задаем яркость от 0 до 15 matrix.setRotation(3); // Направление текста 1,2,3,4 } void loop() { switch(sensor.read()){ // Читаем показания датчика if (digitalRead(2) == 1){ tape = utf8rus("ТЕМПЕРАТУРА = " (sensor.tem) "ВЛАЖНОСТЬ " (sensor.hum)); // Считываем и сохроняе в переменную } for ( int i = 0 ; i < width * tape.length() + matrix.width() - spacer; i++ ) { matrix.fillScreen(LOW); int letter = i / width; // номер символа выводимого на матрицу int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; // отцентрировать текст по вертикали while ( x + width - spacer >= 0 && letter >= 0 ) { if ( letter < tape.length() ) { matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1); } letter--; x -= width; } matrix.write(); // выведим значения на матрицу delay(wait); } } } /* Функция перекодировки русских букв из UTF-8 в Win-1251 */ ошибка Код (C++): C:\Users\User71\Documents\Arduino\tamagohci_dla_TRU\tamagohci_dla_TRU.ino: In function 'void loop()': tamagohci_dla_TRU:70:57: error: expression cannot be used as a function tape = utf8rus("ТЕМПЕРАТУРА " (sensor.tem) "ВЛАЖНОСТЬ " (sensor.hum)); // Считываем и сохроняе в переменную ^ Несколько библиотек найдено для "iarduino_DHT.h" Используется: C:\Users\User71\Documents\Arduino\libraries\iarduino_DHT-master Несколько библиотек найдено для "SPI.h" Используется: C:\Program Несколько библиотек найдено для "Adafruit_GFX.h" Используется: C:\Users\User71\Documents\Arduino\libraries\Adafruit_GFX_Library Несколько библиотек найдено для "Max72xxPanel.h" Используется: C:\Users\User71\Documents\Arduino\libraries\arduino-Max72xxPanel-master exit status 1 expression cannot be used as a function Помогите пожалуйста.
Что если перевести? Чтобы сделать строку из нескольких или добавить переменную, нужно часть соединять знаком «+»: Код (Text): tape = utf8rus("ТЕМПЕРАТУРА " + (sensor.tem) + "ВЛАЖНОСТЬ " + (sensor.hum));
появилась другая ошибка Код (C++): C:\Users\User71\Documents\Arduino\tamagohci_dla_TRU\tamagohci_dla_TRU.ino: In function 'void loop()': tamagohci_dla_TRU:70:34: error: could not convert '(sensor.iarduino_DHT::tem + sensor.iarduino_DHT::hum)' from 'float' to 'String' tape = utf8rus((sensor.tem) + (sensor.hum)); // Считываем и сохроняе в переменную ~~~~~~~~~~~~~^~~~~~~~~~~~~~ Несколько библиотек найдено для "Max72xxPanel.h" Используется: C:\Users\User71\Documents\Arduino\libraries\arduino-Max72xxPanel-master Несколько библиотек найдено для "iarduino_DHT.h" Используется: C:\Users\User71\Documents\Arduino\libraries\iarduino_DHT-master Несколько библиотек найдено для "SPI.h" Используется: C:\Program Несколько библиотек найдено для "Adafruit_GFX.h" Используется: C:\Users\User71\Documents\Arduino\libraries\Adafruit_GFX_Library exit status 1 could not convert '(sensor.iarduino_DHT::tem + sensor.iarduino_DHT::hum)' from 'float' to 'String'
Вы конвертируете два числа типа float в String, а так нельзя. Вы хотите получить что-то вроде "23.24 45.56"? Я бы сделал так: Код (Text): tape = utf8rus("" + sensor.tem + "°C " + sensor.hum + "%");
не помогло, я так понимаю он считает что я хочу сложить строки. пробовал выводить только значение температуры, пишет что не может конвертировать float в string. что с этим делать то?