Инвертирование уровня шим
- Войдите на сайт для отправки комментариев
Втр, 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);
Отсюда.
Разбираюсь в библиотеке - там все есть.
#include <LEDFader.h> // Create new LED Fader on pin 3 LEDFader led = LEDFader(3); void setup() { // Fade from 0 - 255 in 3 seconds led.set_value(0); led.fade(255, 3000); } void loop() { led.update(); } Можно сделать так: #include <LEDFader.h> // Create new LED Fader on pin 3 LEDFader led = LEDFader(3); void setup() { // Fade from 255 - 0 in 3 seconds led.set_value(255); led.fade(0, 3000); } void loop() { led.update(); }Поставьте на выход элемент "не" - вот и вся инверсия.