Например TDA7294

Форум РадиоКот • Просмотр темы - LCD 1602
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 27, 2025 01:27:15

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: LCD 1602
СообщениеДобавлено: Ср июл 07, 2021 17:14:42 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1644
Откуда: Курск
Рейтинг сообщения: 0
Как на lcd дисплей вывести флоат 16 бит или double 32 бит так что бы вывести только первые 5 бит информации. Низшие разряды стереть


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Ср июл 07, 2021 18:36:45 
Мудрый кот

Карма: 25
Рейтинг сообщений: 494
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1814
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Код:
float ff = 1234.56;

...
Код:
lcd.print((int)(ff));

или для большего числа
Код:
lcd.print((long)(ff));

Arduino Cast:
https://www.arduino.cc/en/reference/cast


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Ср июл 07, 2021 19:12:09 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1644
Откуда: Курск
Рейтинг сообщения: 0
Это переводит из одного типа данных в другой? Мне нужно отсечь лишние цыфры после запятой


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Ср июл 07, 2021 19:53:09 
Мудрый кот

Карма: 25
Рейтинг сообщений: 494
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1814
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Приведите пример. Не могу понять, что еще должно быть.
Теперь отображается на дисплее целая часть (1234) из 1234,56 без явной трансформации (преобразование) типа.
Какие 5 бит (у float) имеете в виду?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Ср июл 07, 2021 20:03:15 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1644
Откуда: Курск
Рейтинг сообщения: 0
pressure. getPressure (P, T) ; // возвращает значение давления в mbar.
// на дисплее отображает полностью double 32 бита. А нужно только 5 цифр


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Ср июл 07, 2021 20:18:17 
Друг Кота

Карма: -8
Рейтинг сообщений: 15
Зарегистрирован: Вс июл 24, 2011 11:38:09
Сообщений: 7598
Рейтинг сообщения: 0
Arduino умеет выводить только целые числа. Видимо зависит от библиотеки экрана.

Я делал через dtostrf(), но нужно верно указать размерность. Если строка будет слишком короткой она всё равно будет показана верно, просто гдето в другой части экрана картинку покосит. Но если задать слишком большие размеры, то просто будет отжирать лишние байты.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Ср июл 07, 2021 20:24:49 
Мудрый кот

Карма: 25
Рейтинг сообщений: 494
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1814
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Есьт большая разница между 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 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Ср июл 07, 2021 20:41:27 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1644
Откуда: Курск
Рейтинг сообщения: 0
Что то не понял


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Ср июл 07, 2021 20:46:25 
Мудрый кот

Карма: 25
Рейтинг сообщений: 494
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1814
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Пример программы. Запустить как есть. Потом извлеките нужные Вам строки и заместите ff с число, полученного из Вашей функции pressure.
(я частично пользуюсь переводчиком БГ-РУ)
Спойлер
Код:
#include <LiquidCrystal.h>

float ff = 1234567.89;
long xx;

LiquidCrystal lcd(9, 8, 7, 6, 5, 4);

void setup() {
  lcd.begin(16, 2);
}

void loop() {
  lcd.setCursor(0, 0);
  lcd.print(ff);
  lcd.setCursor(0, 1);
  xx = (long) ff;
  xx %= 100000;
  lcd.print(xx);
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Ср июл 07, 2021 22:14:16 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4598
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
sprintf Вам в помощь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Чт июл 08, 2021 00:09:44 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: -14
Рейтинг сообщений: 103
Зарегистрирован: Вт янв 26, 2021 22:33:21
Сообщений: 2314
Рейтинг сообщения: 0
Зачем вообще флоат использовать ?

Добавлено after 17 minutes 46 seconds:
А что бы отбросить младшие разряды, нужно число разделить на 10 в степени разрядов которые нужно отбросить ... О чём речь ?

_________________
Не спрашивай по ком звонит колокол, он звонит по тебе !


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Чт июл 08, 2021 06:28:12 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1644
Откуда: Курск
Рейтинг сообщения: 0
Я не использую float. Он идет из методов библиотеки для барометрического датчика. И выдает результат в double типе данных

Добавлено after 4 minutes 31 second:
sprintf Вам в помощь.

Переделать в строку и вывести так что ли?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Чт июл 08, 2021 12:28:28 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1494
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15328
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
А кто мешает предварительно обработку данных сделать?
Перед тем, как скормить результат стандартной библиотеке.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Чт июл 08, 2021 19:16:44 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
mixon46 писал(а):
что бы вывести только первые 5 бит информации. Низшие разряды стереть
Старшие 5 бит?
В СИ есть инструмент
Спойлер
Код:
union BytByte_32 {
struct {
uint16_t ostalnoe;
unsigned  bm: 11;
unsigned  bs: 5;
} bit;
volatile float byte;
}__attribute__((packed));

union BytByte_32 myBByte_32;

float ff = 1234.56;

unsigned char otvet;

   myBByte_32.byte = ff;

   otvet = myBByte_32.bit.bs;
в otvet как раз и будет старшие 5 бит float
Перефразируйте свой вопрос, а то я и из середины float могу 5 бит вытащить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Чт июл 08, 2021 23:36:58 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4598
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
mixon46 писал(а):
Переделать в строку и вывести так что ли?
А как иначе Вы выводите переменные ?

Добавлено after 3 minutes 36 seconds:
Что то не понял
Кстати, Вас тоже никто не понимает.
Сначала Вы говорите про 5 бит, потом про 5 цифр.
Вас просили - приведите пример. Вы не приводите.
Одни догадки ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Пт июл 09, 2021 06:58:53 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1644
Откуда: Курск
Рейтинг сообщения: 0
mixon46 писал(а):
Переделать в строку и вывести так что ли?
А как иначе Вы выводите переменные ?

Добавлено after 3 minutes 36 seconds:
Что то не понял
Кстати, Вас тоже никто не понимает.
Сначала Вы говорите про 5 бит, потом про 5 цифр.
Вас просили - приведите пример. Вы не приводите.
Одни догадки ...

В смысле догадки. Вот например.
lcd. print (P, DEC)

Вывожу переменную double в которой хранится значение давления на дисплей в десятичном виде. 748.84774730840000000090000909000000. Так ведь? А мне надо отсечь лишние цыфры после запятой. Так? Оставить только 748.84


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Пт июл 09, 2021 07:08:14 
Мудрый кот

Карма: 25
Рейтинг сообщений: 494
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1814
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
ето переменная для pressure:
double ppp = 748.84774730840000000090000909000000;

для печати дисплея добавьте просто
lcd.print(ppp, 2);

и будет на екране 748.84


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Пт июл 09, 2021 07:31:23 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1644
Откуда: Курск
Рейтинг сообщения: 0
ето переменная для pressure:
double ppp = 748.84774730840000000090000909000000;

для печати дисплея добавьте просто
lcd.print(ppp, 2);

и будет на екране 748.84

Да здорово. Это работает.

Подскажи а почему команда lcd.print () есть. А в библиотеке я ее не могу найти. Я только изучаю как это все работает. И мне интересны все взаимосвязи языка c#. Библиотека LicuidCrystal I2C


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Пт июл 09, 2021 12:11:15 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1494
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15328
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Потому что искать надо в базовой библиотеке
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 интерфейсом, но использует методы из базовой библиотеки.
Да и в ардуине не С#, а Си/С++ используется - их и надо изучать.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: LCD 1602
СообщениеДобавлено: Сб июл 10, 2021 17:32:17 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1644
Откуда: Курск
Рейтинг сообщения: 0
Не нашёл этого метода в библиотеке liquidqcystal


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y