Proiectul consta in separarea bomboanelor de M&M's/ Skittles pe fiecare culoare. Cum fiecare pachet contine bomboane de diferite culori, ne vom folosi de acest proiect pentru a separa fiecare bomboana in parte si chiar a afla ce diferenta de gust exista intre acestea.
M&M's Separator este un “robotel” ce separa fiecare bomboana in functie de culoarea ei. Astfel, pentru fiecare bomboana introdusa se vor realiza urmatorii pasi:
Lista componente
Biblioteci: Codul include mai multe biblioteci: Wire, Adafruit_Sensor, Adafruit_TCS34725 și Servo. Aceste biblioteci furnizează funcții și definiții necesare pentru utilizarea comunicării I2C, a senzorului de culoare și a controlului servourilor.
Inițializarea servourilor: Sunt declarate două obiecte de tip servo numite pickServo și dropServo.
Inițializarea senzorului de culoare: Este creată o instanță a clasei Adafruit_TCS34725, configurată cu un timp de integrare de 50 de milisecunde și un factor de amplificare de 4x.
Variabile: Codul definește câteva variabile, inclusiv color (folosită pentru a stoca culoarea detectată) și sensorOut (pinul conectat la ieșirea senzorului).
Funcția detectColor(): Această funcție citește datele brute ale culorii de la senzorul TCS34725, analizează valorile și determină culoarea în funcție de anumite condiții. Valorile culorilor (roșu, verde, albastru) sunt afișate în monitorul serial, iar culoarea detectată este atribuită variabilei color. Funcția returnează culoarea detectată sub formă de număr întreg.
Funcția setup(): Funcția setup() este apelată o singură dată la început. Aceasta configurează modul pinului sensorOut ca INPUT, inițializează senzorul de culoare (tcs.begin()), atașează obiectele servo la pinii lor corespunzători (pickServo.attach(9) și dropServo.attach(10)), și inițializează comunicarea serială la o rată de transfer de 9600 de biți pe secundă (Serial.begin(9600)).
Funcția loop(): Funcția loop() rulează în mod repetat după funcția setup().
Aceasta efectuează următoarele acțiuni: Mișcă servoul pickServo în poziția 115 de grade, apoi scade treptat poziția la 65 de grade cu o întârziere de 2 milisecunde între fiecare pas. Adaugă o întârziere de 500 de milisecunde. Apelul funcției detectColor() pentru a determina culoarea detectată. Adaugă o întârziere de 1000 de milisecunde. Folosește o instrucțiune switch pentru a controla servoul dropServo în funcție de culoarea detectată. În funcție de valoarea.
Sursa: M&M Separator