Den där LED-tejpen såg ju intressant ut för ändamålet.

Man får ställa in grönmasken så att den täcker viahålet på baksidan, så att lodet inte kan "rymma". Så gör vi på jobbet med tex QFN-kapslar.Swech skrev:Klas Kenny,
Om man har viahål i paddar så suger de åt sig tennet om
man dispenserar och kör i lödugn. Resultatet kan bli en dålig lödning
eftersom det blir för lite tenn kvar till komponenten
Swech
Kod: Markera allt
#include "ws2812.h"
#include "htc.h"
#ifdef RGB888
unsigned char pixels[NUMBER_OF_LEDS * 3];
#endif
#ifdef RGB565
unsigned char pixels[NUMBER_OF_LEDS * 2];
#endif
unsigned char reverse(unsigned char in) {
in = ((in & 0xF0) >> 4) | ((in & 0x0F) << 4);
in = ((in & 0xCC) >> 2) | ((in & 0x33) << 2);
return ((in & 0xAA) >> 1) | ((in & 0x55) << 1);
}
#ifdef RGB888
RGB_TYPE getLed(unsigned char led) {
RGB_TYPE rgb;
rgb.G = pixels[led * 3 + 0];
rgb.R = pixels[led * 3 + 1];
rgb.B = pixels[led * 3 + 2];
rgb.R = reverse(rgb.R);
rgb.G = reverse(rgb.G);
rgb.B = reverse(rgb.B);
return rgb;
}
void setLed(unsigned char led, RGB_TYPE rgb) {
rgb.R = reverse(rgb.R);
rgb.G = reverse(rgb.G);
rgb.B = reverse(rgb.B);
pixels[led * 3 + 0] = rgb.G;
pixels[led * 3 + 1] = rgb.R;
pixels[led * 3 + 2] = rgb.B;
}
void setLeds() {
unsigned char bitTable[4] = {0xEF, 0x0F, 0xE8, 0x08}, color;
unsigned char gieState, leds = NUMBER_OF_LEDS;
unsigned char *data = pixels;
gieState = GIE;
GIE = 0;
while (leds--) {
color = *data++;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color >>= 2;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color >>= 2;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color >>= 2;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color = *data++;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color >>= 2;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color >>= 2;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color >>= 2;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color = *data++;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color >>= 2;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color >>= 2;
while (!TXIF);
TXREG = bitTable[color & 0x03];
color >>= 2;
while (!TXIF);
TXREG = bitTable[color & 0x03];
}
//Just delay
for (color = 0; color < 150; color++);
GIE = gieState;
}
#endif
#ifdef RGB565
RGB_TYPE getLed(unsigned char led) {
RGB_TYPE rgb;
unsigned short rgb565;
rgb565 = pixels[led * 2 + 0];
rgb565 |= pixels[led * 2 + 1] << 8;
rgb565 = ((rgb.B & 0b00011111) << 11) | ((rgb.R & 0b00011111) << 6) | ((rgb.G & 0b00111111));
rgb.G = rgb565 & 0b00111111;
rgb.R = (rgb565 >> 6) & 0b00011111;
rgb.B = (rgb565 >> 11) & 0b00011111;
rgb.R = reverse(rgb.R);
rgb.G = reverse(rgb.G);
rgb.B = reverse(rgb.B);
return rgb;
}
void setLeds() {
const unsigned char bitTable[4] = {0xEF, 0xE8, 0x0F, 0x08};
unsigned char gieState, leds = NUMBER_OF_LEDS;
unsigned short rgb565;
unsigned short *data = (unsigned short*) pixels;
gieState = GIE;
GIE = 0;
while (leds--) {
rgb565 = *data++;
while (!TXIF);
TXREG = bitTable[rgb565 & 0x03];
rgb565 >>= 2;
while (!TXIF);
TXREG = bitTable[rgb565 & 0x03];
rgb565 >>= 2;
while (!TXIF);
TXREG = bitTable[rgb565 & 0x03];
while (!TXIF);
TXREG = bitTable[rgb565 & 0x03];
rgb565 >>= 2;
while (!TXIF);
TXREG = bitTable[rgb565 & 0x03];
rgb565 >>= 2;
while (!TXIF);
TXREG = bitTable[rgb565 & 0x03];
rgb565 >>= 2;
while (!TXIF);
TXREG = bitTable[rgb565 & 0x01];
while (!TXIF);
TXREG = bitTable[rgb565 & 0x01];
rgb565 >>= 1;
while (!TXIF);
TXREG = bitTable[rgb565 & 0x03];
rgb565 >>= 2;
while (!TXIF);
TXREG = bitTable[rgb565 & 0x03];
rgb565 >>= 2;
while (!TXIF);
TXREG = bitTable[rgb565 & 0x01];
while (!TXIF);
TXREG = bitTable[rgb565 & 0x01];
}
//Just delay
for (rgb565 = 0; rgb565 < 150; rgb565++);
GIE = gieState;
}
void setLed(unsigned char led, RGB_TYPE rgb) {
unsigned short rgb565;
rgb.R = reverse(rgb.R);
rgb.G = reverse(rgb.G);
rgb.B = reverse(rgb.B);
rgb565 = ((rgb.B & 0b00011111) << 11) | ((rgb.R & 0b00011111) << 6) | ((rgb.G & 0b00111111));
pixels[led * 2 + 0] = ((rgb565)&0xFF);
pixels[led * 2 + 1] = ((rgb565 >> 8)&0xFF);
}
#endif