Вы находитесь на странице: 1из 4

Detector de Colores con Arduino - Visual

Basic
Categora: Arduino ltima actualizacin: Jueves, 15 Octubre 2015 Escrito por Jos Luis
Bejarano
0 Comments
En esta oportunidad vamos a realizar un proyecto de un detector de colores con Arduino,
conectado a Visual Basic Net para mostrar en pantalla un cuadrado con el color del objeto
que se le acerca al sensor.
Lista de materiales:
- (1) tarjeta Arduino cualquier modelo.
- (1) Sensor CNY70.
- (1) Resistencia de 220.
- (1) Resistencia de 22K.
- Cables de conexin.
El CNY70 es un sensor ptico reflexivo con salida a transistor de corto alcance, el cual
consta de un emisor y receptor ambos en el mismo encapsulado apuntando en la misma
direccin, y funciona gracias a la capacidad de reflexin del objeto y la deteccin del rayo
reflejado por el receptor.
Es muy utilizado en los robots seguidores de lneas para detectar las lneas de color negro
sobre un fondo blanco, ya que segn el circuito cuando el objeto es de color blanco refleja
la luz proveniente del emisor y entra en conduccin, en cambio, si el objeto es de color
negro, este no refleja la luz y el transistor no conduce. Si el objeto es de color blanco,
refleja la luz y el transistor pasa a estado de conduccin.

Aspecto fsico del CNY70

El sensor CNY70 puede ser conectado al Arduino como entrada digital o como entrada
anloga. En el modo digital solamente se tendr un nivel lgico bajo o un nivel lgico alto
presente en su salida. En este proyecto lo conectaremos a la entrada anloga del Arduino;
de esta manera, dependiendo del color del objeto, este reflejara cierta cantidad de luz y se
tendr en la entrada del Arduino valores de 0 a 1023 los cuales variaran sensiblemente en
funcin de la distancia a la que se encuentre el objeto al sensor, y del material del objeto.
Por ejemplo, si se acerca un objeto de color rojo a una distancia de 5mm del sensor, puede
tener una lectura anloga de 820, si se modifica la distancia del mismo objeto a 8mm, esta
puede variar a 870 por poner un ejemplo. Por lo tanto, es recomendable que se mentenga
siempre la misma distancia entre el objeto y el sensor CNY70.
El siguiente es el diagrama esquemtico, se observa que es muy sencillo de realizar,
solamente usaremos un pin del Arduino, el marcado como A3.

El cdigo en Arduino tambin es muy sencillo, declaramos la constante a utilizar,


configuramos el puerto serie y procedemos en el ciclo principal a leer constantemente el
valor de la entrada analgica y enviarla por el puerto seria cada 200 milisegundos para ser
procesada por el programa en visual basic net.
const int sensor
int estado=0;

= A3; // Sensor conectado a la entrada anloga A3.

void setup()
{
pinMode(sensor,INPUT);
Serial.begin(9600);
}

void loop()
{
//Leo el estado del sensor
estado = analogRead(sensor);
Serial.println(estado);
delay(200);
}
El cdigo en Visual Basic Net es el siguiente:
Public Class Form1
Dim Ndato As String
Dim numero As Int32
Private Sub Serial_DataReceived(ByVal sender As Object, ByVal e As
System.IO.Ports.SerialDataReceivedEventArgs) Handles Serial.DataReceived
'Leo los 3 primeros caracteres del dato recibido por el puerto
serie
dato = Microsoft.VisualBasic.Left(Serial.ReadLine, 3)
numero = CInt(dato)
If numero >= 975 Then
pct.BackColor = Color.Yellow
ElseIf numero >= 920 And numero <= 960 <Then
pct.BackColor = Color.Blue
ElseIf numero >= 860 And numero <= 880 Then
pct.BackColor = Color.Red
ElseIf numero >= 750 And numero <= 860 Then
pct.BackColor = Color.Red
ElseIf numero > 510 And numero <= 580 Then
pct.BackColor = Color.Green
ElseIf numero >= 240 And numero <= 260 Then
pct.BackColor = Color.Black

Else

pct.BackColor = Color.White
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Serial.Open()

End Sub
End Class

Observamos en el cdigo que a travs de un switch, dependiendo del valr recibido se


colorea el control tipo Picture del formulario. Dichos valores como se mencion
anteriormente son variables, y fueron las lecturas arrojadas en las mediciones. Ustedes
deben leer primero el valor que reciben dependiendo de el color, material y distancia del
objeto al sensor, y asi configurarlo en el cdigo del programa en visual basic net.

Descargar cdigo fuente en Arduino


https://www.dropbox.com/s/oy9z3ypotn7sy5h/DetectorDeColores.ino?dl=0
Descargar cdigo en Visual Basic
https://www.dropbox.com/s/vfgsz3sd4u3cc95/Cny70.rar?dl=0
Siguenos en twitter
https://twitter.com/sistemasymicros
Ver video de funcionamiento
https://youtu.be/Ds_hY0E9BmQ
Suscribete a mi cana el youtube

Вам также может понравиться