RE: 手工贴片LED点阵
biubiu_ 发表于 2013-3-24 11:38 static/image/common/back.giflz也喜欢摄影啊>
是的呢,平时也玩玩摄影 ^_^ 代码已帮LZ改好
http://pastebin.com/vFrh5XHY#include <avr/pgmspace.h>
#include <FrequencyTimer2.h>
#define SPACE { \
0b00000000, \
0b00000000, \
0b00000000, \
0b00000000, \
0b00000000, \
0b00000000, \
0b00000000\
}
#define ZERO { \
0b00000000, \
0b01111110, \
0b01000010, \
0b01000110, \
0b01101010, \
0b01110010, \
0b01100010, \
0b01111110\
}
#define ONE { \
0b00000000, \
0b00111000, \
0b00001000, \
0b00001000, \
0b00011000, \
0b00011000, \
0b00011000, \
0b00111100\
}
#define TWO { \
0b00000000, \
0b01111110, \
0b01000010, \
0b00000010, \
0b01111110, \
0b01100000, \
0b01100000, \
0b01111110\
}
#define THREE { \
0b00000000, \
0b00111110, \
0b00000010, \
0b00000010, \
0b00011110, \
0b00000110, \
0b00000110, \
0b01111110\
}
#define FOUR { \
0b00000000, \
0b01000000, \
0b01000000, \
0b01000100, \
0b01000100, \
0b01111110, \
0b00001100, \
0b00001100\
}
#define FIVE { \
0b00000000, \
0b00111110, \
0b00100000, \
0b00100000, \
0b00111110, \
0b00000110, \
0b01000110, \
0b01111110\
}
#define SIX { \
0b00000000, \
0b01111110, \
0b01000000, \
0b01000000, \
0b01111110, \
0b01100010, \
0b01100010, \
0b01111110\
}
#define SEVEN { \
0b00000000, \
0b01111110, \
0b01000010, \
0b00000100, \
0b00001000, \
0b00011000, \
0b00011000, \
0b00011000\
}
#define EIGHT { \
0b00000000, \
0b00111100, \
0b00100100, \
0b00100100, \
0b01111110, \
0b01100010, \
0b01100010, \
0b01111110\
}
#define NINE { \
0b00000000, \
0b01111110, \
0b01000010, \
0b01000010, \
0b01111110, \
0b00000110, \
0b00000110, \
0b01111110\
}
#define A { \
0b00000000, \
0b00111100, \
0b00100100, \
0b01111110, \
0b01100010, \
0b01100010, \
0b01100010, \
0b01100010\
}
#define B { \
0b00000000, \
0b01111100, \
0b00100100, \
0b00111100, \
0b00110010, \
0b00110010, \
0b00110010, \
0b01111110\
}
#define C { \
0b00000000, \
0b01111110, \
0b01000010, \
0b01000000, \
0b01100000, \
0b01100000, \
0b01100010, \
0b01111110\
}
#define D { \
0b00000000, \
0b01111110, \
0b01000010, \
0b01000010, \
0b01100010, \
0b01100010, \
0b01100010, \
0b01111110\
}
#define E { \
0b00000000, \
0b01111110, \
0b01000000, \
0b01000000, \
0b01111000, \
0b01100000, \
0b01100000, \
0b01111110\
}
#define F { \
0b00000000, \
0b01111110, \
0b01000000, \
0b01000000, \
0b01111000, \
0b01100000, \
0b01100000, \
0b01100000\
}
#define G { \
0b00000000, \
0b01111110, \
0b01000010, \
0b01000000, \
0b01101110, \
0b01100010, \
0b01100010, \
0b01111110\
}
#define H { \
0b00000000, \
0b01000010, \
0b01000010, \
0b01000010, \
0b01111110, \
0b01100010, \
0b01100010, \
0b01100010\
}
#define I { \
0b00000000, \
0b00010000, \
0b00010000, \
0b00010000, \
0b00011000, \
0b00011000, \
0b00011000, \
0b00011000\
}
#define J { \
0b00000000, \
0b00000010, \
0b00000010, \
0b00000010, \
0b00000110, \
0b00000110, \
0b01000110, \
0b00111110\
}
#define K { \
0b00000000, \
0b01000010, \
0b01000100, \
0b01001000, \
0b01111110, \
0b01100010, \
0b01100010, \
0b01100010\
}
#define L { \
0b00000000, \
0b01000000, \
0b01000000, \
0b01000000, \
0b01100000, \
0b01100000, \
0b01100000, \
0b01111110\
}
#define M { \
0b00000000, \
0b01110110, \
0b01011010, \
0b01000010, \
0b01100010, \
0b01100010, \
0b01100010, \
0b01100010\
}
#define N { \
0b00000000, \
0b01110010, \
0b01001010, \
0b01001010, \
0b01101010, \
0b01101010, \
0b01101010, \
0b01100110\
}
#define O { \
0b00000000, \
0b01111110, \
0b01000010, \
0b01000010, \
0b01100010, \
0b01100010, \
0b01100010, \
0b01111110\
}
#define P { \
0b00000000, \
0b01111110, \
0b01000010, \
0b01000010, \
0b01111110, \
0b01100000, \
0b01100000, \
0b01100000\
}
#define Q { \
0b00000000, \
0b01111110, \
0b01000010, \
0b01000010, \
0b01100010, \
0b01101010, \
0b01100100, \
0b01111010\
}
#define R { \
0b00000000, \
0b01111110, \
0b01000010, \
0b01000010, \
0b01111110, \
0b01100100, \
0b01100010, \
0b01100010\
}
#define S { \
0b00000000, \
0b01111110, \
0b01000010, \
0b01000000, \
0b01111110, \
0b00000110, \
0b00000110, \
0b01111110\
}
#define T { \
0b00000000, \
0b01111110, \
0b00010000, \
0b00010000, \
0b00011000, \
0b00011000, \
0b00011000, \
0b00011000\
}
#define U { \
0b00000000, \
0b01000010, \
0b01000010, \
0b01000010, \
0b01100010, \
0b01100010, \
0b01100010, \
0b01111110\
}
#define V { \
0b00000000, \
0b01000010, \
0b01000010, \
0b01000010, \
0b00100100, \
0b00100100, \
0b00011000, \
0b00011000\
}
#define W { \
0b00000000, \
0b01100010, \
0b01100010, \
0b01100010, \
0b01100010, \
0b01000010, \
0b01011010, \
0b01100110\
}
#define X { \
0b00000000, \
0b01000010, \
0b00100100, \
0b00011000, \
0b01111100, \
0b01100010, \
0b01100010, \
0b01100010\
}
#define Y { \
0b00000000, \
0b01000010, \
0b01000010, \
0b01000010, \
0b00111100, \
0b00011000, \
0b00011000, \
0b00011000\
}
#define Z { \
0b00000000, \
0b01111100, \
0b00000010, \
0b00011100, \
0b01100000, \
0b01100000, \
0b01100000, \
0b01111110\
}
byte col = 0;
byte leds;
// pin on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1)
int pins= {-1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
// col of leds = pin yy on led matrix
int cols = {pins, pins, pins, pins, pins, pins, pins, pins};
// row of leds = pin yy on led matrix
int rows = {pins, pins, pins, pins, pins, pins, pins, pins};
byte patterns[] PROGMEM = {
SPACE,ZERO,ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
};
#define numPatterns (sizeof(patterns)/sizeof(patterns))
int pattern = 0;
void setup() {
// sets the pins as output
for (int i = 1; i <= 16; i++) {
pinMode(pins, OUTPUT);
}
// set up cols and rows
for (int i = 1; i <= 8; i++) {
digitalWrite(cols, LOW);
}
for (int i = 1; i <= 8; i++) {
digitalWrite(rows, 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);
}
void loop() {
pattern = ++pattern % numPatterns;
slidePattern(pattern, 150);
}
void clearLeds() {
// Clear display array
for (int i = 0; i < 8; i++) {
leds = 0;
}
}
void setPattern(int pattern) {
for (int i = 0; i < 8; i++) {
leds = pgm_read_byte_near(&patterns);
}
}
void slidePattern(int pattern, int del) {
for (int l = 0; l < 8; l++) {
for (int i = 0; i < 8; i++) {
byte acol = pgm_read_byte_near(&patterns);
leds = (acol << l) | (acol >> (8 - l));
}
delay(del);
}
}
// Interrupt routine
void display() {
digitalWrite(cols, LOW);// Turn whole previous column off
col++;
if (col == 8) {
col = 0;
}
for (int row = 0; row < 8; row++) {
if ((leds >> row) & 0x1) {
digitalWrite(rows, LOW);// Turn on this led
}
else {
digitalWrite(rows, HIGH); // Turn off this led
}
}
digitalWrite(cols, HIGH); // Turn whole column on at once (for equal lighting times)
}演示视频:
http://player.youku.com/player.php/sid/XNTMxNzI0OTI0/v.swf
:lol
histamine 发表于 2013-3-24 15:27代码已帮LZ改好http://pastebin.com/vFrh5XHY演示视频:
非常感谢啊!!太厉害了 厉害厉害那么细的导线我总剥不好 呵呵,下次焊个立体的点阵出来吧。:lol 手活不错啊哈哈哈 求方块点阵的购买地址,淘宝上找了好久找不到 xc7981348 发表于 2013-3-17 23:17 static/image/common/back.gif
谢夸奖,已经pm
同求方形点阵地址…… friskit 发表于 2013-5-22 17:16手活不错啊哈哈哈
谢夸奖啊^_^