ЧАСТЬ ТРЕТЬЯ
Подключение модуля Matrix 8*8 LED + MAX7219
Время бежит. До нового года осталось менее месяца. Обещанная ребенку гирлянда "круче чем у всех" еще только в моей голове.
Для удобства настройки и отладки взял два модуля, состоящие из LED Matrix 8x8 и драйвера MAX7219
Фото с интернета имеет подвох. В модуле матрица вставлена не правильно.
Модуль имеет следующую схему:
Два модуля подключаются так
Первый модуль правый. Второй левый.
Долгий подбор библиотеки подходящий для моих целей и вот промежуточный результат. Ссылка, если видео не работает
Для удобства настройки и отладки взял два модуля, состоящие из LED Matrix 8x8 и драйвера MAX7219
Фото с интернета имеет подвох. В модуле матрица вставлена не правильно.
Модуль имеет следующую схему:
Два модуля подключаются так
Первый модуль правый. Второй левый.
Долгий подбор библиотеки подходящий для моих целей и вот промежуточный результат. Ссылка, если видео не работает
Для реализации данного способа подключения потребуется:
· 1 * ARDUINO (от 300 до 950 руб)
· 2 * Модуль MAX7219 Matrix 8*8 (200 руб)
· 1 * перемычка МАМА-МАМА (2.50 руб за 1 шт)
· 8 * перемычка ПАПА-ПАПА (100 руб за набор из 32 штук)
Цены взяты с сайта МОЛОТОК.РУ
Библиотека MaxMatrix.
Основные функции которые я использовал:
MaxMatrix m(dataIn, load, clock, maxInUse); m.Init();
Описание подключения и количество модулей
m.setIntensity(value)
Яркость 0-15, где 15 максимум, а 0 тусклое свечение (как на видео)
m.writeSprite(x, y, sprite)
Печать спрайта (картинки, которая описана в программе) с позиции x,y. Значение 0,0 верхний левый угол на фото, можно печатать за пределами матрицы. Например, берем спрайт (картинку) размером 32 на 8 точек печатаем ее с позиции -16,0 в этом случае мы увидим только правую половинку спрайта. А сдвинув его 16 раз в право (см.ниже) увидим левую половину
m.shiftLeft(true);
Left, Right, Up, Down соответственно сдвиг напечатанного спрайта влево, вправо, вверх, вниз на один пиксель. С параметром false подтирается хвост. С параметром true при сдвиге вправо левая колонка спрайта будет оставаться на матрице. Если в этой колонке есть пиксели, они составят хвост
byte CH_A[] = {4, 8, B11111110, B00010001, B00010001, B11111110 };
Для примера описание спрайта размером в высоту 8, в ширину 4.
На спрайте изображена буква А
**
* *
* *
* *
***
* *
* *
* *
m.writeSprite(0, 0, CH_A);
Печатаем его в позиции 0,0 и получаем результат
На основе этого собираюсь спаять гирлянду на окно. Уже купил 128 светодиодов, 4 метра кабеля (4 витых пары) и 3 м термоусадочной трубки диаметром 3мм (хотел 2мм, но не нашел)
Скетч из видео.
ALEN Studio by Little_Red_Rat
// http://littleredrat.blogspot.ru/#include <MaxMatrix.h>
// создаем спрайт снежинки
byte snowstar[] = {
9, 8, B00000000, B01001001, B00101010, B00010100, B01101011, B00010100, B00101010, B01001001, B00000000};
// создаем снегопада
byte snow[] = {
16, 8, B10000010, B00000001, B10000010, B00100000, B01110000, B00100001, B10000011, B00101001, B00010000, B00101000, B10000000,0B11000001, B10000000, B00000100, B00001110, B00000100};
// описание подключения
// DIN к 8
// CS к 9
// CLK к 10
// 2 модуля
MaxMatrix m(8, 9, 10, 2);
void setup(){
m.init();
m.setIntensity(0); // яркость 0 из 15
}
void loop(){
// двигаем снежинку из-за левой границы за правую через цикл
for (int i=-8; i<16; i++)
{
delay(100);
m.writeSprite(i, 0, snowstar);
}
delay(100); // пауза
// печатаем снегопад в 6 этажей
m.writeSprite(0, 0, snow);
m.writeSprite(0, -8, snow);
m.writeSprite(0, -16, snow);
m.writeSprite(0, -24, snow);
m.writeSprite(0, -32, snow);
m.writeSprite(0, -40, snow);
// снегопад ... УРА !
for (int i=0; i<32; i++)
{
m.shiftDown(true);
delay(100);
}
// ветер сдувает снежинки, красота !
for (int i=0; i<16; i++)
{
m.shiftLeft(false);
delay(100);
}
delay(2000);
}
Кто-нибудь, подскажите пожалуйста, как правильно скетч вставить !!! А то как-то не красиво :(
Гирлянда часть первая
Гирлянда часть вторая
Большая просьба к любителям перепечаток, указывать автора Little_Red_Rat
Спасибо
Отличный у вас блог. Все доходчиво написано. Собираюсь увлечься Arduino. Пока не знаю что из этого выйдет. Вот эта статья мне нравится больше всего, потому что хочу сделать самостоятельно часы на базе Arduino, а дальше уже усложнять конструкцию. Но я уже не испытываю никаких заблуждений и считаю, что Arduino станет для меня просто развлечением.
ОтветитьУдалитьСпасибо за ваш комментарий. Приятно знать что моя писанина не напрасна. Придется дописать эту тему, тем более не за горами очередной новый год :)
ОтветитьУдалитьКак быть у меня вот такая проблемка http://www.youtube.com/watch?v=Vwi4N7n21jY буква должна бегать с лева на права как бегущая строка а она скачет с матрицы на матрицу ?
ОтветитьУдалитьНадо посмотреть ваш скетч.
ОтветитьУдалитьСамое простое развернуть матрицы. Но похоже, что в вашем случае это физически не возможно.
Придется спрайт буквы А расписывать не слева-направо, а сверху-вниз
byte CH_A[] = {8, 8, B00010000, B00101000, B01000100, B10000010, B10000010, B11111110, B10000010, B10000010};
И вместо m.shiftRight(true) сдвигать m.shiftDown(true)
Как-то так
Спасибо за статью ,недавно спаял етот модуль не знал чо делать , статья помогла .
ОтветитьУдалитьСпасибо огромное автору - очень понятно, доступно, а главное оригинально и красиво. Статья очень помогла разобраться и сделать программку, которая теперь сама генерирует спрайт для матрицы 16х16 по нарисованной картинке
ОтветитьУдалить