Настольная гирлянда

Тема в разделе "Arduino & Shields", создана пользователем baffer555, 16 дек 2021.

  1. baffer555

    baffer555 Нуб

    Добрый день. Помогите доредактировать код настольной гирлянды чтобы можно было управлять ик пульта. На данный момент реализованно только однократное действие при нажатие на кнопку на пульте.

    main
    Код (C++):
    #include "FastLED.h"
    #define NUM_LEDS    7
    #define LED_PIN     5
    #define COLOR_ORDER GRB
    #define LED_TYPE WS2811
    CRGB leds[NUM_LEDS];
    #include <IRremote.h>
    #include <IRremoteInt.h>
    #define MASTER_BRIGHTNESS   255
    #define STARTING_BRIGHTNESS 64
    #define FADE_IN_SPEED       32
    #define FADE_OUT_SPEED      20
    #define DENSITY            255
    IRrecv irrecv(2); // Указываем пин, к которому подключен приемник
    decode_results results;
    unsigned long knopka;//Переменная для хранения кода нажатой кнопки
    int ihue = 0;
    int thissat = 255;
    int thisdelay = 20;
    //colortwinkles
    enum { GETTING_DARKER = 0, GETTING_BRIGHTER = 1 };
    void brightenOrDarkenEachPixel( fract8 fadeUpAmount, fract8 fadeDownAmount)
    {
    for( uint16_t i = 0; i < NUM_LEDS; i++) {
        if( getPixelDirection(i) == GETTING_DARKER) {
          // This pixel is getting darker
          leds[i] = makeDarker( leds[i], fadeDownAmount);
        } else {
          // This pixel is getting brighter
          leds[i] = makeBrighter( leds[i], fadeUpAmount);
          // now check to see if we've maxxed out the brightness
          if( leds[i].r == 255 || leds[i].g == 255 || leds[i].b == 255) {
            // if so, turn around and start getting darker
            setPixelDirection(i, GETTING_DARKER);
          }
        }
      }
    }
     
    setup
    Код (C++):
    void setup() {
     
    delay(3000);
      FastLED.addLeds<LED_TYPE,LED_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
      FastLED.setBrightness(MASTER_BRIGHTNESS);
    Serial.begin(9600);// Запускаем серийный порт
    irrecv.enableIRIn(); // Запускаем прием
    pinMode(5, OUTPUT);//Определяем 12-й пин на вход
    }
     
    void
    Код (C++):
    void loop() {
      if (irrecv.decode(&results)) // Если данные пришли
    {
    knopka=results.value;
    Serial.println(knopka, DEC);// Отправляем полученную данную в консоль
    if (knopka=results.value){
    menu();
    irrecv.resume(); // Принимаем следующую команду
    }
    }
    }
    menu
    Код (C++):
    switch (knopka) {
    case 11419:
    blink();
    //irrecv.resume();
    break;
    case 27803:
    twinki();
    //delay (500);
    //irrecv.resume();
    break;
      case 21661:
    rainbow_fade();
    break;
    }
    }
     
     
  2. Bott

    Bott Гик

    Держи Бро!Не благодари!
    Код (C++):
    #include "FastLED.h"
    #define NUM_LEDS    7
    #define LED_PIN     5
    #define COLOR_ORDER GRB
    #define LED_TYPE WS2811
    CRGB leds[NUM_LEDS];
    #include <IRremote.h>
    #include <IRremoteInt.h>
    #define MASTER_BRIGHTNESS   255
    #define STARTING_BRIGHTNESS 64
    #define FADE_IN_SPEED       32
    #define FADE_OUT_SPEED      20
    #define DENSITY            255
    IRrecv irrecv(2); // Указываем пин, к которому подключен приемник
    decode_results results;
    unsigned long knopka;//Переменная для хранения кода нажатой кнопки
    int ihue = 0;
    int thissat = 255;
    int thisdelay = 20;
    //colortwinkles
    enum { GETTING_DARKER = 0, GETTING_BRIGHTER = 1 };
    void brightenOrDarkenEachPixel( fract8 fadeUpAmount, fract8 fadeDownAmount)
    {
    for( uint16_t i = 0; i < NUM_LEDS; i++) {
        if( getPixelDirection(i) == GETTING_DARKER) {
          // This pixel is getting darker
          leds[i] = makeDarker( leds[i], fadeDownAmount);
        } else {
          // This pixel is getting brighter
          leds[i] = makeBrighter( leds[i], fadeUpAmount);
          // now check to see if we've maxxed out the brightness
          if( leds[i].r == 255 || leds[i].g == 255 || leds[i].b == 255) {
            // if so, turn around and start getting darker
            setPixelDirection(i, GETTING_DARKER);
          }
        }
      }
    }
    switch (knopka) {
    case 11419:
    blink();
    //irrecv.resume();
    break;
    case 27803:
    twinki();
    //delay (500);
    //irrecv.resume();
    break;
      case 21661:
    rainbow_fade();
    break;
    }
    }

    void setup() {
    delay(3000);
      FastLED.addLeds<LED_TYPE,LED_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
      FastLED.setBrightness(MASTER_BRIGHTNESS);
    Serial.begin(9600);// Запускаем серийный порт
    irrecv.enableIRIn(); // Запускаем прием
    pinMode(5, OUTPUT);//Определяем 12-й пин на вход
    }
    void loop() {
      if (irrecv.decode(&results)) // Если данные пришли
    {
    knopka=results.value;
    Serial.println(knopka, DEC);// Отправляем полученную данную в консоль
    if (knopka=results.value){
    menu();
    irrecv.resume(); // Принимаем следующую команду
    }
    }
    }
     
     
  3. baffer555

    baffer555 Нуб

    Подскажите. а что вы добавили разницы не вижу
     
  4. parovoZZ

    parovoZZ Гуру

    Все доработки кода в платном разделе.
     
    Рокки1945 нравится это.