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 LEDint 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. checkBalance();
void loop() {}
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);
}
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.