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

baffer555
Offline
Зарегистрирован: 16.12.2021

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Никто на сторонний ресурс не полезет, да еще подтверждать, что не робот, нам это нах не упало.  Либо выкладываешь здесь, либо тема уйдет в dev/null

baffer555
Offline
Зарегистрирован: 16.12.2021

А как выложить здесь?

baffer555
Offline
Зарегистрирован: 16.12.2021

Просто у меня код поделён на части.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

если код, то вот так

и свернуть не забуть

baffer555
Offline
Зарегистрирован: 16.12.2021

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);
      }
    }
  }
}

 

baffer555
Offline
Зарегистрирован: 16.12.2021

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-й пин на вход
}

 

baffer555
Offline
Зарегистрирован: 16.12.2021

void

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

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

 

 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

В вашем случае никак.
Библиотека LED и библиотека IR завязаны на одном таймере.

baffer555
Offline
Зарегистрирован: 16.12.2021

Подскажите пожалуйста как разделить.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

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

Kakmyc
Offline
Зарегистрирован: 15.01.2018

baffer555 пишет:

Подскажите пожалуйста как разделить.

Я же говорю, в твоём случае никак.
Просто смирись.

baffer555
Offline
Зарегистрирован: 16.12.2021

В этом и беда что я с прерыванием не очень. С кнопками у меня получалось однажды, а с пультом беда.

lilik
Offline
Зарегистрирован: 19.10.2017
v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

lilik пишет:

http://arduino.ru/forum/proekty/zalivaem-shary-k-prazdniku?page=1#commen...

Вот здесь читайте, 63 пост.

lilik пишет:

Среди описаний бесчисленных победных модернизаций изделия от Гайвера ...

Справедливости ради это не гайверовсккое поделие, он сам его прихватизировал. Впрочем, авторство не затер, и на том спасибо ))

baffer555
Offline
Зарегистрирован: 16.12.2021

спасибо, но  не могли ты мне тыкнуть какой кусочек кода мне вставить. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Возьми контроллер SP511e и зашей туда WLED. Только так успеешь до НГ.

baffer555
Offline
Зарегистрирован: 16.12.2021

да такое у меня уже есть на wemos . я хотел поэксперементировать на нано но столкнулся с этой бедой. функции не зацикливаются

b707
Offline
Зарегистрирован: 26.05.2017

baffer555 пишет:

столкнулся с этой бедой. функции не зацикливаются

что бы это значило?

baffer555
Offline
Зарегистрирован: 16.12.2021

к примеру у меня есть простенькая функция которая мигает одним диодом но при отправке сигнала с пульта она один раз мигнет и тухнет и так при следующих нажатиях кнопки. и такая беда с остальными эффектами

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

baffer555 пишет:

pinMode(5, OUTPUT);//Определяем 12-й пин на вход
...
if (knopka=results.value){

Коллеги! Этих перлов недостаточно для того, чтобы не продолжать бессмысленный разговор?

 

baffer555
Offline
Зарегистрирован: 16.12.2021

извинеюсь коменты не мои я переделывал пару прог. Но всё все пины мои я их проверял по отдельности все проги работают

lilik
Offline
Зарегистрирован: 19.10.2017

baffer555 пишет:

спасибо, но  не могли ты мне тыкнуть какой кусочек кода мне вставить. 

Там, у меня в теме, в том посту ссылка на конструкцию чужую со схемой и кучей вариаций, возьмите самую первую и дерзайте.

baffer555
Offline
Зарегистрирован: 16.12.2021

А эти я пробывал. Они у меня не хотят компилироваться под nano

lilik
Offline
Зарегистрирован: 19.10.2017

baffer555 пишет:
А эти я пробывал. Они у меня не хотят компилироваться под nano

По приколу скачал первуюверсию - для нано всё скомпилировалось. У вас библиотеки стоят? (простите за интим).

baffer555
Offline
Зарегистрирован: 16.12.2021

короче топорным методом но добился я цикла.

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

irrecv.resume(); // Принимаем следующую команду
}


}

menu();
}

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Ну Вас уже ткнули мордой:

if (knopka=results.value){

Неужели нельзя исправить?

if (knopka==results.value){