Точно, извините.1) Оформить код как код. А то я его точно не буду набивать , что бы просто так потестировать то. что мне не интересно.
#include <GyverEncoder.h>
#include <microLED.h>
#define CLK 4
#define DT 3
#define STRIP_PIN 5
#define NUMLEDS 51
int value;
microLED<NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2812, ORDER_GRB, CLI_AVER> strip;
Encoder test(CLK, DT);
void setup() {
Serial.begin(9600);
strip.setBrightness(100);
pinMode(2, OUTPUT);
digitalWrite(2, HIGH);
test.setType(TYPE2);
test.setPinMode(HIGH_PULL);
strip.clear();
//strip.show();
delay(40);
}
void loop() {
test.tick();
if (test.isTurn()) {
if (test.isRight()) {
Serial.println("clear");
strip.clear();
value++;
strip.set(value, mRGB(0, 0, 255));
//strip.show();
}
if (test.isLeft()) {
Serial.println("clear");
strip.clear();
value--;
strip.set(value, mRGB(0, 255, 0));
//strip.show();
}
}
}
Вы бы разобрались в библиотеке) show это вывод изменений на ленте. Значения value просто изменяются в зависимости от поворота энкодера.Что такое value и чему оно равно ?
Что будет когда value будет меньше 0 ?
Что будет когда value будет больше 50 ?
Почему убрали show ?
А что работает?) Я не жалуюсь, но просто в коде всё написано. Работать будет с закоментированными show, т.к. именно это ломает энкодер. Я это в первом сообщении сказалЯ ? у меня все работает
Не хотите что конкретно я Вам помог ? Ок. А если хотите , то ответьте на вопросы, что я задал. И если я задал такие вопросы, то это не потому, что я что то не знаю, а потому что обращаю Ваше внимание на это
Ну так я же вам ответил, value меняется вместе с прокруткой потенциометра. Не знаю что будет если меньше 0 или больше 50, это уже к библеотеке вопросы, но проблема ведь не в этомЯ бы все же хотел услышать ответы на вопросы. На последний понял, что бы хоть как то работало.
Проблема как раз именно в этомно проблема ведь не в этом
Да, так сделать. Можете показать код?Что такое value ? физический смысл ?
А вопросы не к библиотеке, а к вам, вы же ей пользуетесь. И некорректные данные тоже вы ей подсовываете, компухтер умный , сам должен сообразить.. А так не выходит.
Вы же вот что то типа этого хотели сделать ?
Проблема как раз именно в этом
Нет, проблема не в этом... программа просто зависает после метода show. Дальше не идётВы тот код писали сами ? Тогда Вам под силу будет исправить все самостоятельно, если уж совсем туго будет - покажу.
1-ое что я сделал это вернул show
2- сделал проверку на корректность value она должна быть не менее 0 и не более макс. числа светодиодов-1
Все
нет) она зависает ещё в сетапе, где value абсолютно не используется и просто очищается лентаПотому что вы передаете ей "левое" значение value
киньте свой код, пожалуйста. Иначе не разберёмсяКак проверяете ? Я вас сказал, какие изменения сделал. Это все, больше ничего
#include <GyverEncoder.h>
#include <microLED.h>
#define CLK 4
#define DT 3
#define STRIP_PIN 5
#define NUMLEDS 12
int value;
microLED<NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2812, ORDER_GRB, CLI_AVER> strip;
Encoder test(CLK, DT);
void setup() {
Serial.begin(9600);
strip.setBrightness(100);
pinMode(2, OUTPUT);
digitalWrite(2, HIGH);
test.setType(TYPE2);
test.setPinMode(HIGH_PULL);
strip.clear();
strip.show();
delay(40);
}
void loop() {
test.tick();
if (test.isTurn()) {
if (test.isRight()) {
Serial.println("clear");
strip.clear();
value++;
if (value>11) value=0;
strip.set(value, mRGB(0, 0, 255));
strip.show();
}
if (test.isLeft()) {
Serial.println("clear");
strip.clear();
value--;
if (value<0) value=11;
strip.set(value, mRGB(0, 255, 0));
strip.show();
}
}
}
Что же вы сразу обзываться) у меня ваш код тоже не работает. Объясняю же, система рушится ещё во время сетапа, где ей никакого значения не подаётся. Тогда вы - лицемерА мне не в чем разбираться, я и так знаю, что при попытке ленты отобразить некорректный светодиод система рушиться. Вот код. Это ВАШ код полностью, за исключением 2-х строк. Более Вам объяснять ничего не намерен - Вы лентяй.
C++:#include <GyverEncoder.h> #include <microLED.h> #define CLK 4 #define DT 3 #define STRIP_PIN 5 #define NUMLEDS 12 int value; microLED<NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2812, ORDER_GRB, CLI_AVER> strip; Encoder test(CLK, DT); void setup() { Serial.begin(9600); strip.setBrightness(100); pinMode(2, OUTPUT); digitalWrite(2, HIGH); test.setType(TYPE2); test.setPinMode(HIGH_PULL); strip.clear(); strip.show(); delay(40); } void loop() { test.tick(); if (test.isTurn()) { if (test.isRight()) { Serial.println("clear"); strip.clear(); value++; if (value>11) value=0; strip.set(value, mRGB(0, 0, 255)); strip.show(); } if (test.isLeft()) { Serial.println("clear"); strip.clear(); value--; if (value<0) value=11; strip.set(value, mRGB(0, 255, 0)); strip.show(); } } }
действительно)Похабыч. удивляюсь вашей выдержке....
Я все библиотеки скачивал сегодня, специально) какие у вас версии библеотек?Ок, я лицемер, но тогда вы - криворучка, и что то не так подцепили. Я же видео показал - оно работает. проверяйте части подключения. обновите библиотеки
Пять баксов.киньте свой код, пожалуйста. Иначе не разберёмся