шим и индикация
- Войдите на сайт для отправки комментариев
Чт, 06/08/2015 - 11:05
добрый день. вопрос в следующем
допустим управляем яркостью света, есть 6 положений
1, 0
2, 51
3, 102
4, 153
5, 204
6, 255
надо сделать индикацию, т.е. подключаем 5 светодоидов, если первое положение то не горят, если второе горит светик1, если третье горит светик2 и т.д.
подскажите как правильней реализовать
пока написал следущее
Задача абстрактная (в описании не хватает информации, домыслить можно что угодно) и решение аналогичное
Вместо global_level подставляйте ваши входные данные.
В принципе дложно работать, но проверить сейчас не на чем. Читайте комментарии, там два варианта засветки светиков.
Разумеется скетч не для всех случаев, а для решения данной абстрактной задачи.
спасибо большое))) смотрел в сторону оператора switch. Проверю отпишксь
Здесь switch только для "красоты" решения. Реально нужно думать, как сделать правильней, но это уже совсем другая история.
Попробую поподробнее обьяснить
Есть светодиодная лента отдельно покдлючена к пину 6(к примеру) и есть 5 светодиодов для индикации подключеных к пинам 9-13. При помощи ШИМ управляем яркостью светодиодной ленты(всего шесть положений 1, 0 2, 51 3, 102 4, 153 5, 204 6, 255). И в зависимости от положения горят светики
1положение ни один светодиод не горит
2положение горит светодиод1
3положение горят светодиоды 1 и 2
4положение горят светодиоды 1, 2 и 3
5положение горят светодиоды 1, 2, 3 и 4
5положение горят светодиоды 1, 2, 3, 4 и 5
Значит я угадал алгоритм, break не нужно раскомментаривать.
Здесь еще одна неизвестная величина, кроме шести положений есть промежуточные и не описано, что включать, если, например, между 2 и 3 положением, например, значение 83. Его можно интерпретировать по-разному. Один из вариантов такой:
Впрочем это уже дело техники, мелочи.
нет там все просто, одна кнопка увеличивает переменную на 51
вторая уменьшает на 51
всего шесть значений
Сдается мне, что задача решается значительно проще. Заводится счетчик текущего значения шим, например, current_pwm_index и кнопками это значение увеличивается или уменьшается на 1. Фактически у нас уже всегда есть нужный индекс шим. По этому индексу решаем как делать индикацию и по этому же индексу из массива уровней берем нужное значение шим и выводим в пин.
Т.е. танцуем от индекса, а не от значения. Тем более это выгодно, потому что сегодня значений шим 6, а завтра 7 или 8. Более того, чтобы было равномерней, в таблице уровней можно скоректировать значения шим, сделав эти значения неравномерными, фор икзэмпл 48, 102, 120, 198, 253. И тогда алгоритм не нужно менять, не нужно каждый раз отлаживать, достаточно просто поменять значения в массиве levels. И таки себе профит! :)
спасибо большое за советы, буду разбираться, закончу напишу
Ну да, пнули в нужную сторону, дальше сам, а то по граблям не походишь, ничему не научишься :)
Спасибо большое вам kisoft