top of page

CIRCUITRY

This is how we wired our prototype to recognize the color of the package and sort it into the appropriate safe

Fritzing.PNG

CODE

This is the code we used to recognize the color of the package and sort it into the appropriate safe

// The Mailroom Marvels - EDNS151 Project

// Color Recognition and Sorting of Packages

// Code by Amanda Aurigemma

 

#include <Servo.h>

#include <Adafruit_TCS34725.h>

 

Servo Servo0;

Servo Servo1;

Servo Servo2;

Servo Servo3;

Servo Servo4;

 

int frequency = 0;

int color=0;

 

Adafruit_TCS34725 tcs = Adafruit_TCS34725 ( TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_1X );

 

void setup() {

Serial.begin(9600);

 

Servo0.attach(7);

Servo1.attach(12);

Servo2.attach(11);

  Servo3.attach(10);

  Servo4.attach(9);

 

  Servo0.write(45);

  Servo1.write(45);

  Servo2.write(60);

  Servo3.write(60);

  Servo4.write(60);

}

 

void loop() {

 

uint16_t clearcol, red, green, blue;

float average, r, g, b;

delay ( 100 );

tcs.getRawData ( & red, & green, & blue, & clearcol );

 

average = ( red + green + blue ) / 3;  

r = red / average;

g = green / average;

b = blue / average;

 

if ( ( r > 1.4 ) && ( g < 0.9 ) && ( b < 0.9 ) ) { // red

      Servo1.write(0); // activate sorting gate

      delay(1000);

      Servo0.write(10); // lower platform

      delay(1000);

      Servo1.write(15); // slowly close sorting gate

      delay(500);

     Servo1.write(30);

     delay(500);

      Servo1.write(45);

      Servo0.write(45); // return platform to original position

}

 

else if ( ( r < 0.95 ) && ( g > 1.4 ) && ( b < 0.9 ) ) { // green

      Servo2.write(0);

     delay(1000);

     Servo0.write(10);

      delay(1000);

     Servo2.write(15);

     delay(500);

      Servo2.write(30);

      delay(500);

      Servo2.write(45);

      delay(500);

      Servo2.write(60);

      Servo0.write(45);

}

 

else if ( ( r < 0.8 ) && ( g < 1.2 ) && ( b > 1.2 ) ) {  // blue

      Servo3.write(5);

      delay(1000);

      Servo0.write(10);

      delay(1500);

      Servo3.write(15);

      delay(500);

      Servo3.write(30);

      delay(500);

      Servo3.write(45);

      delay(500);

      Servo3.write(60);

      Servo0.write(45);

}

 

else if ( ( r > 1.15 ) && ( g > 1.15 ) && ( b < 0.7 ) ) {  // yellow

     Servo4.write(5);

     delay(1000);

     Servo0.write(10);

     delay(3000);

     Servo4.write(15);

     delay(500);

     Servo4.write(30);

     delay(500);

     Servo4.write(45);

     delay(500);

     Servo4.write(60);

     Servo0.write(45);

}

 

else{ //if input isn’t recognized, motor positions reset - future iterations should improve on this

     Servo0.write(45);

     Servo1.write(45);

     Servo2.write(60);

     Servo3.write(60);

     Servo4.write(60);

   }

}

Mailroom Marvels - EDNS151 Spring 2019

bottom of page