Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

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

Чт дек 16, 2021 12:50:54

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

main
Код:
#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
Код:
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
Код:
void loop() {
  if (irrecv.decode(&results)) // Если данные пришли
{
knopka=results.value;
Serial.println(knopka, DEC);// Отправляем полученную данную в консоль
if (knopka=results.value){
menu();
irrecv.resume(); // Принимаем следующую команду
}
}
}


menu
Код:
switch (knopka) {
case 11419:
blink();
//irrecv.resume();
break;
case 27803:
twinki();
//delay (500);
//irrecv.resume();
break;
  case 21661:
rainbow_fade();
break;
}
}

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

Пн дек 20, 2021 08:58:11

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

Так управлять с ик пульта можно ? ничего не хотите добавить ? тогда зовите телепатов :))

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

Пн дек 20, 2021 13:02:40

Код:
void loop() {
  if (irrecv.decode(&results)) // Если данные пришли
{
knopka=results.value;
Serial.println(knopka, DEC);// Отправляем полученную данную в консоль

if (knopka=results.value){
Это условие некорректно, так как в таком варианте оно не сравнивает, а выполняет присваивание переменной knopka значение results.value. Кроме того, Вы уверены, что значение переменной knopka может где-то ещё успеть измениться, что его надо проверять ?

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

Вт дек 21, 2021 08:57:12

Но оно и не мешает никак.
Ответить