Ir al contenido principal

Sensor de color tcs300 Arduino / Visual Studio

Este sensor de color (tcs300) RGB hecho para Arduino, permite reconocer un objeto en base al color.  Es perfecto para hacer clasificadores.
 En este caso lo necesitaba para hacer un proyecto en el cual  dependiendo el color de objeto que pasara por el sensor me mostrara cual es el color de este objeto y una foto de este producto en una pantalla,  sin embargo el Arduino al momento de mostrar los datos es en un puerto serial y que con el IDE  de arduino no se puede hacer esto. En ese caso conecte Arduino  con Visual Studio versión 2010 (visual basic .NET).


Sensor de color tcs300

Conexión:


Sensor - Arduino
VCC = 5V
Gnd = gnd
S1 = A4
S0 = A3
S2 = A1
S3 = A2
out = A0
Led= 5V

Código en :

const int s0 = A3;  
const int s1 = A4;  
const int s2 = A1;  
const int s3 = A2;  
const int out = A0;   
// valores
int red = 0;  
int green = 0;  
int blue = 0;  


void setup(){  
  Serial.begin(9600); 
  pinMode(s0, OUTPUT);  
  pinMode(s1, OUTPUT);  
  pinMode(s2, OUTPUT);  
  pinMode(s3, OUTPUT);  
  pinMode(out, INPUT);   
  
  digitalWrite(s0, HIGH);  
  digitalWrite(s1, HIGH);  
void loop(){
    color();

if (red < blue && green > blue && red < 35 ){
  Serial.println("Rojo");
}else if(blue < red && blue < green && green < red){
  Serial.println("Azul");
} else if(red > green && blue > green){
  Serial.println("Verde");
} else {
  Serial.println("nn");
}
delay(5000);
}

  void color() {    
  digitalWrite(s2, LOW);  
  digitalWrite(s3, LOW);  
  red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  
  digitalWrite(s3, HIGH);  
  blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  
  digitalWrite(s2, HIGH);  
  green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  
    } // fin de programa


perfecto con este programa les mostrara en el puerto serial si el objeto que lee el sensor es color Rojo, Azul o verde si no es ninguno de estos les mostrara "nn" indicando que es color que nuestro código no lee.

cabe destacar que el sensor lo que lee es el reflejo que emite cada objeto al ser iluminado por los leds que posee nuestro sensor por lo tanto muestra un valor en números de cual es el valor de iluminación del objeto .

Código en Visual Studio 2010: 
Primero que nada el código esta desarrollado en visual .NET

Form normal 3 botones 3 picture box y 5 textbox

Primeros pasos:
Los 3 picture box en el evento load del programa le indicamos que estaran escondidas con la funcion .hide()
ejemplo: PictureBox1.Hide()

Agregamos el componente serialPort de la barra de herramientas a nuestro proyecto:
Este componente va a permitir la comunicación del Arduino con nuestro programa
Al textbox seleccionado le nombre "txt_puertos" y el botón que dice conectar tendrá el siguiente código:



En el Load  se le indica el nombre del puerto en el cual esta conectado el Arduino , el BaudRate que tiene que ser el mismo con el que programamos el código en el arduino  y como mencione ya anteriormente los PictureBox los escondemos.

Estos tres textbox los tenemos ocultos en la propiedad visible en las propiedades del elemento.
de izquierda a derecha el nombre de los objetos es : "txt_leer" ,  "txt_result" y "Txt_fin".


En el botón leer ira el siguiente código: 

Uno de los inconvenientes de trabajar con Arduino y visual es la forma en como  se reciben los datos y poder compáralos. Por la forma en la cual se envían los datos del puerto serial cuyo datos que se reciben en el textbox  no se remplazan si no que va todos esa información del puerto serial que se recibe cada tanto tiempo recae en el textbox donde se le indique que vaya la información. Por la tanto decidí hacer de la siguiente manera para poder comparar valores:

Se crean dos variables "S" y "V" como string

En la variable "S" se le asignan los datos que vienen del Arduino.

Al textbox "Txt_leer" le asignamos el valor que cae en la variable "S".

A la Variable "V"  le aplico la función Lset(Devuelve una cadena alineada a la izquierda que contiene la cadena especificada y con la longitud determinada.)  le indico que al contenido de la variable "S" me devuelva los últimos 4 caracteres  que esta contiene.(esto lo hacemos con el fin de eliminar todos los demás datos acumulados del puerto serial que caen sobre" txt_leer")

Ahora a textbox llamdo "txt_result" le asigno el valor de de la variable "V" 

ahora creo una variable llamada "valor" en la cual le indico que el valor que se presenta en el textbox llamado "txt_result" le elimine espacios en blanco si esta contiene.

finalmente la variable "valor" se la asignamos al textbox llamado "txt_fin" y al mismo tiempo que me muestre el valor de esa variable en un messagebox.

Listo tenemos ya el dato que lee el sensor del Arduino como queríamos para poder compararlo y que al final me muestre la foto de acuerdo al color leído.

Le indico que si "Txt_fin.text" es igual  a tal color me muestre las imágenes que corresponden a ese color si no que oculte las imágenes y me muestre color invalido.
Txt_color.text al final lo que se hace simplemente se le indica que color el sensor esta leyendo.


Este proyecto me recuerda en especial a un buen catedrático que tuve  en el colegio el cual me hizo escribir todas las funciones de cadena y recalco la importancia de ellas, a lo cual yo respondí  que nunca iba a utilizar y que era perdida de tiempo, ahora me causa gracia eso que le  dije, saludos y gracias Profesor Marco Nuñez.

 Les dejo el link de descarga de los archivos tanto del proyecto en Arduino tanto como en Visual Studio version 2010:

Descargar archivos

Comentarios

Entradas populares de este blog

Usar whatsapp en la computadora( Web WhatsApp)

WHATSAPP WEB En el siguiente blog veremos como usar al famosa aplicación de chat en nuestra computadora, ya que todos mas de alguna vez nos preguntamos como  utilizar la aplicación  en nuestro computador. 1.)Como primer paso abriremos la siguiente dirección web :  https://web.whatsapp.com/  y veremos que nos carga una pagina con un código. Nota: e l código esta marcado por un cuadro. 2.)Abrir la aplicación WhatsApp en nuestro celular y seleccionar  el botón con los tres puntos, donde indica la imagen. 3.) Se abrirá un pequeño menú y seleccionamos la opción que dice web WhatsApp. 4.) Se abrirá la cámara de su celular  y con ella vamos a escanear el  código que nos apareció en el paso numero uno. 5.)Les cargara la pagina con sus chats y contactos y así estaría listo para usar WhatsApp en la computadora. Nota: El celular siempre tiene que estar conectado a internet ya sea mediante wifi o plan de datos en caso contrario no podrá funcionar

Módulos para Arduino

Módulos Arduino  Un sensor es un dispositivo capaces de detectar valores fisicos tales como temperatura, distancia, movimiento, presión, humedad, aceleración, intesidad de la luz. Lo que hace el modulo es transformar información del entorno y transformarlo en variables eléctricas para que pueda ser utilizado por el microcontrolador en este caso el Arduino. La famosa placa italiana que es utilizada en todo el mundo para proyectos de electrónica no seria tan funcional si sus diversos módulos a continuación veremos los mas populares para esta gran placa microcontroladora. Sensor Ultrasónico Detecta objetos y calcular distancias de forma ultrasónica a la que se encuentra el objetivo. contiene 4 pines: VCC(voltaje)GND(tierra)TRIG(Disparo del ultrasónico) y el ECHO(recepción del sonido.                                                                                                                                                              Sensor Pir Detecta movi

Introducción Arduino

ARDUINO Es  un microcontrolador de código abierto, el cual permite interactuar con el mundo físico con una gran cantidad de sensores, pulsadores, motores controlar luces y otro actuadores. Posee su propio IDE(Entorno de desarrollo)para crear los programas para la placa. Página web oficial de Arduino: https://www.arduino.cc/ Se pueden hacer proyectos interactivos que funcionen por si solo o comunicarse con otros dispositivos tales como una pc o un celular. Partes del Arduino USB Se utiliza para cargar el código que hemos creado a la tarjeta y también se puede utilizar para alimentar la tarjeta. Alimentador Externo Sirve para alimentar al arduino en una forma externa ya sea con cualquier tipo de pilas las famosas "AA" o las de "9V" por ejemplo o con baterias externas como de celular. Tener cuidado con el voltaje recomendado de 7V a 12V. VIN Es otra forma de alimentación externa. Puedes proporcionar voltaje a través de este pin. 5V Utilizada