ARDUINO Bluetooth матрица. Обсуждение проекта

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
Ветка обсуждения проекта Bluetooth матрица
Страница проекта на AlexGyver.ru: https://alexgyver.ru/gyvermatrixbt/
Видео:

В этой ветке решаем вопросы по реализации данного проекта.
Готовые реализации с фото/видео/улучшениями выкладываем сюда.
Если у вас возникла идея как можно улучшить проект и вы уверены что кто-то немедленно должен заняться её реализацией, попробуйте поискать исполнителя здесь.
ВНИМАНИЕ! Если у вас не компилируется или не загружается скетч, то вы наверняка совершили одну из типовых ошибок, которые неоднократно разобраны здесь:
Читайте эти темы, там уже есть ответы. Здесь подобные вопросы считаются оффтопом и молча удаляются.
 

npo6ka

★✩✩✩✩✩✩
25 Сен 2018
11
17
Сделал похожий проект, но главной идеей моего проекта был журнальный стол со столешницей из светодиодной матрицы 10 на 10. В итоге стол был сделан, но вот прошивка находиться в бесконечной разработке. Хочется наделать туда много интересных режимов(в виде заранее запрограммированных анимаций) и игр. Однако идей оказалось столько много, что всё просто не уместить в ардуину. Поэтому я подумал, может завести отдельный репозиторий на гите, где можно было бы собирать все режимы и игры с неким описанием. Основной смысл этого в том, что человек заходит на гит, смотрит по описанию какие режимы/игры ему нравятся и включает их в свой проект. Так же можно помочь другим внести какие то исправления/изменения/улучшения в эти режимы/игры. На данный момент я находил много различных репозиториев, в которых брал по несколько интересных режимов, однако режимы там представляли собой кота в мешке, никогда не знаешь что это за режим, есть ли он уже у тебя и нужен ли он тебе вообще. В общем такие поиски очень утомительны и если мою идею подержат хотя бы несколько человек, то можно заниматься репозиторием. На данный момент сделал простой эмулятор матрицы и отлаживаю режимы и игры на компе и уже после переношу их на ардуину (если интересна тема с эмулятором, могу подробнее описать).

Ну и пару видео моего стола и пара режимов оттуда:
https://photos.app.goo.gl/nzufn9x8Ztp2H4vt9
https://photos.app.goo.gl/GYCsDf85ZFzN8QiY8
https://photos.app.goo.gl/CjxKQm35NbPDxULK8
https://photos.app.goo.gl/PBMG1hgaWZEnU4SN7

После ролика Алекса вдохновился идеей сделать управление через смартфон, но блютуз модуль не очень подходит для игры в 2-ём. Тот же самый пинг понг с 1 модулем уже сделать трудно, нужно либо 2-ой модуль ставить, либо переходить на вай фай модуль. Сейчас думаю над этим вопросов, заказал вайфай модуль для тестов. А Алексу, отдельное спасибо за качественный контент.
 
  • Лойс +1
Реакции: yakovsergei

KennyUA

★✩✩✩✩✩✩
13 Ноя 2018
59
18
Сделал похожий проект, но главной идеей моего проекта был журнальный стол
И у меня есть стол, 12*12, тоже стоит ждет своего часа)
Как я предлагал, добавить возможность проигрывания анимаций, сделанных в программах JIXN и Glediator с внешней микросд карты.
Скетчи для работы с файлами есть (Переключение файлов анимаций по прерыванию)

C++:
#include <FastLED.h>
#include <SPI.h>
#include <SD.h>
#include <EEPROM.h>

#define NUM_LEDS 144 // LED number
#define DATA_PIN 15 // your data arduino pin
#define CHIPSET WS2812 // your LED chip type
#define CMD_NEW_DATA 1
//#define BAUD_RATE 500000 //if using Glediator via serial
unsigned char x = 12; // matrix x size
unsigned char y = 12; // matrix y size
const int buttonPin = 2;
int buttonState = 0;
int file=0;

File fxdata;
CRGB leds[NUM_LEDS];

void setup()
{

FastLED.addLeds<CHIPSET, DATA_PIN, GRB>(leds, NUM_LEDS); //see doc for different LED strips
// Serial.begin(BAUD_RATE); // when using Glediator via usb
// FastLED.setMaxPowerInVoltsAndMilliamps(5,1500);
FastLED.setBrightness(150);
Serial.begin(115200);
pinMode(buttonPin, INPUT);
attachInterrupt(1, pin_ISR, RISING);
for(int y = 0 ; y < NUM_LEDS ; y++)
{
leds[y] = CRGB::Black; // set all leds to black during setup
}
FastLED.show();

pinMode(8, OUTPUT); // CS/SS pin as output for SD library to work.
digitalWrite(8, HIGH); // workaround for sdcard failed error...
delay(200);
if (!SD.begin(8))
{
Serial.println("sdcard initialization failed!");
return;
}
Serial.println("sdcard initialization done.");

// test file open
fxdata = SD.open("1.dat"); // read only
if (fxdata)
{
Serial.println("file open ok");
fxdata.close();
}
}


void pin_ISR() {

static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
// If interrupts come faster than 200ms, assume it's a bounce and ignore
if (interrupt_time - last_interrupt_time > 200)
{
buttonState = digitalRead(buttonPin);
fxdata.close();
file++;
Serial.println("interrupt");
delay(20);

if(file==4) file=1;
EEPROM.write(0,file);
Serial.println(file);
}
last_interrupt_time = interrupt_time;
}


int serialGlediator ()
{
while (!Serial.available()) {}
return Serial.read();
}

void loop()
{

// uncomment for Glediator
//while (fileGlediator () != CMD_NEW_DATA) {}
//Serial.readBytes((char*)leds, NUM_LEDS*3);

switch (EEPROM.read(0))
{
case 0:
fxdata = SD.open("0.dat"); // read only
if (fxdata)
{
Serial.println("file 0 open ok");
}
break;
case 1:
fxdata = SD.open("1.dat"); // read only
if (fxdata)
{
Serial.println("file 1 open ok");
}
break;
case 2:
fxdata = SD.open("2.dat"); // read only
if (fxdata)
{
Serial.println("file 2 open ok");
}
break;
case 3:
fxdata = SD.open("3.dat"); // read only
if (fxdata)
{
Serial.println("file 3 open ok");
}
break;
case 4:
fxdata = SD.open("4.dat"); // read only
if (fxdata)
{
Serial.println("file 4 open ok");
}
break;
case 5:
fxdata = SD.open("5.dat"); // read only
if (fxdata)
{
Serial.println("file 5 open ok");
}
break;
case 6:
fxdata = SD.open("6.dat"); // read only
if (fxdata)
{
Serial.println("file 6 open ok");
}
break;
}
while (fxdata.available())
{
fxdata.readBytes((char*)leds, NUM_LEDS*3);
ledSort(2); //1-4 possible, set your first LED's position. Change the number: 1=TL(top left),2=TR(top right),3=BL(bottom left),4=BR(bottom right)
FastLED.show();
delay(20); // set the speed of the animation. 20 is appx ~ 500k bauds
}

// close the file in order to prevent hanging IO or similar throughout time
fxdata.close();
}

int ledSort (int modus) { //1=TL,2=TR,3=BL,4=BR, this function will rearrange the led array ;-)
CRGB tmp[x];
if(modus == 3 || modus == 4) {

for(int i = 0; i < (y / 2);i++) {
for(int j = 0; j < x;j++) {
tmp[j] = leds[i * x + j];
leds[i * x] = leds[(y - i - 1) * x];
leds[(y - i - 1) * x] = tmp[j];
}
}
}

if(modus == 1 || modus == 3) {
for(int i = 1; i < y; i = i + 2) {
for(int j = x; j > 0;j--) {
tmp[(x - j)] = leds[i * x + j - 1];
}
for(int j = 0; j < x;j++) {
leds[i * x + j] = tmp[j];
}
}

}


if(modus == 2 | modus == 4) {
for(int i = 0; i < y; i = i + 2) {
for(int j = x; j > 0;j--) {
tmp[(x - j)] = leds[i * x + j - 1];
}
for(int j = 0; j < x;j++) {
leds[i * x + j] = tmp[j];
}
}

}
return 1;
}
 
Изменено:

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
Тоже зависло в разработке матрица 16*16. Проект две матрицы = надкроватный светильник-часы.
Думал насчет управления по синему зубу, понял что не очень удобно будет, когда на смартфоне уже висит управление основным светом. Решил сделать управление по ИК пульту.
Так же понял что для эффектов гледиатор не подойдёт постоянное подключение к ПК и куча проводов, не есть интересно. Да и постоянно на ПК крутить программу полная чушь. Лучше писать самому.
Из самого простого нашел такой алгоритм. Берем гифку => жмем до размера 16*16 => конвертируем этим гифку в код.

Кстати, интересный эффект горящего огня в гайверовском проекте. Но очень не хватает комментариев в коде эффекта.

После ролика Алекса вдохновился идеей сделать управление через смартфон, но блютуз модуль не очень подходит для игры в 2-ём.
в твоём случае я бы лучше реализовал идею управления игрой в понг так как в этом видео.

И да, если есть у кого толковый совет, из чего и как лучше сделать перегородки для матрицы (имею ввиду чтоб отделить светодиоды друг от друга) чтоб это не выглядело как говно, буду очень признателен!
 

KennyUA

★✩✩✩✩✩✩
13 Ноя 2018
59
18
И да, если есть у кого толковый совет, из чего и как лучше сделать перегородки для матрицы (имею ввиду чтоб отделить светодиоды друг от друга) чтоб это не выглядело как говно, буду очень признателен!
Для стола делал из ДСП, резал лазером решетку с пазами, вставляется друг в друга. Для малой матрицы фрезерованы отверстия на 16мм фанере
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
Для стола делал из ДСП, резал лазером решетку с пазами, вставляется друг в друга. Для малой матрицы фрезерованы отверстия на 16мм фанере
Дорого лазерная резка вышла? Мне как ценник выставили, так я сразу решил отказаться и думать в сторону "Петровича с лобзиком"
 

KennyUA

★✩✩✩✩✩✩
13 Ноя 2018
59
18
Дорого лазерная резка вышла? Мне как ценник выставили, так я сразу решил отказаться и думать в сторону "Петровича с лобзиком"
примерно 0,15$ за метр реза берут 3мм ДСП. Мне проще, у товарища есть лазер на 50Ватт. ) А фрезер у меня свой....
IMG_20181114_195702.jpg IMG_20181114_232103.jpg IMG_20181114_232757.jpg
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
примерно 0,15$ за метр реза берут 3мм ДСП. Мне проще, у товарища есть лазер на 50Ватт. ) А фрезер у меня свой....
Посмотреть вложение 1215Посмотреть вложение 1216Посмотреть вложение 1217
Может договоримся тогда, я тебе деньги перекину а ты мне почтой вышлешь )
 

npo6ka

★✩✩✩✩✩✩
25 Сен 2018
11
17
И да, если есть у кого толковый совет, из чего и как лучше сделать перегородки для матрицы (имею ввиду чтоб отделить светодиоды друг от друга) чтоб это не выглядело как говно, буду очень признателен!
Я сделал их из ДВП и покрасил в белый цвет, в конце концов получилось неплохо, но гемора с ДВП было много, много пыли при обработке, плохо красится, плохо пилится, если несколько штук сразу пропиливать. Но у меня был лист и чтоб не тратиться на какой то другой материал выбрал ДВП.

IMG_20170501_150422.jpgIMG_20170501_174955.jpgIMG_20170512_151412.jpg
 

npo6ka

★✩✩✩✩✩✩
25 Сен 2018
11
17
@npo6ka, А из чего сделан корпус?

Что пластик понятно, а что это, это контейнер, кубики склеенные, или самопал из пластика?
Это обычное оргстекло обработанное шкуркой. Склеил китайскими соплями, и вроде результат получился неплохой. Конечно я не запаривался как Алекс с черным цветом, поэтому цвета бледные когда в помещении светло, но меня вполне устраивает.
 
Изменено:

Дикий Гусь

✩✩✩✩✩✩✩
1 Дек 2018
1
0
Предложение.
Alex, добавь фоторезистор + силовой транзистор (для разрыва питания ленты). Результат - днем все отключено, ночью все работает. Для калибровки можно ише добавить потенциметр, чтоб отрегулировать чуствительность на лету. Ну или добавь модуль освещенности за 2$ в паре с транзистором (наверно так и сделаю чтоб в прошивку не лазить :)) Могу сделать и сам, но проблема что такую большую прошивку тяжело редактировать - можно легко напартачить.
 

VktrSansara

✩✩✩✩✩✩✩
1 Дек 2018
6
1
Новомосковск
Скетч хорошо (ну почти) работает на esp8266 выставите дефолтные значения игр и блютус в "0", там сами поймете (boolean/true/false/1/0).
- Так же пин ленты поставьте на GPIO0 или GPIO2 (Это я по привычке).



// ****************** ПИНЫ ПОДКЛЮЧЕНИЯ *******************
#define LED_PIN 2 // пин ленты (если не знаете какой это, то метод научного тыка в помощь, пинов D на MCU не так много :sneaky: и не бойтесь не "убьете" плату)
#define BUTT_UP 3 // кнопка вверх
#define BUTT_DOWN 5 // кнопка вниз

// #define BUTT_LEFT 2 // кнопка влево (! #define USE_BUTTONS 0 // использовать физические кнопки управления играми (0 нет, 1 да) то если LED_PIN 2 то и BUTT_LEFT 2 )
#define BUTT_RIGHT 4 // кнопка вправо

// ************** ОТКЛЮЧЕНИЕ КОМПОНЕНТОВ СИСТЕМЫ (для экономии памяти) *************
#define USE_BUTTONS 0 // использовать физические кнопки управления играми (0 нет, 1 да)

#define BT_MODE 0 // использовать блютус (0 нет, 1 да)
#define USE_FONTS 1 // использовать буквы (бегущая строка) (0 нет, 1 да)
#define USE_TETRIS 0 // тетрис (0 нет, 1 да)
#define USE_SNAKE 0 // змейка (0 нет, 1 да)

#define USE_MAZE 0 // лабиринт (0 нет, 1 да)



Демо режим прошел на ура, сейчас делаю под wifi управление.
https://vk.com/video37200184_456240183
- Простите за качество, получилось то что получилось, снимал на работе))

Пробовал что бы проверить работоспособность на esp.

зы: Под словами "ну почти" имел ввиду что не работаю игры и есть проблема с режимами.
Если решите раньше меня, то напиши сюда. (А то работа и все такое).
 
Изменено:
  • Лойс +1
Реакции: MarB

sgrock

✩✩✩✩✩✩✩
2 Дек 2018
1
0
Доброго времени суток.Заметил проблему в компиляции v1.6 при вкл опции Bluetooth ,в v 1.5 все работает.
Заранее благодарен.
 

MarB

✩✩✩✩✩✩✩
5 Дек 2018
6
0
Скетч хорошо (ну почти) работает на esp8266 выставите дефолтные значения игр и блютус в "0", там сами поймете (boolean/true/false/1/0).
- Так же пин ленты поставьте на GPIO0 или GPIO2 (Это я по привычке).



// ****************** ПИНЫ ПОДКЛЮЧЕНИЯ *******************
#define LED_PIN 2 // пин ленты (если не знаете какой это, то метод научного тыка в помощь, пинов D на MCU не так много :sneaky: и не бойтесь не "убьете" плату)
#define BUTT_UP 3 // кнопка вверх
#define BUTT_DOWN 5 // кнопка вниз

// #define BUTT_LEFT 2 // кнопка влево (! #define USE_BUTTONS 0 // использовать физические кнопки управления играми (0 нет, 1 да) то если LED_PIN 2 то и BUTT_LEFT 2 )
#define BUTT_RIGHT 4 // кнопка вправо

// ************** ОТКЛЮЧЕНИЕ КОМПОНЕНТОВ СИСТЕМЫ (для экономии памяти) *************
#define USE_BUTTONS 0 // использовать физические кнопки управления играми (0 нет, 1 да)

#define BT_MODE 0 // использовать блютус (0 нет, 1 да)
#define USE_FONTS 1 // использовать буквы (бегущая строка) (0 нет, 1 да)
#define USE_TETRIS 0 // тетрис (0 нет, 1 да)
#define USE_SNAKE 0 // змейка (0 нет, 1 да)

#define USE_MAZE 0 // лабиринт (0 нет, 1 да)



Демо режим прошел на ура, сейчас делаю под wifi управление.
https://vk.com/video37200184_456240183
- Простите за качество, получилось то что получилось, снимал на работе))

Пробовал что бы проверить работоспособность на esp.

зы: Под словами "ну почти" имел ввиду что не работаю игры и есть проблема с режимами.
Если решите раньше меня, то напиши сюда. (А то работа и все такое).
Жду с не терпением, а то есть ESPка и 100 шт 2812 и новый Год близко. Пока паяю матрицу
 
Изменено:

MarB

✩✩✩✩✩✩✩
5 Дек 2018
6
0
Прошу помощи. что сделал не так? Прошивается esp8266 нормально но с ошибкой. При включении на матрице горит первый светодиод 2812b и ничего не происходит
 

Вложения

MarB

✩✩✩✩✩✩✩
5 Дек 2018
6
0
А что за надписи перед процессом прошивки, и почему горит один светодиод.
А если матрица не полностью собрана, может повлиять на работу?
 

KidStarter

✩✩✩✩✩✩✩
17 Ноя 2018
1
0
Кто-Нибудь знает Arduino Mega потянет матрицу на 32Х32 светодиода? Может кто-нибудь пытался сделать такое?