jenya7 0 2 мая, 2019 Опубликовано 2 мая, 2019 · Жалоба Есть потенциометр подключенный к ADC входу контролера. И есть кнопки UP\DOWN. Народ хочет чтоб я потенциометром регулировал уровень освещения а кнопками делал мягкую подстройку. И тут мне не понятно как поженить кнопки с потенциометром. Я постоянно считываю ADC и полученное значение пропорционально PWM который я выдаю наружу на драйвер светодиодов. 3.3V = 100% PWM 0V = 5% PWM if (globalSysTimer > g_AnalogPeriod) { dimmer_ana_value = ADC_Read(0, PTB0_ADC0_SE8A, 4); LIGHT_14seg(dimmer_ana_value); LIGHT_7seg(dimmer_ana_value); g_AnalogPeriod = globalSysTimer + 200; } Теперь я кнопками начинаю изменять полученное значение с ADC, и что запретить ADC апдейтировать это значение? switch(key) { case UP_ARROW: dimmer_ana_value += dim_param.step; if (dimmer_ana_value > MAX_DIM_VAL) dimmer_ana_value = MAX_DIM_VAL; break; case DOWN_ARROW: dimmer_ana_value -= dim_param.step; if (dimmer_ana_value < MIN_DIM_VAL) dimmer_ana_value = MIN_DIM_VAL; break; } А если я начал крутить потенциометр – какое значение принять - то какое я накрутил или то что нахлопал кнопками? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 2 мая, 2019 Опубликовано 2 мая, 2019 · Жалоба Добавляйте к значению с АЦП число, нащелканное кнопками. Как только с АЦП придет новое значение, отличающееся от прежнего на некий заданный порог (чтобы нестабильность значений с АЦП игнорировать), обнуляйте число с кнопок. Два руля - это беда. А хотите - просто складывайте число с АЦП и число с кнопок. С ограничением результата снизу и сверху. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 мая, 2019 Опубликовано 2 мая, 2019 (изменено) · Жалоба 1 hour ago, ViKo said: Добавляйте к значению с АЦП число, нащелканное кнопками. Как только с АЦП придет новое значение, отличающееся от прежнего на некий заданный порог (чтобы нестабильность значений с АЦП игнорировать), обнуляйте число с кнопок. Два руля - это беда. А хотите - просто складывайте число с АЦП и число с кнопок. С ограничением результата снизу и сверху. тогда не получается идея с мягкой подстройкой. идея такая. потенциометр регулирует общий уровень на всех панелях. например на какой то панели хотят увеличить или уменьшить освещение - тогда подстраивают кнопками на этой панели. Изменено 2 мая, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 2 мая, 2019 Опубликовано 2 мая, 2019 · Жалоба 2 минуты назад, jenya7 сказал: тогда не получается идея с мягкой подстройкой. Если хотите, чтобы вес числа с кнопок был меньше, сдвиньте число с АЦП влево на N разрядов, насколько хотите смягчить число с кнопок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav_S 0 3 мая, 2019 Опубликовано 3 мая, 2019 · Жалоба Либо как вариант сделайте так: - разбиваем сигнал с потенциометра на диапазоны, допустим десять - каждому значению диапазона фиксированный PWM - к этому значению прибавляете/отнимаете значение от кнопок - далее по вкусу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 167 4 мая, 2019 Опубликовано 4 мая, 2019 · Жалоба В 02.05.2019 в 17:21, jenya7 сказал: потенциометр регулирует общий уровень на всех панелях ... на какой то панели ... подстраивают кнопками Из сказанного логично требуется комбинация сброса, единственно возможное из которых — одновременное нажатие. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 5 мая, 2019 Опубликовано 5 мая, 2019 · Жалоба мне выдали такую формулу Vseg = Cutoff * Press * Bdim + Press * Bpress * (1-Cutoff); Bdim = Min*Vdim + Max; Bpress - value of Vdim on first press. Где Vseg - вычисленное значение по которому устанавливается PWM. Cutoff = 0,1 - отрезает влияние кнопок. Press - значение с кнопок. Vdim - значение на ADC. Min, Max - минимальное и максимальное значение. Сказали что проверили в матлаб и формула разрулит все. сижу кручу - не работает формула, не вижу в ней логики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 5 мая, 2019 Опубликовано 5 мая, 2019 · Жалоба Лучше бы они выдали алгоритм на словах, чего им надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 167 5 мая, 2019 Опубликовано 5 мая, 2019 · Жалоба 22 минуты назад, jenya7 сказал: проверили в матлаб Ну вот, нашлись виновные, которые попутали потенциометр с энкодером, с которым таких проблем никогда бы не возникло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 5 мая, 2019 Опубликовано 5 мая, 2019 · Жалоба 3 hours ago, jenya7 said: сижу кручу - не работает формула, не вижу в ней логики. Надо не на формулы глядеть, а брать Simulink и делать. Если б народ знал современные методы разработки то форум наверно опустел бы. Вот ваша модель: Делается за 15 мин после чего конвертируется в C или С++ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 5 мая, 2019 Опубликовано 5 мая, 2019 (изменено) · Жалоба 1 hour ago, AlexandrY said: Надо не на формулы глядеть, а брать Simulink и делать. Если б народ знал современные методы разработки то форум наверно опустел бы. Вот ваша модель: Делается за 15 мин после чего конвертируется в C или С++ так сгенерируйте код пожалуйста :) у меня Simulink нет. и потом надо знать какие компоненты ставить на форму. я бы вряд ли додумался. Изменено 5 мая, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 167 5 мая, 2019 Опубликовано 5 мая, 2019 · Жалоба 11 минут назад, AlexandrY сказал: Вот ваша модель Это не его модель — читайте ТЗ внимательнее, кнопок должно быть малость поболее, в этом и затык. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 5 мая, 2019 Опубликовано 5 мая, 2019 · Жалоба 1 hour ago, Plain said: Это не его модель — читайте ТЗ внимательнее, кнопок должно быть малость поболее, в этом и затык. откуда поболее - две кнопки - +\- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 167 5 мая, 2019 Опубликовано 5 мая, 2019 · Жалоба В 02.05.2019 в 17:21, jenya7 сказал: потенциометр регулирует общий уровень на всех панелях. например на какой то панели хотят увеличить или уменьшить освещение - тогда подстраивают кнопками на этой панели Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 5 мая, 2019 Опубликовано 5 мая, 2019 · Жалоба 1 hour ago, Plain said: Скажем есть 4 панели - вход потенциометра ОБЩИЙ для всех панелей. А кнопки ОТДЕЛЬНЫЕ для каждой панели. панели не знают о других панелях. 4 панели - 4 микроконтролера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться