Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ср июл 07, 2021 17:14:42
Как на lcd дисплей вывести флоат 16 бит или double 32 бит так что бы вывести только первые 5 бит информации. Низшие разряды стереть
Ср июл 07, 2021 18:36:45
- Код:
float ff = 1234.56;
...
- Код:
lcd.print((int)(ff));
или для большего числа
- Код:
lcd.print((long)(ff));
Arduino Cast:
https://www.arduino.cc/en/reference/cast
Ср июл 07, 2021 19:12:09
Это переводит из одного типа данных в другой? Мне нужно отсечь лишние цыфры после запятой
Ср июл 07, 2021 19:53:09
Приведите пример. Не могу понять, что еще должно быть.
Теперь отображается на дисплее целая часть (1234) из 1234,56 без явной трансформации (преобразование) типа.
Какие 5 бит (у float) имеете в виду?
Ср июл 07, 2021 20:03:15
pressure. getPressure (P, T) ; // возвращает значение давления в mbar.
// на дисплее отображает полностью double 32 бита. А нужно только 5 цифр
Ср июл 07, 2021 20:18:17
Arduino умеет выводить только целые числа. Видимо зависит от библиотеки экрана.
Я делал через
dtostrf(), но нужно верно указать размерность. Если строка будет слишком короткой она всё равно будет показана верно, просто гдето в другой части экрана картинку покосит. Но если задать слишком большие размеры, то просто будет отжирать лишние байты.
Ср июл 07, 2021 20:24:49
Есьт большая разница между 5 битами и 5 цифрами
.
- Код:
float ff = pressure.getPressure (P, T);
long xx = 0;
например:
- Код:
ff = 1234567.89
- Код:
xx = (long) ff;
xx %= 100000;
lcd.print(xx);
ответ: 34567
---
Arduino умеет выводить только целые числа...
Arduino выводить много типов, вкл double (int = 2). Посмотрите Print.h в C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino.
Последний раз редактировалось
veso74 Ср июл 07, 2021 20:47:47, всего редактировалось 1 раз.
Ср июл 07, 2021 20:41:27
Что то не понял
Ср июл 07, 2021 20:46:25
Пример программы. Запустить как есть. Потом извлеките нужные Вам строки и заместите ff с число, полученного из Вашей функции pressure.
(я частично пользуюсь переводчиком БГ-РУ)
Ср июл 07, 2021 22:14:16
sprintf Вам в помощь.
Чт июл 08, 2021 00:09:44
Зачем вообще флоат использовать ?
Добавлено after 17 minutes 46 seconds:
А что бы отбросить младшие разряды, нужно число разделить на 10 в степени разрядов которые нужно отбросить ... О чём речь ?
Чт июл 08, 2021 06:28:12
Я не использую float. Он идет из методов библиотеки для барометрического датчика. И выдает результат в double типе данных
Добавлено after 4 minutes 31 second:sprintf Вам в помощь.
Переделать в строку и вывести так что ли?
Чт июл 08, 2021 12:28:28
А кто мешает предварительно обработку данных сделать?
Перед тем, как скормить результат стандартной библиотеке.
Чт июл 08, 2021 19:16:44
mixon46 писал(а):что бы вывести только первые 5 бит информации. Низшие разряды стереть
Старшие 5 бит?
В СИ есть инструмент
Перефразируйте свой вопрос, а то я и из середины float могу 5 бит вытащить.
Чт июл 08, 2021 23:36:58
mixon46 писал(а):Переделать в строку и вывести так что ли?
А как иначе Вы выводите переменные ?
Добавлено after 3 minutes 36 seconds:Что то не понял
Кстати, Вас тоже никто не понимает.
Сначала Вы говорите про 5 бит, потом про 5 цифр.
Вас просили - приведите пример. Вы не приводите.
Одни догадки ...
Пт июл 09, 2021 06:58:53
mixon46 писал(а):Переделать в строку и вывести так что ли?
А как иначе Вы выводите переменные ?
Добавлено after 3 minutes 36 seconds:Что то не понял
Кстати, Вас тоже никто не понимает.
Сначала Вы говорите про 5 бит, потом про 5 цифр.
Вас просили - приведите пример. Вы не приводите.
Одни догадки ...
В смысле догадки. Вот например.
lcd. print (P, DEC)
Вывожу переменную double в которой хранится значение давления на дисплей в десятичном виде. 748.84774730840000000090000909000000. Так ведь? А мне надо отсечь лишние цыфры после запятой. Так? Оставить только 748.84
Пт июл 09, 2021 07:08:14
ето переменная для pressure:
double ppp = 748.84774730840000000090000909000000;
для печати дисплея добавьте просто
lcd.print(ppp, 2);
и будет на екране 748.84
Пт июл 09, 2021 07:31:23
ето переменная для pressure:
double ppp = 748.84774730840000000090000909000000;
для печати дисплея добавьте просто
lcd.print(ppp, 2);
и будет на екране 748.84
Да здорово. Это работает.
Подскажи а почему команда lcd.print () есть. А в библиотеке я ее не могу найти. Я только изучаю как это все работает. И мне интересны все взаимосвязи языка c#. Библиотека LicuidCrystal I2C
Пт июл 09, 2021 12:11:15
Потому что искать надо в базовой библиотеке
file:///C:/Arduino/reference/www.arduino.cc/en/Reference/Libraries.html
и далее
file:///C:/Arduino/reference/www.arduino.cc/en/Reference/LiquidCrystal.html
собственно это встроенная библиотека.
А LicuidCrystal I2C обеспечивает транспорт для ЖКИ с I2C интерфейсом, но использует методы из базовой библиотеки.
Да и в ардуине не С#, а Си/С++ используется - их и надо изучать.
Сб июл 10, 2021 17:32:17
Не нашёл этого метода в библиотеке liquidqcystal
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.