xc7981348 发表于 2013-3-15 19:50:41

手工贴片LED点阵

本帖最后由 xc7981348 于 2013-3-15 20:02 编辑


DIY了个8*8点阵屏幕送妹子,手工贴片焊接LED,用的是官方直驱点阵的程序,但是只能显示13个字符,再多的字符可以写进去不过显示不出来,求大家帮助编程,非常感谢,以下是我的代码和大量渣图。
还有一个问题,如何制作mega328的最小系统,可以写程序进去不过总是运行错误,比如只能点亮一行点阵而且显示不正常,求大家帮忙啊。


#include <FrequencyTimer2.h>

#define SPACE { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0}, \
    {0, 0, 0, 0, 0, 0, 0, 0} \
}

#define A { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {0, 0, 1, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 1, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 1, 1, 1, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0} \
}

#define B { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {1, 1, 1, 1, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 1, 1, 1, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 1, 1, 1, 0, 0, 0, 0} \
}

#define C{ \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {0, 1, 1, 1, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {0, 1, 1, 1, 0, 0, 0, 0} \
}

#define D { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {1, 1, 1, 1, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 1, 1, 1, 0, 0, 0, 0} \
}

#define E { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {1, 1, 1, 1, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 1, 1, 1, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 1, 1, 1, 1, 0, 0, 0} \
}

#define F { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {1, 1, 1, 1, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 1, 1, 1, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0} \
}

#define G { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {0, 1, 1, 1, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 1, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {0, 1, 1, 1, 1, 0, 0, 0} \
}

#define H { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 1, 1, 1, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0} \
}

#define I { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {1, 1, 1, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {0, 1, 0, 0, 0, 0, 0, 0}, \
    {1, 1, 1, 0, 0, 0, 0, 0} \
}

#define J{ \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {0, 0, 0, 0, 1, 0, 0, 0}, \
    {0, 0, 0, 0, 1, 0, 0, 0}, \
    {0, 0, 0, 0, 1, 0, 0, 0}, \
    {0, 0, 0, 0, 1, 0, 0, 0}, \
    {0, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {0, 1, 1, 1, 0, 0, 0, 0} \
}

#define K { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 1, 0, 0, 0, 0}, \
    {1, 0, 1, 0, 0, 0, 0, 0}, \
    {1, 1, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 1, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 1, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0} \
}

#define L { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 0, 0, 0, 0, 0, 0, 0}, \
    {1, 1, 1, 1, 1, 0, 0, 0} \
}

#define M { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 1, 0, 1, 1, 0, 0, 0}, \
    {1, 0, 1, 0, 1, 0, 0, 0}, \
    {1, 0, 1, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0} \
}

#define N { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 1, 1, 0, 0, 0}, \
    {1, 1, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 1, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 1, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0} \
}

#define O { \
    {0, 0, 0, 0, 0, 0, 0, 0},\
    {0, 1, 1, 1, 0, 0, 0, 0}, \
    {1, 0, 0, 1, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {1, 0, 0, 0, 1, 0, 0, 0}, \
    {0, 1, 1, 1, 0, 0, 0, 0} \
}

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};

const int numPatterns = 13;
byte patterns = {
A,B,C,D,E,F,G,H,I,J,K,L,M
};

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++) {
    for (int j = 0; j < 8; j++) {
      leds = 0;
    }
}
}

void setPattern(int pattern) {
for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
      leds = patterns;
    }
}
}

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 = leds;
      }
    }
    for (int j = 0; j < 8; j++) {
      leds = patterns;
    }
    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 == 1) {
      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)
}
;

侧面

正面

背面

用的Atmega8-16PU

5*5点阵1206贴片LED的试验版

0805贴片LED第一版

0805贴片LED第二版,改成了贴片晶振

背面接线

参考论坛做的点阵和驱动板

背面

一开始用面包板做的

用到的FrequencyTimer2库文件,求大家帮忙啊

windasher 发表于 2013-3-15 21:07:24

楼主焊工杠杠的!
请问那个黄色方LED点阵哪里有卖,谢谢!

anzedick 发表于 2013-3-15 21:13:11

焊功真好....羡慕不已

xc7981348 发表于 2013-3-15 21:15:12

windasher 发表于 2013-3-15 21:07 static/image/common/back.gif
楼主焊工杠杠的!
请问那个黄色方LED点阵哪里有卖,谢谢!

感谢夸奖,已PM链接

xc7981348 发表于 2013-3-15 21:15:38

anzedick 发表于 2013-3-15 21:13 static/image/common/back.gif
焊功真好....羡慕不已

:lol谢夸奖

anzedick 发表于 2013-3-15 21:51:45

xc7981348 发表于 2013-3-15 21:15 static/image/common/back.gif
谢夸奖

我焊的老跟鼻屎一样:L...楼主给出篇电焊的经验贴吧

xc7981348 发表于 2013-3-15 21:57:08

anzedick 发表于 2013-3-15 21:51 static/image/common/back.gif
我焊的老跟鼻屎一样...楼主给出篇电焊的经验贴吧

我是学金融的,玩烙铁才玩了3个月,我用的是T12白光,可以调温,焊锡用的是论坛商店买的整卷的山崎焊锡,其实也没啥经验啦,我一般用300度焊接

wing 发表于 2013-3-15 22:04:39

好精致的手工

xc7981348 发表于 2013-3-15 22:06:13

wing 发表于 2013-3-15 22:04 static/image/common/back.gif
好精致的手工

谢夸奖,不会编程啊不会编程啊

bys_1123 发表于 2013-3-15 23:11:40

厉害厉害,请问LZ是如何对导线剥线的呢。那么细的导线我总剥不好

xc7981348 发表于 2013-3-15 23:15:34

本帖最后由 xc7981348 于 2013-3-15 23:18 编辑

bys_1123 发表于 2013-3-15 23:11 static/image/common/back.gif
厉害厉害,请问LZ是如何对导线剥线的呢。那么细的导线我总剥不好

这个我买了一把10多块的剥线钳,用的是24AWG的线,那线里面铜丝有点缩水,正好够细很合用

davidce 发表于 2013-3-16 09:19:03

焊的真不错

smfox10 发表于 2013-3-16 09:38:10

焊接很漂亮,适合送妹子:lol

dion0000 发表于 2013-3-16 12:49:48

弄个壳~~送妹子必须的~~

zhujunsan 发表于 2013-3-16 13:13:48

那个,led什么的都木有限流电阻的么@@?
页: [1] 2 3 4
查看完整版本: 手工贴片LED点阵