ARDUINO Не работает GyverEncoder с microLED

lrmblood

✩✩✩✩✩✩✩
11 Фев 2019
20
0
Приветствую! Столкнулся с проблемой, при попытке использования microLED с энкодером, второй перестаёт работать. На скриншоте закоментирован вывод на ленту,
без него работает нормально. Подскажите что делать, пожалуйста

1607613629119.png
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,198
1,283
Москва
1) Оформить код как код. А то я его точно не буду набивать , что бы просто так потестировать то. что мне не интересно.
 
  • Лойс +1
Реакции: lrmblood

lrmblood

✩✩✩✩✩✩✩
11 Фев 2019
20
0
1) Оформить код как код. А то я его точно не буду набивать , что бы просто так потестировать то. что мне не интересно.
Точно, извините.

encoder_microLED:
#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();
    }
  }
}
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,198
1,283
Москва
Что такое value и чему оно равно ?
Что будет когда value будет меньше 0 ?
Что будет когда value будет больше 50 ?
Почему убрали show ?
 

lrmblood

✩✩✩✩✩✩✩
11 Фев 2019
20
0
Что такое value и чему оно равно ?
Что будет когда value будет меньше 0 ?
Что будет когда value будет больше 50 ?
Почему убрали show ?
Вы бы разобрались в библиотеке) show это вывод изменений на ленте. Значения value просто изменяются в зависимости от поворота энкодера.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,198
1,283
Москва
Я ? у меня все работает :D
Не хотите что конкретно я Вам помог ? Ок. А если хотите , то ответьте на вопросы, что я задал. И если я задал такие вопросы, то это не потому, что я что то не знаю, а потому что обращаю Ваше внимание на это
 

lrmblood

✩✩✩✩✩✩✩
11 Фев 2019
20
0
Я ? у меня все работает :D
Не хотите что конкретно я Вам помог ? Ок. А если хотите , то ответьте на вопросы, что я задал. И если я задал такие вопросы, то это не потому, что я что то не знаю, а потому что обращаю Ваше внимание на это
А что работает?) Я не жалуюсь, но просто в коде всё написано. Работать будет с закоментированными show, т.к. именно это ломает энкодер. Я это в первом сообщении сказал
 

lrmblood

✩✩✩✩✩✩✩
11 Фев 2019
20
0
Я бы все же хотел услышать ответы на вопросы. На последний понял, что бы хоть как то работало.
Ну так я же вам ответил, value меняется вместе с прокруткой потенциометра. Не знаю что будет если меньше 0 или больше 50, это уже к библеотеке вопросы, но проблема ведь не в этом
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,198
1,283
Москва
Что такое value ? физический смысл ?
А вопросы не к библиотеке, а к вам, вы же ей пользуетесь. И некорректные данные тоже вы ей подсовываете, компухтер умный , сам должен сообразить.. А так не выходит.
Вы же вот что то типа этого хотели сделать ?
но проблема ведь не в этом
Проблема как раз именно в этом
 
  • Лойс +1
Реакции: ТехнарьКто

lrmblood

✩✩✩✩✩✩✩
11 Фев 2019
20
0
Что такое value ? физический смысл ?
А вопросы не к библиотеке, а к вам, вы же ей пользуетесь. И некорректные данные тоже вы ей подсовываете, компухтер умный , сам должен сообразить.. А так не выходит.
Вы же вот что то типа этого хотели сделать ?

Проблема как раз именно в этом
Да, так сделать. Можете показать код?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,198
1,283
Москва
Вы тот код писали сами ? Тогда Вам под силу будет исправить все самостоятельно, если уж совсем туго будет - покажу.
1-ое что я сделал это вернул show
2- сделал проверку на корректность value она должна быть не менее 0 и не более макс. числа светодиодов-1
Все
 
  • Лойс +1
Реакции: ТехнарьКто

lrmblood

✩✩✩✩✩✩✩
11 Фев 2019
20
0
Вы тот код писали сами ? Тогда Вам под силу будет исправить все самостоятельно, если уж совсем туго будет - покажу.
1-ое что я сделал это вернул show
2- сделал проверку на корректность value она должна быть не менее 0 и не более макс. числа светодиодов-1
Все
Нет, проблема не в этом... программа просто зависает после метода show. Дальше не идёт
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,198
1,283
Москва
А мне не в чем разбираться, я и так знаю, что при попытке ленты отобразить некорректный светодиод система рушиться. Вот код. Это ВАШ код полностью, за исключением 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();
    }
  }
}
 
  • Лойс +1
Реакции: Roden

lrmblood

✩✩✩✩✩✩✩
11 Фев 2019
20
0
А мне не в чем разбираться, я и так знаю, что при попытке ленты отобразить некорректный светодиод система рушиться. Вот код. Это ВАШ код полностью, за исключением 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();
    }
  }
}
Что же вы сразу обзываться) у меня ваш код тоже не работает. Объясняю же, система рушится ещё во время сетапа, где ей никакого значения не подаётся. Тогда вы - лицемер
 

lrmblood

✩✩✩✩✩✩✩
11 Фев 2019
20
0
Ок, я лицемер, но тогда вы - криворучка, и что то не так подцепили. Я же видео показал - оно работает. проверяйте части подключения. обновите библиотеки
Я все библиотеки скачивал сегодня, специально) какие у вас версии библеотек?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,198
1,283
Москва
Микролед скачал специально что бы эту вашу проверить программу. вот сегодня вечером.
name=GyverEncoder
version=4.3

Показывайте фото как что куда подключили