Usando un LED RGB para detectar colores (4 / 6 paso)

Paso 4: Código de Arduino

Abrir el entorno de Arduino y crear un dibujo nuevo haciendo clic en archivo - nuevo. Para aquellos que no quieren seguir, he incluido el código como un archivo de texto. Copiar y pegarlo en un nuevo sketch en Arduino, y usted es buenos ir.

Declaraciones

El comienzo de un boceto es donde hacemos nuestras declaraciones, así que escriba el código siguiente en la ventana del entorno.

/ Definir colores alfileres sensor LED
int ledArray [] = {2,3,4};

booleano para saber si se ha establecido el equilibrio
Boolean balanceSet = false;

titulares de lugar para detectar el color
int rojo = 0;
verde int = 0;
int azul = 0;

flotadores para arreglos de discos de color
Float colourArray [] = {0,0,0};
Float whiteArray [] = {0,0,0};
Float blackArray [] = {0,0,0};

marcador de posición para media
int avgRead;

' / /' está reservado para comentarios denota, por lo tanto no necesita el texto en líneas que comienzan con ' / /' para el bosquejo a trabajar.

El resto son algunos nombres que estamos dando a algunos marcadores de posición y las declaraciones de para qué tipo de información que contienen.

Como se puede ver, comenzamos por establecer una matriz para mantener los números. Corresponden a los pines conectados a los LEDs de diferentes colores en el Arduino.

A continuación declaramos un valor booleano para comprobar o no equilibrio se ha realizado. Es un valor booleano que devuelve true o false.

Vamos crear algunos titulares de lugar de los valores de color y algunos arreglos de discos a utilizar para mantener los datos de escaneo y equilibrar el color detectado.

Aunque nosotros estamos aún no terminados, siga adelante y guarde su dibujo. Darle un nombre que sea significativo, algo así como coloursensor.pde tal vez.

Programa de instalación

El siguiente paso en la creación de un sketch de Arduino es escribir la función de configuración. Instalación se ejecuta cuando el Arduino primero botas, así que esto es donde decimos el Arduino lo que cómo queremos utilizar las clavijas y la configuración de otras funciones que podemos necesitar como comunicación serial.

Escriba lo siguiente abajo el código que acaba de entrar.

void setup() {}

configurar las salidas para el sensor de color
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);

empezar comunicación serial
Serial.Begin(9600);

}

No hay mucho para esta sección. Aquí estamos simplemente diciendo el Arduino que pretendemos usar los pines 2, 3 y 4 como salidas. Esto es necesario si queremos a la luz de los LEDs... y lo hacemos, aunque sólo sea muy brevemente.

La siguiente parte es decir el Arduino que pretendemos hacer uso del puerto serial, y que debe ser abierto y listo para comunicar a la velocidad en baudios especificada (entre paréntesis).

Lazo

La función de bucle es típicamente donde la magia ocurre en un Arduino. Es el código que se ejecuta una y otra vez una vez que se arranca el Arduino y configuración se ha pasado a través de. Poner el bit siguiente de código en función de su configuración.
void loop() {}

checkBalance();
checkColour();
printColour();
}

Bueno a primera vista parece que realmente no hay mucho allí. Pero son cada las llamadas a funciones privadas. En algunos proyectos de encontrar este tipo de enfoque funciona bien. Hace más fácil de leer (creo) como cada bloque de código está separada con un nombre significativo, y podemos ver lo que el bosquejo va a hacer un vistazo.

Primero comprobará el equilibrio, entonces comprobará el color, y luego se imprimirá el color para el puerto serie para que podamos ver los valores que leen.

Vamos a explorar la primera función privada, checkBalance y añadir a nuestro código. Escriba lo siguiente debajo de la función de bucle.
void checkBalance() {}
Compruebe si el equilibrio ha sido establecido, si no, lo
if(balanceSet == false) {}
setBalance();
}
}

Como puede ver, si el valor de balanceSet (valor booleano) está establecido en false, entonces hace una llamada a una función secundaria llamada setBalance, donde montamos el blanco y negro equilibrio lecturas. Esto sólo sucederá cuando arrancar el arduino una vez.
void setBalance() {}
establecer el balance de blancos
Delay(5000);                              retraso de cinco segundos, este da nos tiempo para obtener una muestra blanco delante de nuestro sensor
analizar la muestra blanco.
ir a través de cada luz, obtener una lectura, conjunto de la base de lectura para cada color rojo, verde y azul para el conjunto blanco
para (int i = 0; i < = 2; i ++) {}
digitalWrite(ledArray[i],HIGH);
Delay(100);
getReading(5);          número es el número de exploraciones por medio de esta función todo es redundante, una lectura funciona igual de bien.
whiteArray [i] = avgRead;
digitalWrite(ledArray[i],LOW);
Delay(100);
}
hecho análisis blanco, ahora se pulso azul Dile que es hora de que la muestra de negra (o gris).
ajustar balance negro
Delay(5000);              Espere cinco segundos por lo que podemos posicionar nuestra muestra negro
adelante y exploración, establece los valores de color para rojo, verde y azul cuando se expone al negro
para (int i = 0; i < = 2; i ++) {}
digitalWrite(ledArray[i],HIGH);
Delay(100);
getReading(5);

blackArray [i] = avgRead;
blackArray [i] = analogRead(2);
digitalWrite(ledArray[i],LOW);
Delay(100);
}
valor booleano para saber que el equilibrio se establece
balanceSet = true;
Delay(5000);     otra demora 5 segundos para hacernos coger para arriba
}
Si notaste, hicimos una llamada a una función getReading.  Vamos a añadir ese derecho después de que pusimos en la función checkColour.

Una vez establecidos nuestros números de equilibrio, pasamos a leer finalmente el color. La función es básicamente la misma que setBalance, con la incorporación de las matemáticas que equilibra la lectura. Vamos a añadir ahora.
void checkColour() {}
para (int i = 0; i < = 2; i ++) {}
digitalWrite(ledArray[i],HIGH);  vuelta o el LED, rojo, verde o azul dependiendo de que la iteración
Delay(100);                      retardo para permitir CdS para stabalize, son lentos
getReading(5);                  tomar una lectura sin embargo muchas veces
colourArray [i] = avgRead;        establece el color actual en la gama media de la lectura
Float greyDiff = whiteArray [i] - blackArray [i];                    la vuelta posible más alto menos el más bajo devuelve el área para valores entre
colourArray [i] = (colourArray [i] - blackArray [i]) / (greyDiff) * 255; la lectura devuelve menos el valor más bajo dividido por la posible gama multiplicada por 255 nos dará un valor aproximadamente entre 0 y 255 que representa el valor de la reflectividad actual (para el color) que está expuesta) de lo que se está escaneando
digitalWrite(ledArray[i],LOW);   Apagar el LED actual
Delay(100);
}


}

También necesitamos añadir a nuestro getReading de función, de lo contrario nuestro bosquejo no tiene valores reales. Esta función sólo nos permite realizar algunas lecturas y media hacia fuera. Esto permite una lectura ligeramente más suave.
void getReading (int veces) {}
int leer;
int cuenta = 0;
la lectura sin embargo muchas veces se pidió y añadir
para (int i = 0; i < veces; i ++) {}
lectura = analogRead(0);
cuenta = lectura + recuento;
Delay(10);
}
calcular el promedio y lo
avgRead = (recuento) y horas;
}

Ahora tenemos un color leer en nuestra matriz de retención de color, todo lo que necesitamos hacer ahora es salir a la pantalla. Recuerde que configuramos comunicación serial en la función de configuración, todo lo que tenemos que hacer ahora es utilizar el puerto serie para enviar nuestros datos. El entorno de Arduino incluye a un monitor de la serie, que le permitirá ver los datos de como se pasa de la Arduino. Así que vamos a añadir la última función el dibujo.
//prints el color de la matriz de color, en el siguiente paso, le enviaremos este tratamiento a ver que bien funciona el sensor.
void printColour() {}
Serial.Print ("R =");
Serial.println(int(colourArray[0]));
Serial.Print ("G =");
Serial.println(int(colourArray[1]));
Serial.Print ("B =");
Serial.println(int(colourArray[2]));
Delay(2000);
}

Esto mostrará algunos datos que se ve algo como esto
R = 231
G = 71
B = 0
que serían los equivalentes a un color rojo-naranja.   He dejado que este sketch super sencillo. Pueden vestir para arriba como le parezca. La idea es mostrar cómo hacer y utilizar el sensor, aplicación creativa depende de usted.

Ahora puede guardar el archivo de nuevo y subirlo a la Arduino. Tu Arduino debe comenzar a correr el bosquejo, las pequeñas luces deben oscilar.

El dibujo es muy básico. Me he ofrecido como un bloque de edificio y que le muestre cómo usar el sensor.

Artículos Relacionados

Multi Color luz espada que brilla intensamente - LEDs RGB para pintar con luz.

Multi Color luz espada que brilla intensamente - LEDs RGB para pintar con luz.

acabo de láminas nuevas para mi limpiaparabrisas y el paquete al instante me hizo querer empezar a luchar de la espada. Espadas de luz Blinky para pintar con la luz ¡ SÍ!!!!!!Puede crear este proyecto para:Efectos especiales de fotografía llamado la
Ofertas LEDs RGB para cualquier proyecto (WS2812, también conocido como NeoPixels)

Ofertas LEDs RGB para cualquier proyecto (WS2812, también conocido como NeoPixels)

Cuando estamos trabajando con LEDs, nos gusta a menudo controlar su estado (encendido/apagado), el brillo y el color. Hay muchas maneras de ir sobre esto, pero ninguno son como una solución como la WS2812 RGB LED compacta. En su paquete pequeño de 5
Usando el LED RGB con Arduino

Usando el LED RGB con Arduino

Hola chicos este es mi primer instructivo y mostrará usted cómo controlar LEDs RGB (rojo verde y azul). su no tan difícil de hacer pero los materiales que necesitará son;-Una placa de Arduino-RGB LED-los cables de puente-Breadboard(optional)recomiend
Color calibrar LEDs RGB con un Arduino

Color calibrar LEDs RGB con un Arduino

Más gente cree LED y al final de las relaciones de Arduino con un abrir y cerrar del bosquejo. Después de eso tienes que ir hacia motores, casas inteligentes y otras cosas 'serio'. Bueno, tal vez soy lento o tal vez es sólo que soy un artista gráfico
Con un solo LED RGB o una tira de LED para mostrar información: reloj, termómetro y un comunicador raro

Con un solo LED RGB o una tira de LED para mostrar información: reloj, termómetro y un comunicador raro

Uno de los primeros proyectos que hice con un Arduino era una guirnalda de luces de Navidad. De hecho, fue hecho de una tira de LED RGB sencilla cortar en dos, como Arduino tiene sólo 6 salidas PWM de hardware. No quería triviales arcoiris y colores
WiFi controló tira de LED RGB

WiFi controló tira de LED RGB

Los utiliza para controlar tiras de LED RGB control remoto IR a veces puede llegar a ser irritante debido a su gama limitada y buscando el control remoto cuando no las encuentra. Este proyecto simple, pero eficaz puede resolver un problema mediante e
Efectos de iluminación LED RGB con Abalorio de Adafruit

Efectos de iluminación LED RGB con Abalorio de Adafruit

Este instructable es para hacer efectos de luz programables usando un LED RGB (este es un LED que contiene elementos individuales rojo, verde y azul) y el bajo costo microcontrolador baratija de Adafruit. Estas luces pueden usadas y reutilizadas para
4 x 4 x 4 cubo del LED RGB

4 x 4 x 4 cubo del LED RGB

un tiempo atrás, cuando empecé a usar Arduino, mi primer proyecto fue una 4 x 4 x 4 cubo del LED, construí de una guía que encontré aquí en Instructables, no sabía nada acerca de programación y poco de electrónica, sin embargo, he podido construirlo
Sensor ping controlar LEDS RGB

Sensor ping controlar LEDS RGB

Como parte de mi proyecto este semestre necesitaba ser capaces de controlar unos LEDs RGB usando un sensor ping. Para mi proyecto he querido mi LED a desaparecer a través de colores pero cuando alguien muy cercano al proyecto que quería los LEDs rojo
Cómo utilizar un LED RGB

Cómo utilizar un LED RGB

usando un LED RGB, usted puede completar un ciclo a través de todos los colores. Útil para hacer, lámpara de estado de ánimo, robot expresivo o efectos de luz frías.Pero para establecer simplemente el color (tonalidad) puede ser un poco complicado, p
Tres en raya electrónico con LEDs RGB

Tres en raya electrónico con LEDs RGB

juego de LED RGB para jugar tres en raya para dos jugadores. Utiliza 2 AVR microcontroladores: Mega16 y Mega8. RGB LED permitir que cada usuario elija su color representan Cruz / tuerca.
Ingeniería inversa: Bombilla de LED RGB con mando a distancia IR

Ingeniería inversa: Bombilla de LED RGB con mando a distancia IR

compramos 20 de estas bombillas LED RGB para una fiesta en el trabajo, pero estaba un poco decepcionado con las funciones de fundido de color que proporcionaban. Así que decidí tomar a un ingeniero inverso, aparte el protocolo de IR y ver si tenía má
Internet botón - LED RGB

Internet botón - LED RGB

Después de un montón de tutoriales sobre partículas fundamentales, impartí clases de creación de una serie utilizando el botón de internet y había también publicado algunos tutoriales en el también. Pero lo que no enseño era cómo controlar los LED RG
LED RGB controlado con arduino

LED RGB controlado con arduino

Hola,Esto es un poco instructable para mostrar cómo hacer Led RGB (Red Green Blue) controlado con arduino. Contiene esquemas del circuito y un pequeño programa C# que permite para cambiar el color del Led.Paso 1: Hacer el circuito Se necesita:-Arduin