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

24.09.2018
6
9
3
#1
Сделал похожий проект, но главной идеей моего проекта был журнальный стол со столешницей из светодиодной матрицы 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-ой модуль ставить, либо переходить на вай фай модуль. Сейчас думаю над этим вопросов, заказал вайфай модуль для тестов. А Алексу, отдельное спасибо за качественный контент.
 
13.11.2018
58
11
8
#2
Сделал похожий проект, но главной идеей моего проекта был журнальный стол
И у меня есть стол, 12*12, тоже стоит ждет своего часа)
Как я предлагал, добавить возможность проигрывания анимаций, сделанных в программах JIXN и Glediator с внешней микросд карты.
Скетчи для работы с файлами есть (Переключение файлов анимаций по прерыванию)

Код:
#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;
}
 
Последнее редактирование:
25.10.2018
121
10
18
#4
Тоже зависло в разработке матрица 16*16. Проект две матрицы = надкроватный светильник-часы.
Думал насчет управления по синему зубу, понял что не очень удобно будет, когда на смартфоне уже висит управление основным светом. Решил сделать управление по ИК пульту.
Так же понял что для эффектов гледиатор не подойдёт постоянное подключение к ПК и куча проводов, не есть интересно. Да и постоянно на ПК крутить программу полная чушь. Лучше писать самому.
Из самого простого нашел такой алгоритм. Берем гифку => жмем до размера 16*16 => конвертируем этим гифку в код.

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

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

И да, если есть у кого толковый совет, из чего и как лучше сделать перегородки для матрицы (имею ввиду чтоб отделить светодиоды друг от друга) чтоб это не выглядело как говно, буду очень признателен!
 
13.11.2018
58
11
8
#5
И да, если есть у кого толковый совет, из чего и как лучше сделать перегородки для матрицы (имею ввиду чтоб отделить светодиоды друг от друга) чтоб это не выглядело как говно, буду очень признателен!
Для стола делал из ДСП, резал лазером решетку с пазами, вставляется друг в друга. Для малой матрицы фрезерованы отверстия на 16мм фанере
 
25.10.2018
121
10
18
#6
Для стола делал из ДСП, резал лазером решетку с пазами, вставляется друг в друга. Для малой матрицы фрезерованы отверстия на 16мм фанере
Дорого лазерная резка вышла? Мне как ценник выставили, так я сразу решил отказаться и думать в сторону "Петровича с лобзиком"
 
13.11.2018
58
11
8
#7
Дорого лазерная резка вышла? Мне как ценник выставили, так я сразу решил отказаться и думать в сторону "Петровича с лобзиком"
примерно 0,15$ за метр реза берут 3мм ДСП. Мне проще, у товарища есть лазер на 50Ватт. ) А фрезер у меня свой....
IMG_20181114_195702.jpg IMG_20181114_232103.jpg IMG_20181114_232757.jpg
 
25.10.2018
121
10
18
#8
примерно 0,15$ за метр реза берут 3мм ДСП. Мне проще, у товарища есть лазер на 50Ватт. ) А фрезер у меня свой....
Посмотреть вложение 1215 Посмотреть вложение 1216 Посмотреть вложение 1217
Может договоримся тогда, я тебе деньги перекину а ты мне почтой вышлешь )
 
24.09.2018
6
9
3
#9
И да, если есть у кого толковый совет, из чего и как лучше сделать перегородки для матрицы (имею ввиду чтоб отделить светодиоды друг от друга) чтоб это не выглядело как говно, буду очень признателен!
Я сделал их из ДВП и покрасил в белый цвет, в конце концов получилось неплохо, но гемора с ДВП было много, много пыли при обработке, плохо красится, плохо пилится, если несколько штук сразу пропиливать. Но у меня был лист и чтоб не тратиться на какой то другой материал выбрал ДВП.

IMG_20170501_150422.jpg IMG_20170501_174955.jpg IMG_20170512_151412.jpg
 
24.09.2018
6
9
3
#11
@npo6ka, А из чего сделан корпус?

Что пластик понятно, а что это, это контейнер, кубики склеенные, или самопал из пластика?
Это обычное оргстекло обработанное шкуркой. Склеил китайскими соплями, и вроде результат получился неплохой. Конечно я не запаривался как Алекс с черным цветом, поэтому цвета бледные когда в помещении светло, но меня вполне устраивает.
 
Последнее редактирование:
#12
Предложение.
Alex, добавь фоторезистор + силовой транзистор (для разрыва питания ленты). Результат - днем все отключено, ночью все работает. Для калибровки можно ише добавить потенциметр, чтоб отрегулировать чуствительность на лету. Ну или добавь модуль освещенности за 2$ в паре с транзистором (наверно так и сделаю чтоб в прошивку не лазить :)) Могу сделать и сам, но проблема что такую большую прошивку тяжело редактировать - можно легко напартачить.
 
#13
Скетч хорошо (ну почти) работает на 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.

зы: Под словами "ну почти" имел ввиду что не работаю игры и есть проблема с режимами.
Если решите раньше меня, то напиши сюда. (А то работа и все такое).
 
Последнее редактирование:
Симпатии: Понравилось MarB
02.12.2018
1
0
1
#14
Доброго времени суток.Заметил проблему в компиляции v1.6 при вкл опции Bluetooth ,в v 1.5 все работает.
Заранее благодарен.
 
05.12.2018
5
0
1
#15
Скетч хорошо (ну почти) работает на 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 и новый Год близко. Пока паяю матрицу
 
Последнее редактирование:
#16
Собрал этот проект, но есть интересная идея. Думаю добавить сюда Цветомузыку (убрать игры и некоторые эффекты для экономии памяти). Звук подавать либо по блютуз (аля блютуз колонка), либо с аудио джека. Взять за основу один из предыдущих проектов Гайвера (логично, цветомузыка). Но совместить две программы в одну опыта в кодинге не хватает. Как вариант одного из эффектов: по краям матрицы появляется анимированное свечение четырех основньх цветов гугла (синий, красный, желтый, зеленый), размер каждого свечения зависит от громкости соответствующих частот звукового спектра. В центре матрицы белое (или радужное) свечение пульсирующее в ритм музыке. Я понимаю, что это не очень то и сложно, но не понимаю, как должен работать алгоритм цветомузыки в этом случае.
P.S. Видео как я это вижу (стащил у гугла):
 
05.12.2018
5
0
1
#17
Прошу помощи. что сделал не так? Прошивается esp8266 нормально но с ошибкой. При включении на матрице горит первый светодиод 2812b и ничего не происходит
 

Вложения

05.12.2018
5
0
1
#19
А что за надписи перед процессом прошивки, и почему горит один светодиод.
А если матрица не полностью собрана, может повлиять на работу?