Кто сможет помочь с выводом температуры с датчика орегон большими цифрами? Код есть сделал по этой статье https://geektimes.ru/post/255812/ , сам код просто очень большой получился - вот исходник https://cloud.mail.ru/public/KGdN/8QA7A3zx7 . В интернете ничего толкого не нашел. (( Компилятор ругается так: Big_LCD.ino: In function 'void reportSerial(const char*, DecodeOOK&)': Big_LCD:37: error: too few arguments to function 'void printDigits(int, int)' Big_LCD:491: error: at this point in file"
Код компилировался, но на экран ничего не выводится ((( Если оставить просто такую запись printDigits(1,0);, тогда выводится 1
Если записать такой код Код (Text): printDigits(channel(data),2); printDigits(temperature(data),5); На дисплее появляется № канала , а дальше пусто(((( В этой переменной походу храниться число полностью например 25.70 - но как это вывести на экран???
самый простой способ перевести float в строку (String) и разбить на знаки (правда требует памяти) . там в примере точки нет большой и минуса
Про точку и минус знаю ))) Добавлю, а вот пока со строкой буду разбираться - тоже уже об этом подумал.
Код (C++): char charBuf[7]; Код (C++): float dataTemp= temperature(data) ; String floatToString = String(dataTemp); byte lenString=floatToString.length(); floatToString.toCharArray(charBuf, (lenString)+1); for (int a = 0; lenString > a; a++){ if (charBuf[a]=='-') printDigits(MINUS,1); else if (charBuf[a]=='.') printDigits(POINT,4); else printDigits((int)(charBuf[a]-'0'),a); } как вариант позиция курсора определенна случайно ну и как вариант для минуса ..byte UB[8].. а точку ..byte block[8]..
Big_LCD.ino: In function 'void reportSerial(const char*, DecodeOOK&)': Big_LCD:495: error: call of overloaded 'String(float&)' is ambiguous C:\arduino-1.0.5\hardware\arduino\cores\arduino/WString.h:70: note: candidates are: String::String(long unsigned int, unsigned char) C:\arduino-1.0.5\hardware\arduino\cores\arduino/WString.h:69: note: String::String(long int, unsigned char) C:\arduino-1.0.5\hardware\arduino\cores\arduino/WString.h:68: note: String::String(unsigned int, unsigned char) C:\arduino-1.0.5\hardware\arduino\cores\arduino/WString.h:67: note: String::String(int, unsigned char) C:\arduino-1.0.5\hardware\arduino\cores\arduino/WString.h:66: note: String::String(unsigned char, unsigned char) C:\arduino-1.0.5\hardware\arduino\cores\arduino/WString.h:65: note: String::String(char) Big_LCD:502: error: 'MINUS' was not declared in this scope Big_LCD:504: error: 'POINT' was not declared in this scope Big_LCD:506: error: 'a' was not declared in this scope Big_LCD.ino: At global scope: Big_LCD:530: error: expected unqualified-id before 'else' Big_LCD:548: error: expected constructor, destructor, or type conversion before '.' token Big_LCD:549: error: expected declaration before '}' token
Функция PrintDigits Код (Text): void printDigits(int digits, int x){ // utility function for digital clock display: prints preceding colon and leading 0 switch (digits) { case 0: custom0(x); break; case 1: custom1(x); break; case 2: .......
Версия 1.0.5 не поддерживает преобразование в float ->String скачайте последнюю с оф сайта или просто заменить файлы WString.cpp WString.h
В этом месте: Код (Text): if (charBuf[a]=='-') printDigits(MINUS,1); Скачал новую версию -- вот, что выдает Код (Text): error: initializing argument 1 of 'void printDigits(int, int)' [-fpermissive] exit status 1 invalid conversion from 'void (*)(int)' to 'int' [-fpermissive] Функцию MINUS создал
функцию создавать не надо а просто из объявить вот так например Код (C++): #define POINT 11 #define MINUS 10
и в конце функции void printDigits(int digits, int x) дописать Код (C++): case 10: // печатаем минус break; case 11: // печатаем точку break;
Цифры вывел, правда все только все в кучу, но точку получилось вывести по середине экрана примерно. Что можно исправить? . Спасибо Вам за помощь.
С утра тут надумал, но еще не проверял - так будет правильно printDigits((int)(charBuf[a]-'0'),a+2); ?
не думаю что так получиться) как вы вообще хотите цифры размешать ?желательно фото со следующей индикацией -30.00, 30.00, -3.00, 3.00