Introduction: EAL- M&m's Sort

Da vi fik opgaven, hvor vi skulle lave et arduino projekt, vidste jeg ikke, hvad jeg ville lave. Jeg besluttede mig for, at det skulle være et hurtig og nemt projekt. Efter jeg havde kigget på nettet efter inspiration besluttede jeg mig for, at jeg ville lave en maskine der kunne genkende farve og dermed sortere m&m's. Efterfølgende fandt jeg hurtigt ud af at det ikke var så nemt som jeg troede.

Planen med maskinen er, at man skulle kunne smide en m&m's ned i toppen af kassen hvor efter en sensor opfanger hvilken farve den har, for til sidst at ende i den rigtige farve skål

Step 1: Beskrivelse Og Afprøvning Af Materialer

Da jeg havde fået de ting hjem fra nettet som jeg havde bestilt. Begyndte jeg at afprøve servo motoren og color sensoren. Servo motorerne var ikke noget stort problem at få til og virke. Jeg indsatte et servo librarie. gav servo motoren et navn og hvilken pin den sad på. Derefter kunne jeg få dem til at køre ved at vælge hvad for nogle grader den skulle køre ud til. Det var noget svære at få color sensoren til og virke, som jeg gerne ville havde den til. Den første jeg købte var en fra Kina. Cristian og jeg ledte på nettet for at se hvordan de andre fik den til og virke, men lige så snart vi prøvede deres kode, med den jeg havde købet kunne vi ikke få det til og virke. Jeg fandt en anden color sensor som jeg købte. Da jeg fik den hjem begynde vi og prøve igen, men vi kunne stadig ikke finde ud af det. Jeg tog fat i Jazz og hørte om han kunne hjælpe. Han kom med en kode som virkede til den sensor. S0 til S3 skal sidde på være deres pin og siddes som output. Out skal også siddes på en pin, men siddes som et input. Color sensoren måler på 3 farver R, G og B. De 3 værdier kan man aflæse i serial monitor der vil den eks. skrive R = 12 B= 17 G= 20. De værdier vil så ændre sig alt efter hvilken farve det er. Jeg fandt ud af at værdierne ændrede sig meget på den samme farve hvis der kom for meget lys udefra. Jeg blev nød til at bygge en demo kasse, i pap for at color sensoren kunne sidde i mørke. Samtidig kunne jeg få sat servo motorerne og color sensoren ind i en kode hvor de kunne køre samtidig. Jeg fik printet det bord og den skubber, jeg skulle bruge for jeg kunne se om det virkede i min demo kasse. Efter noget tid fik jeg den til at skubbe m&m's ind, så den kunne læse hvilken farve det var. Jeg har valgt, at den kun skulle kunne læse rød, blå, gul og at der ikke er nogle. Derefter skulle en laves og samles i en rigtig kasse.

Step 2: Færdig Procesbeskrivelse

Jeg fik skåret en kasse ud på laser cutteren. Printet en tragt og en rutsjebane på 3d printeren i fab lab. Jeg har samlet det hele som vist på billede ovenover. Jeg fik koden justeret til så alle ting kunne køre sammen, og på de rigtige tidspunkter.

Procesbeskrivelse:

1: Kom en m&m’s ned i tragten

2: m&m’s falder ned på bordet hvor der er en plade med hul i som skubber den. (der bliver kun skubbet en m&m’s af gangen.)

3: m&m’s bliver skubbet hen under color sensoren hvor den læser hvilken farve den er.

4: Rutsjebanen drejer sig over til den skål hvor den pågældende farve passer til.

5: Pladen skubber m&m’s over i et hul så den falder ned i rutsjebanen og videre ned i skålen.

6: Pladen køre tilbage og tager en ny m&m’s.

Step 3: Materialeliste

1 servo motor SG90

1 servo motor MG995

1 Joy-it Colorimeter TCS3200

1 kasse med hylder skåret på lasser cutter (Tegnet af Christian)

1 tragt printe på 3d printer (Tegnet af Christian)

1 bord med m&m's skubber printet på 3d printer (Tegnet af Christian)

1 rutsjebane til m&m's printet på 3d printer (Tegnet af Christian)

Step 4: I/O Liste

Servo Motor top:

PWM = Pin 7

Vcc = 5V

Ground = GND

____________

Servo Motor top:

PWM = Pin 8

Vcc = 5V

Ground = GND

____________

Color sonsor TCS3200

S0 = Pin 2

S1 = Pin 3

S2 = Pin 4

S3= Pin 5

OUT = Pin 7

Vcc = 5V

GND =GND

Step 5: Arduino Code

#include

int OutPut= 6; unsigned int frequency = 0; int farve; Servo servoTop; Servo servoBund;

void setup() {

Serial.begin(9600);

//PINS 2,3,4,5 --> S0-S3 //PIN 6 --> Signal OUT pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, INPUT); digitalWrite(2,HIGH); digitalWrite(3,LOW);

servoTop.attach(7); servoBund.attach(8);

}

void loop()

{

servoTop.write(55);

delay(2000);

servoTop.write(30); delay(200);

digitalWrite(4,LOW); digitalWrite(5,LOW); frequency = pulseIn(OutPut, LOW);

Serial.print("R= "); Serial.print(frequency); Serial.print(" "); int R=frequency; delay(300);

digitalWrite(4,LOW); digitalWrite(5,HIGH); frequency = pulseIn(OutPut, LOW);

Serial.print("B= "); Serial.print(frequency); Serial.print(" "); int B=frequency; delay(300);

digitalWrite(4,HIGH); digitalWrite(5,HIGH); frequency = pulseIn(OutPut, LOW);

Serial.print("G= "); Serial.print(frequency); Serial.println(" "); int G=frequency; delay(300); if (R<B&&B>G&&G>22){

Serial.println("color is red"); servoBund.write(40); delay(1000); }

if (B<R&&G>R){
Serial.println("color is blue"); servoBund.write(70); delay(1000); }


if (B>G&&R<G){

Serial.println("color is yellow");

servoBund.write(100); delay(1000); }

if (R<19 && B<19 && G<21){ Serial.println("no color"); servoBund.write(20); delay(1000); } servoTop.write(0); delay(1000); }

Step 6: Video