Инвертирование уровня шим
- Войдите на сайт для отправки комментариев
Втр, 27/10/2015 - 23:10
Есть такой пример
#include <Curve.h> #include <LEDFader.h> /* Fades a single LED up and down using LED Fader. Connect an LED to pin 3 */ #define LED_PIN 3 #define FADE_TIME 2000 #define DIR_UP 1 #define DIR_DOWN -1 LEDFader led; int direction = DIR_UP; void setup() { led = LEDFader(LED_PIN); led.fade(255, FADE_TIME); } void loop() { led.update(); // LED no longer fading, switch direction if (!led.is_fading()) { // Fade down if (direction == DIR_UP) { led.fade(0, FADE_TIME); direction = DIR_DOWN; } // Fade up else { led.fade(255, FADE_TIME); direction = DIR_UP; } } }
Все вроде работает, но мой китайский шим-контроллер понимает значение шим 0 как 100% яркости и, соответственно 255 как 0%. Прошу прощения за глупый вопрос - я не волшебник, я только учусь. Пример из библиотеки
https://github.com/jgillick/arduino-LEDFader
там еще есть curve.h, которую я не понимаю как использовать, но очень хочется...
Что за ШИМ контроллер?
....
Все вроде работает, но мой китайский шим-контроллер понимает значение шим 0 как 100% яркости и, соответственно 255 как 0%.......
Эти значения означают скважность, то-есть время отсутствия сигнала.
Если скважность 255 соответственно все время пауза на выходе 0%
Если скважность 0 соответственно все время заплнение на выходе 100%
Что за ШИМ контроллер?
http://ru.aliexpress.com/item/3W-5-35V-LED-Driver-700mA-PWM-Dimming-DC-to-DC-Step-down-Constant-Current/32313575370.html?adminSeq=201164481&shopNumber=1414081
....
Все вроде работает, но мой китайский шим-контроллер понимает значение шим 0 как 100% яркости и, соответственно 255 как 0%.......
Эти значения означают скважность, то-есть время отсутствия сигнала.
Если скважность 255 соответственно все время пауза на выходе 0%
Если скважность 0 соответственно все время заплнение на выходе 100%
Мой девайс по ссылке выше работает, видимо, наоборот, ведь в скетче диод пульсирует 0 -> 100 -> 0 , а я вижу 100 -> 0 -> 100.
Помогите переписать код, что бы шим по умолчанию был 255 а не 0.
Для начала заменить все 255 на 0, а все 0 на 255.
Переопределить:
DIR_UP -1
DIR_DOWN 1
В первом приближении достаточно
Это я попробовал сразу - на глаз ничего не меняется.
Судя по скетча (либу не смотрел), начинается все с 255, а не с нуля. См. setup().
"А был ли мальчик"?
Элементарно, Ватсон:
MyValue = 255 - MyValue;
А так не пойдет:
val = map(значение, 0, 255, 255, 0);
Отсюда.
Разбираюсь в библиотеке - там все есть.
Поставьте на выход элемент "не" - вот и вся инверсия.