Competencia 4: Proyecto de Arduino, clasificador de color 2/4
1.Introducción.
En esta parte del proyecto se creara el código para el clasificador de color, se verán las variables y los métodos para que todo pueda ser funcional, también se hará una simulación para corroborar que el código funciona.
2.Objetivo del proyecto parte 2 de 4.
Crear el código para el
clasificador de color, esta es una de las partes más importantes del proyecto,
ya que es el alma para que el proyecto pueda funcionar, también se comprobara
el funcionamiento del código con una simulación (Más adelante se implementaran
los elementos electrónicos para ensamblar todo y probarlo).
3.Elementos para crear el código y probarlo.
·
Tener Arduino descargado
·
Tener una cuenta en tinkercad
4.Codigo comentado.
//Clasificador de color. Equipo 1 Lenguajes de interfaz
#include <Servo.h>
#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6
Servo topServo;
Servo bottomServo;
int frequency = 0;
int color=0;
void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);
// Establece la frecuencia escadala al 20%
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
topServo.attach(7);
bottomServo.attach(8);
Serial.begin(9600);
}
void loop() {
topServo.write(115);
delay(500);
for(int i = 115; i > 65; i--) {
topServo.write(i);
delay(2);
}
delay(500);
color = readColor();
delay(10);
switch (color) {
case 1:
bottomServo.write(50);
break;
case 2:
bottomServo.write(75);
break;
case 3:
bottomServo.write(100);
break;
case 4:
bottomServo.write(125);
break;
case 5:
bottomServo.write(150);
break;
case 6:
bottomServo.write(175);
break;
case 0:
break;
}
delay(300);
for(int i = 65; i > 29; i--) {
topServo.write(i);
delay(2);
}
delay(200);
for(int i = 29; i < 115; i++) {
topServo.write(i);
delay(2);
}
color=0;
}
// Parte del codigo que lee el color
int readColor() {
// Configuracion de rojos para ser leidos
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
// Lee la frecuencia de salida
frequency = pulseIn(sensorOut, LOW);
int R = frequency;
// Imprime el valor en el monitor serial
Serial.print("R= ");//Imprime el nombre
Serial.print(frequency);//Imprime el valor de la frecuancia del color rojo
Serial.print(" ");
delay(50);
// Configuracion de verdes para ser leidos
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
// Lee la frecuencia de salida
frequency = pulseIn(sensorOut, LOW);
int G = frequency;
// Imprime el valor en el monitor serial
Serial.print("G= ");//Imprime el nombre
Serial.print(frequency);//Imprime la frecuencia del color
Serial.print(" ");
delay(50);
//Configuracion de azules para ser leidos
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
// Lee la frecuncia de salida
frequency = pulseIn(sensorOut, LOW);
int B = frequency;
// Imprime el valor en el monitor serial
Serial.print("B= ");//Imprime el nombre
Serial.print(frequency);//Imprime la frecuencia del color
Serial.println(" ");
delay(50);
//Se empiezan hacer las comparaciones para ver que color es el que esta siendo puesto delante de los pins
if(R<45 & R>32 & G<65 & G>55){
color = 1; // Color rojo
}
if(G<55 & G>43 & B<47 &B>35){
color = 2; // Color naranja
}
if(R<53 & R>40 & G<53 & G>40){
color = 3; // Color verde
}
if(R<38 & R>24 & G<44 & G>30){
color = 4; // Color amarillo
}
if(R<56 & R>46 & G<65 & G>55){
color = 5; // Color cafe
}
if (G<58 & G>45 & B<40 &B>26){
color = 6; // Color azul
}
return color;
}
5.Simulación.
Acá tenemos nuestro arduino conectado con el sensor de color, a continuación se hicieron pruebas con el color verde y se arrojaron los siguientes resultados
Acá
se puede apreciar con esta tabla los valores de los colores, y
satisfactoriamente llegamos al color verde.
6.Conclusión.
Podemos
llegar a la conclusión de que el código de nuestro clasificador de color es
funcional, mediante las pruebas pudimos observar que cada color tenía sus
rangos y que respectivamente si llegaban a esos rangos, este es el segundo
reporte de cuatro, en el siguiente se implementaran los elementos electrónicos
al esqueleto.
Enlace de descargar del reporte:
https://drive.google.com/file/d/13ACjtjg3-3SBjeLJBHXxHefgvqmEGECI/view?usp=sharing


Comentarios
Publicar un comentario