Arduino Автоматический световой диммер - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь уменьшить яркость NEOPIXEL от Adafruit, введя только количество секунд, но я не могу добиться плавного перехода, и он работает только до 5 секунд. И я не могу заставить его напечатать текущую яркость. (

Вот мой код:

#include <Adafruit_NeoPixel.h>

#define PIN 4

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not     v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(3, PIN, NEO_GRB +         NEO_KHZ800);

void setup() {

  strip.begin();
  strip.show(); // Initialize all pixels to 'off'

}

void loop() {
  double t = 2000;
  dimmerByTime(t);

}
void dimmerByTime(int time){
int seq = time / 170;
int b = 100 /seq;
  for (int i = 1; i < seq; i++) {
  strip.setPixelColor(0, 0, 100, 200);
  strip.setPixelColor(1, 0, 100, 10);
  strip.setPixelColor(2, 0, 0, 225);
  strip.setBrightness(b);
  strip.show();
  delay(170);
  b = b + b;
  Serial.println(i);
  Serial.println("Brightness @");
  Serial.println(b);
  }

}

Спасибо!

1 Ответ

0 голосов
/ 10 сентября 2018

Чтобы включить печать, в void setup () добавьте: Serial.begin (9600);

Двойной т = 2000; может быть int t = 2000;

В функции dimmerByTime цикл for повторяется только 10 раз (seq = 2000/170 = 11). int b удваивается каждый раз (первый: b = 9, второй: b = 18 и т. д.). Попробуйте фиксированное число и посмотрите, что происходит (например, b + = 10). Или попробуйте еще меньший шаг и удалите (или уменьшите) задержку в сочетании с циклом for (итерация более 10).

Затемнение часто играет с различными переменными настройками.

...