Construcción de la placa de circuito
31 julio, 2010 Deja un comentario
En este post se mostró el diseño de la placa de circuitos para controlar el LED RGB con el Arduino. Iniciamos el proceso de construcción, para el cual se requirió preparar el entorno de trabajo:
- Placa perforada para prototipos.
- Cautín, de 45Watts.
- Estaño para soldar.
- Tercera mano.
- Desoldador.
- Pinzas varias.
- Herramienta pelacables.
- Cable de red pelado.
- Componentes electrónicos.
- Pines, precortados en la cantidad deseada.
- Marcador.
- Mucha, pero mucha, paciencia.
Iniciamos el proceso siguiendo el diseño, aunque fue reinterpretado en el momento dado el tamaño de las resistencias (de 2 y 1.5Watts).
El primer caso es colocar los componentes, cortar y doblar las patillas:
Una vez fijadas, se sueldan los puntos de apoyo:
Este es el resultado final de soldadura, ya con los cables:
Este es el resultado final del trabajo, con las cables de la LED ya instalados, el soporte y las marcas indicativas:
Pueden observar el funcionamiento de la misma en el siguiente vídeo de prueba:
El código cargado en el Arduino para esta demostración es el siguiente:
/**
* Flame Of Knowledge - LED driver
*
* @license Code: GNU/GPL http://www.gnu.org/licenses/gpl.html
* @author Havok - Carlos Jenkins Pérez
* @copyright Carlos Jenkins, 2010
* @link http://www.cjenkins.net/
*
*/
// Hardware channels
const byte redPin = 11;
const byte greenPin = 10;
const byte bluePin = 9;
const byte debugPin = 13; //DEBUG
// Channels color values
byte red = 0;
byte green = 0;
byte blue = 0;
void setup() {
// Initialize the led channels as outputs
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
// DEBUG
pinMode(debugPin, OUTPUT);
}
void loop() {
const unsigned int wait = 4000;
//"Red" (255, 0, 0 )
fadeTo(255, 0, 0, wait);
//"Yellow" (255, 255, 0 )
fadeTo(255, 255, 0, wait);
//"Green" (0, 255, 0 )
fadeTo(0, 255, 0, wait);
//"Cyan" (0, 255, 255)
fadeTo(0, 255, 255, wait);
//"Blue" (0, 0, 255)
fadeTo(0, 0, 255, wait);
//"Magenta" (255, 0, 255)
fadeTo(255, 0, 255, wait);
//"White" (255, 255, 255)
fadeTo(255, 255, 255, wait);
//"Black" (0, 0, 0)
fadeTo(0, 0, 0, wait);
}
void fadeTo(byte desiredRed, byte desiredGreen, byte desiredBlue, unsigned int desiredTime) {
// Calculate the required loops
byte steps =
max(1, // Check if cero to avoid division by cero
max(
max(
abs(red - desiredRed), abs(green - desiredGreen)
), abs(blue - desiredBlue)
)
);
// Calculate delay
int milliseconds = desiredTime / steps;
// Fade all channels at the same time
for(int i = 0; i <= steps; i++) {
// Check the red channel
if(red != desiredRed) {
if(red < desiredRed) {
red++;
} else {
red--;
}
analogWrite(redPin, red);
}
// Check the green channel
if(green != desiredGreen) {
if(green < desiredGreen) {
green++;
} else {
green--;
}
analogWrite(greenPin, green);
}
// Check the blue channel
if(blue != desiredBlue) {
if(blue < desiredBlue) {
blue++;
} else {
blue--;
}
analogWrite(bluePin, blue);
}
// Delay this loop
delay(milliseconds);
}
return;
}
// DEBUG
void flag() {
digitalWrite(debugPin, HIGH); // Sets the LED on
delay(250); // Waits for a 250 millis
digitalWrite(debugPin, LOW); // Sets the LED off
delay(250); // Waits for a 250 millis
}