настольная гирлянда
- Войдите на сайт для отправки комментариев
Чт, 16/12/2021 - 11:14
Добрый день. Помогите доредактировать код настольной гирлянды чтобы можно было управлять ик пульта. На данный момент реализованно только однократное действие при нажатие на кнопку на пульте. (********)
Никто на сторонний ресурс не полезет, да еще подтверждать, что не робот, нам это нах не упало. Либо выкладываешь здесь, либо тема уйдет в dev/null
А как выложить здесь?
Просто у меня код поделён на части.
если код, то вот так
и свернуть не забуть
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(); // Принимаем следующую команду } } } menuvoid menu(){ switch (knopka) { case 11419: blink(); //irrecv.resume(); break; case 27803: twinki(); //delay (500); //irrecv.resume(); break; case 21661: rainbow_fade(); break; } }В вашем случае никак.
Библиотека LED и библиотека IR завязаны на одном таймере.
Подскажите пожалуйста как разделить.
В свое время был у меня похожий заказ...
Там я просто пин пульта завел на внешнее прерывание по которому приостанавливал работу с лентой на момент приема команды.
Подскажите пожалуйста как разделить.
Я же говорю, в твоём случае никак.
Просто смирись.
В этом и беда что я с прерыванием не очень. С кнопками у меня получалось однажды, а с пультом беда.
http://arduino.ru/forum/proekty/zalivaem-shary-k-prazdniku?page=1#commen...
Вот здесь читайте, 63 пост.
http://arduino.ru/forum/proekty/zalivaem-shary-k-prazdniku?page=1#commen...
Вот здесь читайте, 63 пост.
Среди описаний бесчисленных победных модернизаций изделия от Гайвера ...
Справедливости ради это не гайверовсккое поделие, он сам его прихватизировал. Впрочем, авторство не затер, и на том спасибо ))
спасибо, но не могли ты мне тыкнуть какой кусочек кода мне вставить.
Возьми контроллер SP511e и зашей туда WLED. Только так успеешь до НГ.
да такое у меня уже есть на wemos . я хотел поэксперементировать на нано но столкнулся с этой бедой. функции не зацикливаются
столкнулся с этой бедой. функции не зацикливаются
что бы это значило?
к примеру у меня есть простенькая функция которая мигает одним диодом но при отправке сигнала с пульта она один раз мигнет и тухнет и так при следующих нажатиях кнопки. и такая беда с остальными эффектами
pinMode(5, OUTPUT);//Определяем 12-й пин на вход
...
if (knopka=results.value){
Коллеги! Этих перлов недостаточно для того, чтобы не продолжать бессмысленный разговор?
извинеюсь коменты не мои я переделывал пару прог. Но всё все пины мои я их проверял по отдельности все проги работают
спасибо, но не могли ты мне тыкнуть какой кусочек кода мне вставить.
Там, у меня в теме, в том посту ссылка на конструкцию чужую со схемой и кучей вариаций, возьмите самую первую и дерзайте.
А эти я пробывал. Они у меня не хотят компилироваться под nano
По приколу скачал первуюверсию - для нано всё скомпилировалось. У вас библиотеки стоят? (простите за интим).
короче топорным методом но добился я цикла.
void loop() { if (irrecv.decode(&results)) // Если данные пришли { knopka=results.value; Serial.println(knopka, DEC);// Отправляем полученную данную в консоль if (knopka=results.value){ menu(); irrecv.resume(); // Принимаем следующую команду } } menu(); }Ну Вас уже ткнули мордой:
if (knopka=results.value){
Неужели нельзя исправить?
if (knopka==results.value){