SIK Experiment Guide for the Arduino 101/Genuino 101 Board (Spanish)
This Tutorial is Retired!
This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.
Experimento 8: Mezclar colores con el RGB
Introducción
En este circuito trabajará con varios potenciómetros. En el experimento 1 ha utilizado un solo potenciómetro. Ahora vamos a subir el listón y utilizaremos tres. ¿Por qué tres? Va a utilizar cada potenciómetro para controlar el brillo de tres colores (rojo, verde y azul) de un LED RGB a fin de crear interesantes combinaciones con los colores básicos que ha utilizado en el experimento 3.
Saque el pincel y prepárese para pintar un arcoíris.
Necesitará los siguientes elementos:
- 1x placa de pruebas
- 1x placa Arduino 101 o Genuino 101
- 1x LED RGB de cátodo común
- 3x resistencia de 100 Ω
- 15x cables puente
- 3x potenciómetros
¿No tiene el SIK?
Si está realizando este experimento y no dispone del SIK, le sugerimos que use estos elementos:
También necesitará una placa Arduino 101 O Genuino 101.
Lectura sugerida
Antes de continuar con este experimento, le recomendamos que se familiarice con los conceptos en los siguientes tutoriales:
Conexión del hardware
¿Preparado para comenzar a conectar todo? Consulte el diagrama de cableado y la tabla de conexión siguientes para ver cómo está conectado todo.
Componentes polarizados | Preste especial atención a las marcas de los componentes que indican cómo colocarlo en la placa de pruebas. Los componentes polarizados solo se pueden conectar a un circuito en una sola dirección. Los componentes polarizados están resaltados con un triángulo de advertencia amarillo en la tabla. |
Diagrama de cableado del experimento
Abrir el boceto
Abra el software IDE de Arduino en su ordenador. La codificación en el lenguaje de Arduino controlará el circuito. Abra el código del circuito 8; para ello, acceda a "SIK Guide Code" (Guía de códigos de SIK) que ha descargado y guardado en la carpeta "Examples" (Ejemplos) anteriormente.
Para abrir el código vaya a: File > Examples > SIK Guide Code > Circuit_08 (Archivo > Ejemplos > Guía de códigos de SIK > Circuito_08)
**Copie y pegue el siguiente código en el IDE de Arduino. Cárguelo y vea qué es lo que ocurre. **
language:cpp
/* SparkFun Inventor's Kit
Example sketch 08
POTENTIOMETER
Measure the position of each potentiometer and map it to
the red, green and blue values! Then write those values to the RGB LED.
This sketch was written by SparkFun Electronics,
with lots of help from the Arduino community.
This code is completely free for any use.
Visit http://learn.sparkfun.com/products/2 for SIK information.
Visit http://www.arduino.cc to learn more about Arduino.
*/
//create constants for the three analog input pins
const int redPot = 0;
const int greenPot = 1;
const int bluePot = 2;
//create constants for the three RGB pulse width pins
const int redPin = 5;
const int greenPin = 6;
const int bluePin = 9;
//create variables to store the red, green and blue values
int redVal;
int greenVal;
int blueVal;
void setup()
{
//set the RGB pins as outputs
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop()
{
//read the three analog input pins and store their value to the color variables
redVal = analogRead(redPot);
greenVal = analogRead(greenPot);
blueVal = analogRead(bluePot);
//use the map() function to scale the 10 bit (0-1023) analog input value to an 8 bit
//(0-255) PWM, or analogWrite() signal. Then store the new mapped value back in the
//color variable
redVal = map(redVal, 0, 1023, 0, 255);
greenVal = map(greenVal, 0, 1023, 0, 255);
blueVal = map(blueVal, 0, 1023, 0, 255);
// use the analogWrite() function to write the color values to their respective
// RGB pins.
analogWrite(redPin, redVal);
analogWrite(greenPin, greenVal);
analogWrite(bluePin, blueVal);
}
Código a tener en cuenta
analogWrite(6,233);
La función analogWrite se utiliza para controlar la PWM en los pines 9, 6, 5 y 3 de la placa 101. Puede escribir un valor en el rango de 0 a 255, en el que 255 equivale a completamente encendido y 0 equivale a completamente apagado.
lightLevel = map(lightLevel, 0, 1023, 0, 255);
Parámetros
map(value, fromLow, fromHigh, toLow, toHigh)
value: el número que asignar
fromLow: el límite inferior del rango actual del valor
fromHigh: el límite superior del rango actual del valor
toLow: el límite inferior del rango objetivo del valor
toHigh: el límite superior del rango objetivo del valor
Cuando leemos una señal analógica con analogRead()
, será un número de 0 a 1023. Pero cuando queremos controlar un pin de PWM con analogWrite()
, será un número de 0 a 255. Podemos "adaptar" el rango superior al rango inferior con la función map()
. Consulte la página de referencia de asignaciones para obtener más información.
Lo que debería ver
Debería ver que el LED RGB cambia de color cuando enciende los tres potenciómetros. Cada potenciómetro controlará un color determinado (rojo, verde y azul). Cuando se activan todos los potenciómetros hasta el valor máximo, debe ver una luz blanca del RGB. Cuando todos están desactivados, el RGB debe estar completamente apagado. Si no es así, consulte la sección Solución de problemas a continuación.
Solución de problemas
Funciona de manera esporádica
Esto se debe probablemente a una conexión deficiente con los pines del potenciómetro. Para solucionarlo, apriete el potenciómetro o mueva el circuito del potenciómetro a otro lugar en la placa de pruebas.
Sigue sin funcionar
Compruebe que no ha conectado accidentalmente el contacto deslizante (pin central), la resistencia en el potenciómetro, al pin digital 0 en lugar de al pin analógico 0. (La fila de pines debajo de los pines de alimentación).
El LED no se enciende
Los LED solo funcionan en una dirección. Vuelva a comprobar las conexiones.