Re: Fagges LED termometer
Postat: 9 juni 2013, 19:56:48
LaRda, Gahh, din glädje dödare.
Den där LED-tejpen såg ju intressant ut för ändamålet.
Den där LED-tejpen såg ju intressant ut för ändamålet.

Svenskt forum för elektroniksnack.
https://elektronikforumet.com/forum/
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