Попробуй сначала сменить пин кнопки на больше 7.Поковырял библиотеку. Глюк происходит в методе sendRaw, там где ассемблерный код идет.
Если закоментить, то клики отрабатывают, но соответственно лента не фурычит, т.к. это самый главный метод.C++:case LED_WS2811: asm volatile ( "LDI r17 ,8 \n\t" // Загружаем в счетчик циклов 8 "_LOOP_START_%=: \n\t" // Начало основного цикла .......
На этом мои полномочия все. С ассемблером не дружу.
Видно придется на FastLed возвращаться.
#define STRIP_PIN 6 // пин ленты
#define NUMLEDS 12 // кол-во светодиодов
//#define COLOR_DEBTH 2
#include <microLED.h> // подключаем библу
microLED < NUMLEDS, STRIP_PIN, -1, LED_WS2812, ORDER_GRB, CLI_AVER > strip;
void setup()
{
strip.setBrightness(75);
pinMode (2, INPUT_PULLUP); //подтянутый к + INPUT, вход 0 - красный, 1 - зеленый.
strip.clear(); // Выключить всю ленту
strip.show();
delay (1000); // Задержка 1сек
}
void loop()
{
if (digitalRead(2) == 0); //Если на входе 0, включить бегущие точки красным
{ static byte count;
count++;
strip.begin();
for (int r = 0; r < NUMLEDS; r++)
{
strip.send(mWheel8(255, count + r * 255 / NUMLEDS));
}
//strip.end();
delay(3);
}
if (digitalRead(2) == 1) //Если на входе 1, включить бегущие точки зеленым
{ static byte count;
count++;
strip.begin();
for (int g = 0; g < NUMLEDS; g++)
{
strip.send(mWheel8(100, count + g * 255 / NUMLEDS));
}
strip.end();
//delay(5);
}
}
Дальше не вникал, ноКод:if (digitalRead(2) == 0); //Если на входе 0, включить бегущие точки красным { static byte count; count++; strip.begin(); for (int r = 0; r < NUMLEDS; r++) { strip.send(mWheel8(255, count + r * 255 / NUMLEDS)); } //strip.end(); delay(3); }
;
после условия надо убрать, иначе у вас следующий блок будет выполняться всегда.Вход подтянут на + программно. Замыкаю его на Gnd...А каким образом подается 0 и 1 ?
Вот спасибо! Заработало!!! Зрение пора апгрейдить....Дальше не вникал, но;
после условия надо убрать, иначе у вас следующий блок будет выполняться всегда.
Подключаться буду к выходу операционника. Пока на кнопке тренируюсь... Еще раз спасибо за подсказку Александру...Т.е. кнопка. Даже при подтянутом + может быть дребезг. Лучше тогда взять библиотеку гайвер-батон, там есть программная защита от дребезга.
так может дело в задержке? delay()Есть ли решение, чтобы и зажигание и угасание сделать плавными?
#define STRIP_PIN 28 // пин ленты
#define NUMLEDS 1 // кол-во светодиодов
#define COLOR_DEBTH 3
#include <microLED.h> // подключаем библу
//microLED<NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2815, ORDER_GRB, CLI_AVER> strip;
microLED *strip;
void setup() {
strip = new microLED(NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2815, ORDER_GRB, CLI_AVER);
strip->setBrightness(255);
}
void loop(){}
Из одного выходит другое. В конечном счёте мне нужно тоже самое - динамически присваивать размер массива.В #36 требовалось не сохранить глобальность, а определить размер в setup, а не жёстко.
Буду ждать, может кто отзовётся. В противном случае пишу на фастЛЕДе всё, если что перейти не сложно.Но как обмануть присвоение я пока тоже не знаю.
enum M_order {
// порядок цвета: r-00, g-01, b-10
ORDER_RGB = 0b000110,
ORDER_RBG = 0b001001,
ORDER_BRG = 0b100001,
ORDER_BGR = 0b100100,
ORDER_GRB = 0b010010,
ORDER_GBR = 0b011000,
};
никак. В текущей версии библиотеки число светодиодов ленты включено в параметры шаблона, поэтому создать указатель на обьект можно только зная заранее правильное число диодов в ленте.как обмануть присвоение я пока тоже не знаю.
#define STRIP_PIN 2 // пин ленты
#define NUMLEDS 96 // кол-во светодиодов
#define COLOR_DEBTH 3
#include <microLED.h> // подключаем библу
microLED< NUMLEDS, STRIP_PIN, -1, LED_WS2812, ORDER_GRB> strip;
void setup() {
strip.set(0, mRGB(255, 0, 0));
strip.show();
}
void loop() {
}