Posted on

Folosirea Senzorului detecție culoare TCS230 și Arduino la sortare

Folosirea Senzorului detecție culoare TCS230 și Arduino la sortarea obiectelor colorate

Detecția culorii RGB cu senzorul TCS230 și sortarea obiectelor colorate cu un Arduino NANO si doua servomotoare

arduino-color-sorting-machine

color-sorting-machine-arduino-project-solidworks-model

Uite și un cod pentru inspirație :

//–––––––––

#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);
// Setting frequency-scaling to 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;
}
// Custom Function – readColor()
int readColor() {
// Setting red filtered photodiodes to be read
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int R = frequency;
// Printing the value on the serial monitor
Serial.print(„R= „);//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(” „);
delay(50);
// Setting Green filtered photodiodes to be read
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int G = frequency;
// Printing the value on the serial monitor
Serial.print(„G= „);//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(” „);
delay(50);
// Setting Blue filtered photodiodes to be read
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int B = frequency;
// Printing the value on the serial monitor
Serial.print(„B= „);//printing name
Serial.print(frequency);//printing RED color frequency
Serial.println(” „);
delay(50);
if(R<45 & R>32 & G<65 & G>55){
color = 1; // Red
}
if(G<55 & G>43 & B<47 &B>35){
color = 2; // Orange
}
if(R<53 & R>40 & G<53 & G>40){
color = 3; // Green
}
if(R<38 & R>24 & G<44 & G>30){
color = 4; // Yellow
}
if(R<56 & R>46 & G<65 & G>55){
color = 5; // Brown
}
if (G<58 & G>45 & B<40 &B>26){
color = 6; // Blue
}
return color;
}

//––––––––––––––

Mai multe detalii : Arduino Color Sorter Project

 

Lasă un răspuns