Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Индикатор уровня на LCD. Логарифмический. 
V
    Опции темы
Коляй
Дата 4.8.2006, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 14.6.2006

Репутация: нет
Всего: нет



Есть необходимость в логарифмическом индикаторе на LCD типа "полоса". В индикаторе 4 строки по 20 символов. И есть переменная int (результат АЦП). Как бы сделать что бы показания индикатора (одной строки) на больших уровнях переменной изменялись меньше, чем на малых в начале шкалы. (рассказал как смог) 
Я пока умею на СИ написать цикл из 20 строчек 
Код

while(1)
{
if(int > 0xFE) {segment=20;break;}// максимум, светится вся строка (20 сегментов)
if(int > 0xE4) {segment=19;break;}//  19 сегментов
if(int > 0xD0) {segment=18;break;}// 18 сегментов
..........
..........

и вручную поставить числа сравнений для каждого из 20 сегментов-уровней. Но может есть более изящное решение?(проц Атмега8535).
PM   Вверх
Romikgy
Дата 4.8.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



возьми значения обычного логарифма и забей в таблицу и с ней сравнивай


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Коляй
Дата 4.8.2006, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 14.6.2006

Репутация: нет
Всего: нет



 Спасибо. А где бы почитать про эту таблицу? А то на этом форуме нашел про логарифмы, там тоже сказали про таблицу, а вот что за таблица не сказали.
PM   Вверх
Mikel
Дата 5.8.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



Таблицу делаешь сам, т.к. в микроконтроллере нет функции логарифма. Поэтому забиваешь ее в массив 20 элементов в твоем случае. Каждому элементу индикатора соответствует число, такое что когда тебе надо отобразить уровень x и этот х больше того числа, индикатор включаешь. Таким образом у тебя загораются все индикаторы до какого-то, где х не переплюнул значение в ячейке.
А массив составляешь по логарифмическому закону руками.
Пример
8 бит АЦП
х=0..255
ln(x+1)=0..5.545
А у тебя 0..19- надо отнормировать.

ln(x+1)*20/ln(256)=0..20 берем первые 19
ln(x+1)*20/ln(256)=n
ln(x+1)=n/20*ln(256);

x=exp(n/20*ln(256))-1
подставляешь номер ячейки n соответсвующий nному индикатору. и считаешь таблицу.


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Коляй
Дата 6.8.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 14.6.2006

Репутация: нет
Всего: нет



 Спасибо большое.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.