Entrar    Registrar
  • Autor
    Mensagem

[Brincadeiras de carnaval] Matriz de LEDs 8x8 c/ arduino UNO

Mensagempor dreher » 03 Mar 2014 10:34

Realmente para o hobbie o arduino é excelente. Em pouco mais de 1 hora de montagem e codificação consegui fazer um letreiro numa matriz de leds.
Editado pela última vez por andre_teprom em 13 Abr 2014 09:48, em um total de 1 vez.
Razão: Título mais descritivo
dreher
Byte
 
Mensagens: 431
Registrado em: 12 Out 2006 11:10
Localização: Blumenau - SC

Re: Brincadeiras de carnaval

Mensagempor tcpipchip » 03 Mar 2014 19:40

Sem latch sem nada ?
Usou o modulo da deal ?
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 5673
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Brincadeiras de carnaval

Mensagempor EvandrPic » 03 Mar 2014 20:01

acho que um dos Cis mais práticos pra se fazer isso é com o MAX7219... dá pra cascatear, é barato e prático.



Imagem

Imagem

http://arduinobymyself.blogspot.com.br/ ... x7219.html
http://www.instructables.com/id/16x8-LE ... e/?lang=pt
EvandrPic
Dword
 
Mensagens: 2045
Registrado em: 31 Mar 2010 15:05

Re: Brincadeiras de carnaval

Mensagempor tcpipchip » 03 Mar 2014 20:08

Ahhh ta!

------------------------
Não enviado com Iphone
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 5673
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Brincadeiras de carnaval

Mensagempor EvandrPic » 03 Mar 2014 20:25

Mas, pela quantidade de fios, acho que ele não usou nenhum chip... ligou direto na placa do arduino.

tcpipchip escreveu:Ahhh ta!

------------------------
Não enviado com Iphone
EvandrPic
Dword
 
Mensagens: 2045
Registrado em: 31 Mar 2010 15:05

Re: Brincadeiras de carnaval

Mensagempor dreher » 03 Mar 2014 22:14

tcpipchip escreveu:Sem latch sem nada ?
Usou o modulo da deal ?

tcpipchip, sem nenhum latch, ligado diretamente na placa arduino, somente com os resistores limitadores.

são 16 pinos, no arduino tem o suficiente, e para uma brincadeira no final de semana foi o suficiente.

Mas realmente, se for pra fazer mais paineis precisa de um latch
dreher
Byte
 
Mensagens: 431
Registrado em: 12 Out 2006 11:10
Localização: Blumenau - SC

Re: Brincadeiras de carnaval

Mensagempor tcpipchip » 04 Mar 2014 12:14

legal! Entendi!
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 5673
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Brincadeiras de carnaval

Mensagempor Aquino » 20 Mar 2014 22:38

Legal Dreher, já que você não vai vender esse negócio mesmo, compartilha aí o código com a molecada :lol:
"...People who are really serious about software should make their own hardware..." Alan Kay
Aquino
Dword
 
Mensagens: 1777
Registrado em: 12 Out 2006 22:24

Re: Brincadeiras de carnaval

Mensagempor dreher » 21 Mar 2014 08:12

Ta ai Aquino

Código: Selecionar todos
/*
 * Show messages on an 8x8 led matrix,
 * scrolling from right to left.
 *
 * Uses FrequencyTimer2 library to
 * constantly run an interrupt routine
 * at a specified frequency. This
 * refreshes the display without the
 * main loop having to do anything.
 *
 */

#include <FrequencyTimer2.h>
const unsigned char space[8] PROGMEM= {
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
};   //   0x20 32
const unsigned char Numbers[][8] PROGMEM= {
{0x0e,0x11,0x13,0x15,0x19,0x11,0x0e,0x00},
{      // 1
0x04,
0x0C,
0x04,
0x04,
0x04,
0x04,
0x0E,
0x00
},
{      // 2
0x0E,
0x11,
0x01,
0x02,
0x04,
0x08,
0x1F,
0x00
},
{      // 3
0x1F,
0x02,
0x04,
0x02,
0x01,
0x11,
0x0E,
0x00
},
{      // 4
0x02,
0x06,
0x0A,
0x12,
0x1F,
0x02,
0x02,
0x00
},
{      // 5
0x1F,
0x10,
0x1E,
0x01,
0x01,
0x11,
0x0E,
0x00
},
{      // 6
0x06,
0x08,
0x10,
0x1E,
0x11,
0x11,
0x0E,
0x00
},
{      // 7
0x1F,
0x01,
0x02,
0x04,
0x04,
0x04,
0x04,
0x00
},
{0x0e,0x11,0x11,0x1f,0x11,0x11,0x0e,0x00},
{      // 9
0x0E,
0x11,
0x11,
0x0F,
0x01,
0x02,
0x0C,
0x00
}
};
const unsigned char Font[][8] PROGMEM= {
{
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // !
0x04,
0x04,
0x04,
0x04,
0x00,
0x00,
0x04,
0x00
},
{      // "
0x0A,
0x0A,
0x0A,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // #
0x0A,
0x0A,
0x1F,
0x0A,
0x1F,
0x0A,
0x0A,
0x00
},
{      // $
0x04,
0x0F,
0x14,
0x0E,
0x05,
0x1E,
0x04,
0x00
},
{      // %
0x18,
0x19,
0x02,
0x04,
0x08,
0x13,
0x03,
0x00
},
{      // &
0x0C,
0x12,
0x14,
0x08,
0x15,
0x12,
0x0D,
0x00
},
{      // '
0x0C,
0x04,
0x08,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // (
0x02,
0x04,
0x08,
0x08,
0x08,
0x04,
0x02,
0x00
},
{      // )
0x08,
0x04,
0x02,
0x02,
0x02,
0x04,
0x08,
0x00
},
{      // *
0x00,
0x04,
0x15,
0x0E,
0x15,
0x04,
0x00,
0x00
},
{      // +
0x00,
0x04,
0x04,
0x1F,
0x04,
0x04,
0x00,
0x00
},
{      // ,
0x00,
0x00,
0x00,
0x00,
0x0C,
0x04,
0x08,
0x00
},
{      // -
0x00,
0x00,
0x00,
0x1F,
0x00,
0x00,
0x00,
0x00
},
{      // .
0x00,
0x00,
0x00,
0x00,
0x00,
0x0C,
0x0C,
0x00
},
{      // /
0x00,
0x01,
0x02,
0x04,
0x08,
0x10,
0x00,
0x00
},
{      // 0
0x0E,
0x11,
0x13,
0x15,
0x19,
0x11,
0x0E,
0x00
},
{      // 1
0x04,
0x0C,
0x04,
0x04,
0x04,
0x04,
0x0E,
0x00
},
{      // 2
0x0E,
0x11,
0x01,
0x02,
0x04,
0x08,
0x1F,
0x00
},
{      // 3
0x1F,
0x02,
0x04,
0x02,
0x01,
0x11,
0x0E,
0x00
},
{      // 4
0x02,
0x06,
0x0A,
0x12,
0x1F,
0x02,
0x02,
0x00
},
{      // 5
0x1F,
0x10,
0x1E,
0x01,
0x01,
0x11,
0x0E,
0x00
},
{      // 6
0x06,
0x08,
0x10,
0x1E,
0x11,
0x11,
0x0E,
0x00
},
{      // 7
0x1F,
0x01,
0x02,
0x04,
0x04,
0x04,
0x04,
0x00
},
{      // 8
0x0E,
0x11,
0x11,
0x0E,
0x11,
0x11,
0x0E,
0x00
},
{      // 9
0x0E,
0x11,
0x11,
0x0F,
0x01,
0x02,
0x0C,
0x00
},
{      // :
0x00,
0x0C,
0x0C,
0x00,
0x0C,
0x0C,
0x00,
0x00
},
{      // ;
0x00,
0x0C,
0x0C,
0x00,
0x0C,
0x04,
0x08,
0x00
},
{      // <
0x02,
0x04,
0x08,
0x10,
0x08,
0x04,
0x02,
0x00
},
{      // =
0x00,
0x00,
0x1F,
0x00,
0x1F,
0x00,
0x00,
0x00
},
{      // >
0x08,
0x04,
0x02,
0x01,
0x02,
0x04,
0x08,
0x00
},
{      // ?
0x0E,
0x11,
0x01,
0x02,
0x04,
0x00,
0x04,
0x00
},
{      // @
0x0E,
0x11,
0x01,
0x0D,
0x15,
0x15,
0x0E,
0x00
},
{      // A
0x0E,
0x11,
0x11,
0x11,
0x1F,
0x11,
0x11,
0x00
},
{      // B
0x1E,
0x09,
0x09,
0x0E,
0x09,
0x09,
0x1E,
0x00
},
{      // C
0x0E,
0x11,
0x10,
0x10,
0x10,
0x11,
0x0E,
0x00
},
{      // D
0x1E,
0x09,
0x09,
0x09,
0x09,
0x09,
0x1E,
0x00
},
{      // E
0x1F,
0x10,
0x10,
0x1F,
0x10,
0x10,
0x1F,
0x00
},
{      // F
0x1F,
0x10,
0x10,
0x1E,
0x10,
0x10,
0x10,
0x00
},
{      // G
0x0E,
0x11,
0x10,
0x13,
0x11,
0x11,
0x0F,
0x00
},
{      // H
0x11,
0x11,
0x11,
0x1F,
0x11,
0x11,
0x11,
0x00
},
{      // I
0x0E,
0x04,
0x04,
0x04,
0x04,
0x04,
0x0E,
0x00
},
{      // J
0x07,
0x02,
0x02,
0x02,
0x02,
0x12,
0x0C,
0x00
},
{      // K
0x11,
0x12,
0x14,
0x18,
0x14,
0x12,
0x11,
0x00
},
{      // L
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x1F,
0x00
},
{      // M
0x11,
0x1B,
0x15,
0x15,
0x11,
0x11,
0x11,
0x00
},
{      // N
0x11,
0x19,
0x19,
0x15,
0x13,
0x13,
0x11,
0x00
},
{      // O
0x0E,
0x11,
0x11,
0x11,
0x11,
0x11,
0x0E,
0x00
},
{      // P
0x1E,
0x11,
0x11,
0x1E,
0x10,
0x10,
0x10,
0x00
},
{      // Q
0x0E,
0x11,
0x11,
0x11,
0x15,
0x12,
0x1D,
0x00
},
{      // R
0x1E,
0x11,
0x11,
0x1E,
0x14,
0x12,
0x11,
0x00
},
{      // S
0x0E,
0x11,
0x10,
0x0E,
0x01,
0x11,
0x0E,
0x00
},
{      // T
0x1F,
0x04,
0x04,
0x04,
0x04,
0x04,
0x04,
0x00
},
{      // U
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x0E,
0x00
},
{      // V
0x11,
0x11,
0x11,
0x11,
0x11,
0x0A,
0x04,
0x00
},
{      // W
0x11,
0x11,
0x11,
0x15,
0x15,
0x1B,
0x11,
0x00
},
{      // X
0x11,
0x11,
0x0A,
0x04,
0x0A,
0x11,
0x11,
0x00
},
{      // Y
0x11,
0x11,
0x11,
0x0A,
0x04,
0x04,
0x04,
0x00
},
{      // Z
0x1F,
0x01,
0x02,
0x04,
0x08,
0x10,
0x1F,
0x00
},
{      // [
0x0E,
0x08,
0x08,
0x08,
0x08,
0x08,
0x0E,
0x00
},
{      // \
0x00,
0x10,
0x08,
0x04,
0x02,
0x01,
0x00,
0x00
},
{      // ]
0x0E,
0x02,
0x02,
0x02,
0x02,
0x02,
0x0E,
0x00
},
{      // ^
0x04,
0x0A,
0x11,
0x00,
0x00,
0x00,
0x00,
0x00

},
{      // _
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x1F,
0x00
},
{      // `
0x10,
0x08,
0x04,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // a
0x00,
0x00,
0x0E,
0x01,
0x0F,
0x11,
0x0F,
0x00
},
{      // b
0x10,
0x10,
0x16,
0x19,
0x11,
0x11,
0x1E,
0x00
},
{      // c
0x00,
0x00,
0x0E,
0x11,
0x10,
0x11,
0x0E,
0x00
},
{      // d
0x01,
0x01,
0x0D,
0x13,
0x11,
0x11,
0x0F,
0x00
},
{      // e
0x00,
0x00,
0x0E,
0x11,
0x1F,
0x10,
0x0E,
0x00
},
{      // f
0x02,
0x05,
0x04,
0x0E,
0x04,
0x04,
0x04,
0x00
},
{      // g
0x00,
0x0D,
0x13,
0x13,
0x0D,
0x01,
0x0E,
0x00
},
{      // h
0x10,
0x10,
0x16,
0x19,
0x11,
0x11,
0x11,
0x00
},
{      // i
0x04,
0x00,
0x0C,
0x04,
0x04,
0x04,
0x0E,
0x00
},
{      // j
0x02,
0x00,
0x06,
0x02,
0x02,
0x12,
0x0C,
0x00
},
{      // k
0x08,
0x08,
0x09,
0x0A,
0x0C,
0x0A,
0x09,
0x00
},
{      // l
0x0C,
0x04,
0x04,
0x04,
0x04,
0x04,
0x0E,
0x00
},
{      // m
0x00,
0x00,
0x1A,
0x15,
0x15,
0x15,
0x15,
0x00
},
{      // n
0x00,
0x00,
0x16,
0x19,
0x11,
0x11,
0x11,
0x00
},
{      // o
0x00,
0x00,
0x0E,
0x11,
0x11,
0x11,
0x0E,
0x00
},
{      // p
0x00,
0x16,
0x19,
0x19,
0x16,
0x10,
0x10,
0x00
},
{      // q
0x00,
0x0D,
0x13,
0x13,
0x0D,
0x01,
0x01,
0x00
},
{      // r
0x00,
0x00,
0x16,
0x19,
0x10,
0x10,
0x10,
0x00
},
{      // s
0x00,
0x00,
0x0F,
0x10,
0x1E,
0x01,
0x1F,
0x00
},
{      // t
0x08,
0x08,
0x1C,
0x08,
0x08,
0x09,
0x06,
0x00
},
{      // u
0x00,
0x00,
0x12,
0x12,
0x12,
0x12,
0x0D,
0x00
},
{      // v
0x00,
0x00,
0x11,
0x11,
0x11,
0x0A,
0x04,
0x00
},
{      // w
0x00,
0x00,
0x11,
0x11,
0x15,
0x15,
0x0A,
0x00
},
{      // x
0x00,
0x00,
0x11,
0x0A,
0x04,
0x0A,
0x11,
0x00
},
{      // y
0x00,
0x00,
0x11,
0x11,
0x13,
0x0D,
0x01,
0x0E
},
{      // z
0x00,
0x00,
0x1F,
0x02,
0x04,
0x08,
0x1F,
0x00
},
{      // {
0x02,
0x04,
0x04,
0x08,
0x04,
0x04,
0x02,
0x00
},
{      // |
0x04,
0x04,
0x04,
0x00,
0x04,
0x04,
0x04,
0x00
},
{      // }
0x08,
0x04,
0x04,
0x02,
0x04,
0x04,
0x08,
0x00
},
{      // ~
0x08,
0x15,
0x02,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 5F
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 60
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 61
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 62
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 63
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 64
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 65
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 66
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 67
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 68
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 69
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 6A
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 6B
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 6C
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 6D
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 6E
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 6F
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 70
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 71
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 72
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 73
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 74
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 75
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 76
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 77
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 78
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 79
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 7A
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 7B
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 7C
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 7D
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 7E
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
},
{      // 7F
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
}
};
byte col = 0;
byte leds[8][8];

const int rows[8] = {9,8,7,6,5,4,3,2};
const int cols[8] = {13,12,A5,A4,A3,A2,A1,A0};

// pin[xx] on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1)
int pins[17]= {-1,2,3,4,5,6,7,8,9,A0,A1,A2,A3,A4,A5,12,13};

// col[xx] of leds = pin yy on led matrix
//int cols[8] = {pins[13], pins[3], pins[4], pins[10], pins[06], pins[11], pins[15], pins[16]};

// row[xx] of leds = pin yy on led matrix
//int rows[8] = {pins[9], pins[14], pins[8], pins[12], pins[1], pins[7], pins[2], pins[5]};


int numPatterns;
byte patterns[50][8];

int pattern = 0;
char frase[50];
void setup() {
  // sets the pins as output
  Serial.begin(115200);
  Serial.println("Bem-vindo");
  delay(1000);
  loadPatterns("Daniela Moretti Dreher ");
  for (int i = 1; i <= 16; i++) {
    pinMode(pins[i], OUTPUT);
  }

  // set up cols and rows
  for (int i = 1; i <= 8; i++) {
    digitalWrite(cols[i - 1], LOW);
  }

  for (int i = 1; i <= 8; i++) {
    digitalWrite(rows[i - 1], LOW);
  }

  clearLeds();

  // Turn off toggling of pin 11
  FrequencyTimer2::disable();
  // Set refresh rate (interrupt timeout period)
  FrequencyTimer2::setPeriod(2000);
  // Set interrupt routine to be called
  FrequencyTimer2::setOnOverflow(display);

  setPattern(pattern);
}
int cont = 0;
void loop() {
    while (Serial.available())
    {
      frase[cont]=Serial.read();
      if (frase[cont]=='\n')
      {
        frase[++cont]=0;
        loadPatterns(frase);
        cont=0;
        clearLeds();
        pattern=0;
        setPattern(pattern);
      }
      else
        cont++;
    }
    pattern = ++pattern % numPatterns;
    slidePattern(pattern, 100);
}
void loadPatterns(char *_patterns){
    int i=0;
    Serial.println(_patterns);
    while (*_patterns)
    {
        for (int j=0; j<8; j++)
        {
               if (*_patterns>=' ' && *_patterns<=0x7F)patterns[i][j]=pgm_read_byte(&Font[*_patterns-' '][j]);
              else patterns[i][j]=pgm_read_byte(&space[j]); 
        _patterns++;
        i++;
        if (i>25) break;
    }
    numPatterns=i;
}
void clearLeds() {
  // Clear display array
  for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
      leds[i][j] = 0;
    }
  }
}

void setPattern(int pattern) {
  for (int i = 0; i < numPatterns; i++) {
    for (int j = 0; j < 8; j++) {
      leds[i][j] = bitRead(patterns[pattern][i],j);
    }
  }
}

void slidePattern(int pattern, int del) {
  for (int l = 0; l < 8; l++) {
    for (int i = 0; i < 7; i++) {
      for (int j = 0; j < 8; j++) {
        leds[j][i] = leds[j][i+1];
      }
    }
    for (int j = 0; j < 8; j++) {
      //leds[j][7] = patterns[pattern][j][0 + l];
      leds[j][7] = bitRead(patterns[pattern][j],0 + l);
    }
    delay(del);
  }
}

// Interrupt routine
void display() {
  digitalWrite(cols[col], LOW);  // Turn whole previous column off
  col++;
  if (col == 8) {
    col = 0;
  }
  for (int row = 0; row < 8; row++) {
    if (leds[col][7 - row] == 1) {
      digitalWrite(rows[row], LOW);  // Turn on this led
    }
    else {
      digitalWrite(rows[row], HIGH); // Turn off this led
    }
  }
  digitalWrite(cols[col], HIGH); // Turn whole column on at once (for equal lighting times)
}
dreher
Byte
 
Mensagens: 431
Registrado em: 12 Out 2006 11:10
Localização: Blumenau - SC

Voltar para ARDUINO

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante