А зачем тебе ее конвертировать? Разве Serial.println ее не отображает?
Вид для печати
А зачем тебе ее конвертировать? Разве Serial.println ее не отображает?
Serial.println - отображает данные только на компьютере при
открыти мониторинига последовательной шины , а мне надо выводить их на дисплей.
Ну так я и хочу посмотреть как ты пытаешся это сделать.
У меня нет времени на изучение твоей библиотеки, поэтому и прошу выожить твой код для анализа
В библиотеке наверняка должна быть функция для вывода переменной на экран
Библиотека не моя, а отсюда- http://www.watterott.net/projects/s65-shield?
Так мне и надо, чтоб кто-то подсказал: можно ли с помощью этой библиотеки выводить на дисплей переменные.
Или есть ли другая библиотека для LPH88?
Можно только строковые. В примерах есть.
Или символ void drawChar(uint8_t x, uint8_t y, char c, uint8_t size, uint16_t color, uint16_t bg_color)
Преобразование из числа в символ Чип показывал выше.
Может поможете с выводом на дисплей?
Вот кусок скетча:
void ArmDown()
{
int alimit=digitalRead(Amotorlimpin);
int armcurrent; //--Ток двигателя
while (alimit==1)
{
armcurrent = analogRead(Amotorcurpin);
if (armcurrent>150)
{
Serial.print("armcurrent:");
Serial.println(armcurrent);
break;
}
Т. е. на Serial Monitor на компьютере выводятся значения, считываемые с аналогового выхода Amotorcurpin.
Надо тоже самое выводить на дисплейчик:)
Можно сделать так, например:
char str[5];
sprintf(str, " %03i", armcurrent);
lcd.drawText(10, 50, str, 2, RGB( 0,255, 0), RGB(0,0,0));
Спасибо за ответ. А можно немного пояснений на простом примере:
С комментариями, если можно.
#include <S65Display.h>
S65Display lcd;
void setup() {
Serial.begin(9600);
}
void loop() {
int armcurrent = analogRead(A0); //показания аналогово выхода
Serial.println(armcurrent, DEC);
char str[5]; // объявляем текстовую строку как массив "str" из 5-ти символов без присваивания значений -?
sprintf(str, " %03i", armcurrent); // - ?
lcd.drawText(10, 50, str, 2, RGB( 0,255, 0), RGB(0,0,0)); // ?
}
А чего же тут комментировать?
Про фунцию sprintf читай в мануалах на С, С++.
lcd.drawText - это вывод текстовой переменной str на дисплей из указанной библиотеки с координатами x=10, y=50, масштаб шрифта 2, цвет букв - RGB( 0,255, 0) (зеленый), фон - RGB(0,0,0) - черный.
Длину массива в твоем случае можно уменьшить до 3.
Спасибо zhserg! Все работает.
Еще можно воспользоваться функцией itoa :
itoa(Temp, string, 10); // Temp - переменная которую необходимо вывести на экран
lcd.drawText(15, 10, string,4, RGB( 0, 0, 0), RGB(0,168,236));
Подскажите пожалуйста. Как мне сделать русский шрифт для этого дисплея?
Спасибо всем за помощь с выводом на дисплей значения переменной.
Теперь пытаюсь вывести на дисплей русские буквы с помощью этой библиотеки:
http://www.watterott.net/projects/s65-shield?
Дело в том, что в ней идет вывод символов с адреса 0х020 по 0x7F, пробовал изменить FONT_END7F на FONT_ENDFF в файле /libraries/S65Display/fonts.h.,
как написано в файле docu.htm из этой библиотеки. Ничего не вышло.
Удается вывести русские буквы только таким способом:
for example "Test \x84 \x94 \x81 \x8E \x99 \x9A" to display "Test д ц ь Д Ц Ь"
Может кто знает, как сделать поддержку русского ?
Нужно рисовать свои шрифты
Так у меня в файле шрифта с адреса 0х020 по 0x7F идет английский шрифт, а далее с 80 по FF идет русский шрифт.
А где посмотреть этот фаил?
http://www.watterott.net/s65-shield/s65-shield_v022.zip
Вот вся библиотека. В ней есть шрифты и файл fonts.h
Я думаю что нужно прописать все символы вЦитата:
The text functions can draw characters from 0x20 to 0x7F and the default font is 8x12.
To change the font to 8x8 uncomment the FONT_8X8 definition and comment the FONT_8X12 definition in /libraries/S65Display/fonts.h
To support characters from 0x20 to 0xFF comment the FONT_END7F definition in /libraries/S65Display/fonts.h.
Use Umlaut characters as hex values, for example "Test \x84 \x94 \x81 \x8E \x99 \x9A" to display "Test д ц ь Д Ц Ь"
0x84 = д
0x8E = Д
0x94 = ц
0x99 = Ц
0x81 = ь
0x9A = Ь
#define д \x84
#define Д \x8E
и т.д
только потом писать через пробел
Спасибо, попробую прописать все символы (это в файле fonts.h или в файле самого шрифта?)
Непонятна тогда строчка:
To support characters from 0x20 to 0xFF comment the FONT_END7F definition in /libraries/S65Display/fonts.h.
Не получается так прописать, компилятор ругается на русские буквы: macro names must be identifiers
В каком файле это делать и может синтаксис другой ?
Даже незнаю что предложить
Если только перекодировать строку по символьно
например строка "0 А Б В Г Д"
выглядит в шеснацетричке вот так
30 20 D0 90 20 D0 91 20 D0 92 20 D0 93
20 D0 94
Один русский символ имеет размер 2 байта
Подключи вот так
http://www.compcar.ru/forum/attachme...8&d=1296310665
Извините но я не электронщик, хотя схему собрат могу.
1)Уточните конденсатор на схеме полярный? И какого номинала?
2)марку не подписанного диода тоже пож. укажите
3) В параметрах дросселя продавцы указывают два значения: Номинальная индуктивность и индуктивность балансная. Мне по какой ориентироваться?
1-10мкфх16в
2-MBR0530
3-по той что на дросселе написана, хотя тут еще его внутреннее сопротивление важно, я использовал первый попавшийся под руку от какого то преобразователя
Ну так нужно в скетче подправить входы и выходы контроллера под Ваше подключение
Нужно в setup добавить 3 строчки кода
Можно регулировать яркость подсветки при помощи analogWrite(3,яркость);Цитата:
pinMode(3,OUTPUT);
TCCR2B = TCCR2B & 0b11111000 | 1;
analogWrite(3,137); //включить подсветку
я правильно привязал вашу схему по отношению к стандартной библиотеке?
исх. библиотека ваша схема
D4 - D10
A3 - D9
А2 - D8
D13 - D13
D11 - D11
D3 - D3
Правильно
спасибо завелось!
Помогите Пожалуста найти суть ошибки, нужно вывести текст на экран S 65
Смотри здесь
подскажите пожалуйста как вывести переменную с плавающей точкой
char str[5];
sprintf(str, " %i, armcurrent); // - ?
lcd.drawText(10, 50, str, 2, RGB( 0,255, 0), RGB(0,0,0)); /
Например так - sprintf(str, %.1f",armcurrent);
не пошло выводит просто знак вопроса
Хм... точно, не проверил сам.
Тогда вот так
PHP код:
char str[7];
float armcurrent = -123.422;
int temp = (armcurrent - (int)armcurrent) * 100; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д.
sprintf(str,"%d.%d", (int)armcurrent, abs(temp));
Извиняюсь за то, что не совсем по теме, но в ходе экспериментов случайно спалил свой дисплей от Сименса LPH88. Под него уже написана программа. Поход в Митино ничего не дал. Может кто продаст лишний?
я свой дисплей в сервисе по ремонту мабилок брал спроси у них вместе с телефоном за 100 ре лежат.