![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| Коляй |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 14.6.2006 Репутация: нет Всего: нет |
Есть необходимость в логарифмическом индикаторе на LCD типа "полоса". В индикаторе 4 строки по 20 символов. И есть переменная int (результат АЦП). Как бы сделать что бы показания индикатора (одной строки) на больших уровнях переменной изменялись меньше, чем на малых в начале шкалы. (рассказал как смог)
Я пока умею на СИ написать цикл из 20 строчек
и вручную поставить числа сравнений для каждого из 20 сегментов-уровней. Но может есть более изящное решение?(проц Атмега8535). |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
возьми значения обычного логарифма и забей в таблицу и с ней сравнивай
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Коляй |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 14.6.2006 Репутация: нет Всего: нет |
Спасибо. А где бы почитать про эту таблицу? А то на этом форуме нашел про логарифмы, там тоже сказали про таблицу, а вот что за таблица не сказали.
|
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 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 |
|||
|
||||
| Коляй |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 14.6.2006 Репутация: нет Всего: нет |
Спасибо большое.
|
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |