Доброго Времени суток! Неделю назад приобрел Arduino Mega 2560 и Max7219 Led Matrix 8х8, нашел в сети готовую программу подключил матрицу к ардуино загрузил скетч все работает но не могу разобраться в скетче. Мне нужно создать бегущюю строку с надписью Arduino mega 2560 Max7219. Если кому не трудно помогите и с подробным пояснением кода программы пожалуйсто !
Вы предлагаете форумчанам самостоятельно отыскать ту же самую программу? Вложить в сообщение код или хотя бы ссылку на программу мысли не возникало? Схема подключения тоже не повредит.
Вот пример бегущей строки, но для меги надо эту LedControl lc=LedControl(12,11,10,1); строчку скорее всего исправить(указать выводы в первых трёх числах), а с помощью этой таблицы можете свои символы добавить. пример работы http://yadi.sk/d/-EQBCkcmKcoJg По поводу библиотеки LedControl.h все здесь расписано очень подробно. Код (Text): //We always have to include the library #include "LedControl.h" //pin 12 is connected to the DataIn //pin 11 is connected to the CLK //pin 10 is connected to LOAD //LedControl(int dataPin, int clkPin, int csPin, int numDevices); LedControl lc=LedControl(12,11,10,1); void setup() { //The MAX72XX is in power-saving mode on startup, we have to do a wakeup call lc.shutdown(0,false); //Set the brightness to a medium values (0~15 possible values) lc.setIntensity(0,2); //and clear the display lc.clearDisplay(0); } #define SP {0, 0, 0, 0, 0} //Espacio #define EX {0, 125, 0, 0, 0} //Exclamacion ! #define A {31, 36, 68, 36, 31} #define B {127, 73, 73, 73, 54,} #define C {62, 65, 65, 65, 34} #define D {127, 65, 65, 34, 28} #define E {127, 73, 73, 65, 65} #define F {127, 72, 72, 72, 64} #define G {62, 65, 65, 69, 38} #define H {127, 8, 8, 8, 127} #define I {0, 65, 127, 65, 0} #define J {2, 1, 1, 1, 126} #define K {127, 8, 20, 34, 65} #define L {127, 1, 1, 1, 1} #define M {127, 32, 16, 32, 127} #define N {127, 32, 16, 8, 127} #define O {62, 65, 65, 65, 62} #define P {127, 72, 72, 72, 48} #define Q {62, 65, 69, 66, 61} #define R {127, 72, 76, 74, 49} #define S {50, 73, 73, 73, 38} #define T {64, 64, 127, 64, 64} #define U {126, 1, 1, 1, 126} #define V {124, 2, 1, 2, 124} #define W {126, 1, 6, 1, 126} #define X {99, 20, 8, 20, 99} #define Y {96, 16, 15, 16, 96} #define Z {67, 69, 73, 81, 97} //Escribimos la frase separando cada letra por comas //En el primer numero lo adaptaremos la longitud de la frase (caracteres) byte frase[5][5]={H,O,L,A,SP}; int largo = sizeof(frase)/5; int gnd[18]={-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12}; void loop() { for (int letra=0; letra<largo; letra++){ for (int desplaza = 18; desplaza>=5; desplaza--) { for (int i=0; i<5; i++){ lc.setRow(0,gnd[i+desplaza-5],frase[letra][i]); } delay(100); // speed of animation lc.clearDisplay(0); } if(letra == largo){ letra = 0;} }//end for letra }
Очень хорошая статья. Но как можно узнать все возможные функции для светодиодов, если допустим использовать не МАХ, а саму ардуино, тем более что количество выходов позволяет, или самое распространённое 74hc595... Другими словами, можете подсказать книгу или книги по ардуино, чтобы было побольше рассказано именно о светодиодах?
Вы уверены что статьи лучше чем полноценная книга? Ведь с помощью светодиодов многие создают игры, такие как тетрис. Будет ли статей достаточно чтобы предусмотреть все варианты переменных и манипуляций с ними?
Да, я уверен что статья лучше. Потому что для подключения светодиодов Вам надо понять не так уж и много вещей: - светодиод проводит ток - светодиод проводит ток только в одну сторону - светится от тока, а не напряжения - нагрузочная способность выходов микросхем - транзисторные ключи После этого Вы сможете подключать любые светодиоды как захотите. Если про подключение светодиодов написана целая книжка, то она только показывает как их подключить и совсем не учит думать.
Помогите! Приведённый пример с (#include "LedControl.h") , у меня не работает. Библиотеку скачал, подключение проверил. Для проверки работы использовал вот этот код, работает: int dataIn = 2; int load = 3; int clock = 4; int maxInUse =1; int e = 0; byte max7219_reg_noop = 0x00; byte max7219_reg_digit0 = 0x01; byte max7219_reg_digit1 = 0x02; byte max7219_reg_digit2 = 0x03; byte max7219_reg_digit3 = 0x04; byte max7219_reg_digit4 = 0x05; byte max7219_reg_digit5 = 0x06; byte max7219_reg_digit6 = 0x07; byte max7219_reg_digit7 = 0x08; byte max7219_reg_decodeMode = 0x09; byte max7219_reg_intensity = 0x0a; byte max7219_reg_scanLimit = 0x0b; byte max7219_reg_shutdown = 0x0c; byte max7219_reg_displayTest = 0x0f; void putByte(byte data) { byte i = 8; byte mask; while(i > 0) { mask = 0x01 << (i - 1); digitalWrite( clock, LOW); if (data & mask){ digitalWrite(dataIn, HIGH); }else{ digitalWrite(dataIn, LOW); } digitalWrite(clock, HIGH); --i; } } void maxSingle( byte reg, byte col) { digitalWrite(load, LOW); putByte(reg); putByte(col); digitalWrite(load, LOW); digitalWrite(load,HIGH); } void setup () { pinMode(dataIn, OUTPUT); pinMode(clock, OUTPUT); pinMode(load, OUTPUT); } void loop () { maxSingle(1,85); maxSingle(2,170); maxSingle(3,85); maxSingle(4,170); maxSingle(5,85); maxSingle(6,170); maxSingle(7,85); maxSingle(8,170); ... Почему не работает пример приведённый в 3 комментарии?