• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

грузится но не воспроизводятся световые эффекты

medved1977

New member
есть готовая прошивка для воспроизведения световых эффектов, есть wemos d1 mini, есть матрица на 200 светодиодов ws2812 на данный момент все работает. но я в готовую прошивку добавил еще еще несколько эффектов. скетч компилируется без ошибок, в плату wemos загружается нормально. но в итоге на плате постоянно горит светодиод, световые эффекты не выводятся на матрицу. если же залить простой скетч типа blink или подобный, то все работает. при попытке загрузить старый скетч (который был изначально) так же перестали выводиться эффекты на матрицу.
прикладываю скетч, он в архиве, сюда его тяжело выложить.
подскажите в чем дело?
 

Вложения

  • 105.9 KB Просмотры: 0

CodeNameHawk

Moderator
Команда форума
Вы видели, как на этом форуме обычно, код выкладывают?
Да и схему приложите.
 

medved1977

New member
схема стандартная, нарисовал как смог. код ниже, но тут только часть кода, поскольку не знаю как выложить код на нескольких вкладках
схема.jpg
#define FASTLED_ESP8266_NODEMCU_PIN_ORDER //Uncomment for ESP-12E Boards
#include "FastLED.h"
#define NUM_LEDS 200
#define DATA_PIN 4
#define BRIGHTNESS 255
CRGB leds[NUM_LEDS];
byte mainarray[8][25][3];
byte a8x25[8][25][3];
int DELAY;
//void DM30();
void setup() {
delay(2000);
FastLED.setBrightness( BRIGHTNESS );
DELAY = 110;
FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);


}

void loop()
{

//DM30
for (int u = 0; u < 3; u++) {
DM30();
pt8x25(0, DELAY);
}
shiftsteps8x25(0, DELAY, 8);
//DM34
for (int u = 0; u < 3; u++) {
DM34();
pt8x25(3, DELAY);
}
shiftsteps8x25(3, DELAY, 25);
//DM29
for (int u = 0; u < 3; u++) {
DM29();
pt8x25(3, DELAY);
}
shiftsteps8x25(3, DELAY, 24);
//DM012
DM012(DELAY, 2);
}

void clearmainarray() {
for (byte z1 = 0; z1 < 8; z1++) {
for (byte z2 = 0; z2 < 25; z2++) {
for (byte z3 = 0; z3 < 3; z3++) {
mainarray[z1][z2][z3] = 0;
}
}
}
}
void cleara8x25() {
for (byte z1 = 0; z1 < 8; z1++) {
for (byte z2 = 0; z2 < 25; z2++) {
for (byte z3 = 0; z3 < 3; z3++) {
a8x25[z1][z2][z3] = 0;
}
}
}
}

void display() {
for (byte qq = 0; qq < 25; qq++) {
if (qq % 2 == 0) {
for (byte q = 0; q < 8; q++) {
leds[q + (qq * 8)] = CRGB(mainarray[q][qq][0], mainarray[q][qq][1], mainarray[q][qq][2]);
}
}
else {
for (byte q = 0; q < 8; q++) {
leds[q + (qq * 8)] = CRGB(mainarray[7 - q][qq][0], mainarray[7 - q][qq][1], mainarray[7 - q][qq][2]);
}
}
}
FastLED.show();
}


void up() {
for (byte i = 0; i < 7; i++) {
for (byte j = 0; j < 25; j++) {
mainarray[j][0] = mainarray[i + 1][j][0];
mainarray[j][1] = mainarray[i + 1][j][1];
mainarray[j][2] = mainarray[i + 1][j][2];
}
}
}
void down() {
for (byte i = 7; i > 0; i++) {
for (byte j = 0; j < 25; j++) {
mainarray[j][0] = mainarray[i - 1][j][0];
mainarray[j][1] = mainarray[i - 1][j][1];
mainarray[j][2] = mainarray[i - 1][j][2];
}
}
}
void moveleft() {
for (byte j = 0; j < 24; j++) {
for (byte i = 0; i < 8; i++) {
mainarray[j][0] = mainarray[j + 1][0];
mainarray[j][1] = mainarray[j + 1][1];
mainarray[j][2] = mainarray[j + 1][2];
}
}
}

void moveright() {
for (byte j = 24; j > 0; j--) {
for (byte i = 0; i < 8; i++) {
mainarray[j][0] = mainarray[j - 1][0];
mainarray[j][1] = mainarray[j - 1][1];
mainarray[j][2] = mainarray[j - 1][2];
}
}
}

void setbottomrow(byte x) {
for (byte i = 0; i < 25; i++) {
mainarray[7][0] = a8x25[x][0];
mainarray[7][1] = a8x25[x][1];
mainarray[7][2] = a8x25[x][2];
}
}

void settoprow(byte x) {
for (byte i = 0; i < 25; i++) {
mainarray[0][0] = a8x25[7 - x][0];
mainarray[0][1] = a8x25[7 - x][1];
mainarray[0][2] = a8x25[7 - x][2];
}
}

void setleftcolumn(byte x) {
for (byte i = 0; i < 8; i++) {
mainarray[0][0] = a8x25[24 - x][0];
mainarray[0][1] = a8x25[24 - x][1];
mainarray[0][2] = a8x25[24 - x][2];
}
}

void setrightcolumn(byte x) {
for (byte i = 0; i < 8; i++) {
mainarray[24][0] = a8x25[x][0];
mainarray[24][1] = a8x25[x][1];
mainarray[24][2] = a8x25[x][2];
}
}


void pt8x25(int d, int sp) {
if (d == 0) {
for (byte hh = 0; hh < 8; hh++) {
setbottomrow(hh);
display();
delay(sp);
up();
}
}
if (d == 1) {
for (byte hh = 0; hh < 8; hh++) {
settoprow(hh);
display();
delay(sp);
down();
}
}
else if (d == 2) {
for (byte hh = 0; hh < 25; hh++) {
setrightcolumn(hh);
display();
delay(sp);
moveleft();
}
}
else if (d == 3) {
for (byte hh = 0; hh < 25; hh++) {
setleftcolumn(hh);
display();
delay(sp);
moveright();
}
}
}


void shiftsteps8x25(int d, int sp, byte steps) {
if (d == 0) {
for (byte i = 0 ; i < 25; i++) {
mainarray[7][0] = 0;
mainarray[7][1] = 0;
mainarray[7][2] = 0;
}
for (byte hh = 0; hh < steps; hh++) {
display();
delay(sp);
up();
}
}
if (d == 1) {
for (byte i = 0 ; i < 25; i++) {
mainarray[0][0] = 0;
mainarray[0][1] = 0;
mainarray[0][2] = 0;
}
for (byte hh = 0; hh < steps; hh++) {
display();
delay(sp);
down();
}
}
else if (d == 2) {
for (byte i = 0; i < 8; i++) {
mainarray[24][0] = 0;
mainarray[24][1] = 0;
mainarray[24][2] = 0;
}
for (byte hh = 0; hh < steps; hh++) {
display();
delay(sp);
moveleft();
}
}
else if (d == 3) {
for (byte i = 0 ; i < 8; i++) {
mainarray[0][0] = 0;
mainarray[0][1] = 0;
mainarray[0][2] = 0;
}
for (byte hh = 0; hh < steps; hh++) {
display();
delay(sp);
moveright();
}
}
}
 

medved1977

New member
и вот еще код, который идет на других вкладках, одна вкладка - один эффект
void DM30() {
cleara8x25();
a8x25[0][0][0] = 255;
a8x25[0][0][1] = 255;
a8x25[0][0][2] = 255;
a8x25[2][0][2] = 255;
a8x25[4][0][0] = 255;
a8x25[4][0][1] = 255;
a8x25[6][0][0] = 255;
a8x25[0][2][2] = 255;
a8x25[2][2][0] = 255;
a8x25[2][2][1] = 255;
a8x25[4][2][0] = 255;
a8x25[6][2][0] = 255;
a8x25[6][2][1] = 255;
a8x25[6][2][2] = 255;
a8x25[0][4][2] = 255;
a8x25[2][4][0] = 255;
a8x25[2][4][1] = 255;
a8x25[4][4][0] = 255;
a8x25[6][4][0] = 255;
a8x25[6][4][1] = 255;
a8x25[6][4][2] = 255;
a8x25[0][6][0] = 255;
a8x25[0][6][1] = 255;
a8x25[0][6][2] = 255;
a8x25[2][6][2] = 255;
a8x25[4][6][0] = 255;
a8x25[4][6][1] = 255;
a8x25[6][6][0] = 255;
a8x25[0][8][2] = 255;
a8x25[2][8][0] = 255;
a8x25[2][8][1] = 255;
a8x25[4][8][0] = 255;
a8x25[6][8][0] = 255;
a8x25[6][8][1] = 255;
a8x25[6][8][2] = 255;
a8x25[0][10][2] = 255;
a8x25[2][10][0] = 255;
a8x25[2][10][1] = 255;
a8x25[4][10][0] = 255;
a8x25[6][10][0] = 255;
a8x25[6][10][1] = 255;
a8x25[6][10][2] = 255;
a8x25[0][12][0] = 255;
a8x25[0][12][1] = 255;
a8x25[0][12][2] = 255;
a8x25[2][12][2] = 255;
a8x25[4][12][0] = 255;
a8x25[4][12][1] = 255;
a8x25[6][12][0] = 255;
a8x25[0][14][2] = 255;
a8x25[2][14][0] = 255;
a8x25[2][14][1] = 255;
a8x25[4][14][0] = 255;
a8x25[6][14][0] = 255;
a8x25[6][14][1] = 255;
a8x25[6][14][2] = 255;
a8x25[0][16][2] = 255;
a8x25[2][16][0] = 255;
a8x25[2][16][1] = 255;
a8x25[4][16][0] = 255;
a8x25[6][16][0] = 255;
a8x25[6][16][1] = 255;
a8x25[6][16][2] = 255;
a8x25[0][18][0] = 255;
a8x25[0][18][1] = 255;
a8x25[0][18][2] = 255;
a8x25[2][18][2] = 255;
a8x25[4][18][0] = 255;
a8x25[4][18][1] = 255;
a8x25[6][18][0] = 255;
a8x25[0][20][2] = 255;
a8x25[2][20][0] = 255;
a8x25[2][20][1] = 255;
a8x25[4][20][0] = 255;
a8x25[6][20][0] = 255;
a8x25[6][20][1] = 255;
a8x25[6][20][2] = 255;
a8x25[0][22][2] = 255;
a8x25[2][22][0] = 255;
a8x25[2][22][1] = 255;
a8x25[4][22][0] = 255;
a8x25[6][22][0] = 255;
a8x25[6][22][1] = 255;
a8x25[6][22][2] = 255;
a8x25[0][24][0] = 255;
a8x25[0][24][1] = 255;
a8x25[0][24][2] = 255;
a8x25[2][24][2] = 255;
a8x25[4][24][0] = 255;
a8x25[4][24][1] = 255;
a8x25[6][24][0] = 255;
a8x25[1][1][2] = 255;
a8x25[3][1][0] = 255;
a8x25[3][1][1] = 255;
a8x25[5][1][0] = 255;
a8x25[7][1][0] = 255;
a8x25[7][1][1] = 255;
a8x25[7][1][2] = 255;
a8x25[0][3][2] = 255;
a8x25[2][3][0] = 255;
a8x25[2][3][1] = 255;
a8x25[4][3][0] = 255;
a8x25[6][3][0] = 255;
a8x25[6][3][1] = 255;
a8x25[6][3][2] = 255;
a8x25[1][5][2] = 255;
a8x25[3][5][0] = 255;
a8x25[3][5][1] = 255;
a8x25[5][5][0] = 255;
a8x25[7][5][0] = 255;
a8x25[7][5][1] = 255;
a8x25[7][5][2] = 255;
a8x25[1][7][2] = 255;
a8x25[3][7][0] = 255;
a8x25[3][7][1] = 255;
a8x25[5][7][0] = 255;
a8x25[7][7][0] = 255;
a8x25[7][7][1] = 255;
a8x25[7][7][2] = 255;
a8x25[0][9][2] = 255;
a8x25[2][9][0] = 255;
a8x25[2][9][1] = 255;
a8x25[4][9][0] = 255;
a8x25[6][9][0] = 255;
a8x25[6][9][1] = 255;
a8x25[6][9][2] = 255;
a8x25[1][11][2] = 255;
a8x25[3][11][0] = 255;
a8x25[3][11][1] = 255;
a8x25[5][11][0] = 255;
a8x25[7][11][0] = 255;
a8x25[7][11][1] = 255;
a8x25[7][11][2] = 255;
a8x25[1][13][2] = 255;
a8x25[3][13][0] = 255;
a8x25[3][13][1] = 255;
a8x25[5][13][0] = 255;
a8x25[7][13][0] = 255;
a8x25[7][13][1] = 255;
a8x25[7][13][2] = 255;
a8x25[0][15][2] = 255;
a8x25[2][15][0] = 255;
a8x25[2][15][1] = 255;
a8x25[4][15][0] = 255;
a8x25[6][15][0] = 255;
a8x25[6][15][1] = 255;
a8x25[6][15][2] = 255;
a8x25[1][17][2] = 255;
a8x25[3][17][0] = 255;
a8x25[3][17][1] = 255;
a8x25[5][17][0] = 255;
a8x25[7][17][0] = 255;
a8x25[7][17][1] = 255;
a8x25[7][17][2] = 255;
a8x25[1][19][2] = 255;
a8x25[3][19][0] = 255;
a8x25[3][19][1] = 255;
a8x25[5][19][0] = 255;
a8x25[7][19][0] = 255;
a8x25[7][19][1] = 255;
a8x25[7][19][2] = 255;
a8x25[0][21][2] = 255;
a8x25[2][21][0] = 255;
a8x25[2][21][1] = 255;
a8x25[4][21][0] = 255;
a8x25[6][21][0] = 255;
a8x25[6][21][1] = 255;
a8x25[6][21][2] = 255;
a8x25[1][23][2] = 255;
a8x25[3][23][0] = 255;
a8x25[3][23][1] = 255;
a8x25[5][23][0] = 255;
a8x25[7][23][0] = 255;
a8x25[7][23][1] = 255;
a8x25[7][23][2] = 255;
}
 

CodeNameHawk

Moderator
Команда форума
Для определения, что мешает работать, питание на есп, подайте от отдельного источника питания.
На вскидку не определить, сколько времени программа находится в цикле, нет ли перегрузки есп.
Возле каждого эффекта добавьте delay(1);
Вывод в сериал millis() возле каждого эффекта покажет сколько времени что занимает.

У многих не работает лента от 3.3в, поэтому подключают через один диод.
https://hackaday.com/2017/01/20/cheating-at-5v-ws2812-control-to-use-a-3-3v-data-line/
https://www.google.com/imgres?imgur...=0CBUQxiAoA2oXChMI0KDam_PD7gIVAAAAAB0AAAAAEAI
 
Сверху Снизу