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

Entradas más populares de este blog

Competencia 4: Proyecto de Arduino, clasificador de color 1/4