Translate

Deteksi Warna TCS3200 Kendali Servo

Deteksi Warna TCS3200 Kendali Servo
 

           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat mendeteksi warna kemuan dari nilai warna tesebut menghasilkan output berupa gerakan servo. jadi terdapat beberapa warna yang mana tiap-tiap warna mewakili gerakan servo tertentu. untuk lebih jelasnya berikut adalah koding dan komponennya.
 
  
1. Komponen
 

2. Program Arduino IDE
 
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

Servo myservo1;

#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6
int frequency = 0;

int btset = A0;
int btsetx = 0;

int fmerah;
int fgreen;
int fblue;
int kal;

int simfmerah1,simfmerah2,simfmerah3,simfmerah4,simfmerah5,simfmerah6,simfmerah7,simfmerah8;
int simfgreen1,simfgreen2,simfgreen3,simfgreen4,simfgreen5,simfgreen6,simfgreen7,simfgreen8;
int simfblue1,simfblue2,simfblue3,simfblue4,simfblue5,simfblue6,simfblue7,simfblue8;

int fmerahatas1,fmerahatas2,fmerahatas3,fmerahatas4,fmerahatas5,fmerahatas6,fmerahatas7,fmerahatas8; 
int fmerahbawah1,fmerahbawah2,fmerahbawah3,fmerahbawah4,fmerahbawah5,fmerahbawah6,fmerahbawah7,fmerahbawah8; 
int fgreenatas1,fgreenatas2,fgreenatas3,fgreenatas4,fgreenatas5,fgreenatas6,fgreenatas7,fgreenatas8; 
int fgreenbawah1,fgreenbawah2,fgreenbawah3,fgreenbawah4,fgreenbawah5,fgreenbawah6,fgreenbawah7,fgreenbawah8; 
int fblueatas1,fblueatas2,fblueatas3,fblueatas4,fblueatas5,fblueatas6,fblueatas7,fblueatas8; 
int fbluebawah1,fbluebawah2,fbluebawah3,fbluebawah4,fbluebawah5,fbluebawah6,fbluebawah7,fbluebawah8;
int range = 20;

void setup()
{
 myservo1.attach(9);
 lcd.begin();
 lcd.clear();
 lcd.noCursor();

  pinMode(btset, INPUT_PULLUP);
 
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);

  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
  myservo1.write(150);
  
}

void loop(){

  btsetx = digitalRead(btset);
 
  if(btsetx == 0){
  lcd.clear();  
  delay(2000);
  scanning1();
  scanning2();
  scanning3();
  scanning4();
  scanning5();
  scanning6();
  scanning7();
  scanning8();
  }
 
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  frequency = pulseIn(sensorOut, LOW);
  fmerah = frequency;
 
  lcd.setCursor(0,1);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  delay(100);
 
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fgreen = frequency;

  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fblue = frequency;
 
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("     ");
  delay(800);
 
  fmerahatas1 = simfmerah1 + range;  fmerahatas2 = simfmerah2 + range;  fmerahatas3 = simfmerah3 + range;  fmerahatas4 = simfmerah4 + range;  fmerahatas5 = simfmerah5 + range;  fmerahatas6 = simfmerah6 + range;  fmerahatas7 = simfmerah7 + range;  fmerahatas8 = simfmerah8 + range;  
  fmerahbawah1 = simfmerah1 - range; fmerahbawah2 = simfmerah2 - range; fmerahbawah3 = simfmerah3 - range; fmerahbawah4 = simfmerah4 - range; fmerahbawah5 = simfmerah5 - range; fmerahbawah6 = simfmerah6 - range; fmerahbawah7 = simfmerah7 - range; fmerahbawah8 = simfmerah8 - range;
  fgreenatas1 = simfgreen1 + range; 
  fgreenbawah1 = simfgreen1 - range; 
  fblueatas1 = simfblue1 + range; 
  fbluebawah1 = simfblue1 - range; 

  fgreenatas2 = simfgreen2 + range; 
  fgreenbawah2 = simfgreen2 - range; 
  fblueatas2 = simfblue2 + range; 
  fbluebawah2 = simfblue2 - range; 

  fgreenatas3 = simfgreen3 + range; 
  fgreenbawah3 = simfgreen3 - range; 
  fblueatas3 = simfblue3 + range; 
  fbluebawah3 = simfblue3 - range; 

  fgreenatas4 = simfgreen4 + range; 
  fgreenbawah4 = simfgreen4 - range; 
  fblueatas4 = simfblue4 + range; 
  fbluebawah4 = simfblue4 - range; 

  fgreenatas5 = simfgreen5 + range; 
  fgreenbawah5 = simfgreen5 - range; 
  fblueatas5 = simfblue5 + range; 
  fbluebawah5 = simfblue5 - range; 

  fgreenatas6 = simfgreen6 + range; 
  fgreenbawah6 = simfgreen6 - range; 
  fblueatas6 = simfblue6 + range; 
  fbluebawah6 = simfblue6 - range; 

  fgreenatas7 = simfgreen7 + range; 
  fgreenbawah7 = simfgreen7 - range; 
  fblueatas7 = simfblue7 + range; 
  fbluebawah7 = simfblue7 - range; 

  fgreenatas8 = simfgreen8 + range; 
  fgreenbawah8 = simfgreen8 - range; 
  fblueatas8 = simfblue8 + range; 
  fbluebawah8 = simfblue8 - range; 

  if(kal == 1){           
  if((fmerah < fmerahatas1)&&(fmerah > fmerahbawah1)&&(fgreen < fgreenatas1)&&(fgreen > fgreenbawah1)&&(fblue < fblueatas1)&&(fblue > fbluebawah1)){
    lcd.setCursor(0,0);
    lcd.print(" WARNA 1");
    myservo1.write(70);
  } 

  if((fmerah < fmerahatas2)&&(fmerah > fmerahbawah2)&&(fgreen < fgreenatas2)&&(fgreen > fgreenbawah2)&&(fblue < fblueatas2)&&(fblue > fbluebawah2)){
    lcd.setCursor(0,0);
    lcd.print(" WARNA 2"); 
    myservo1.write(100);
  }

  if((fmerah < fmerahatas3)&&(fmerah > fmerahbawah3)&&(fgreen < fgreenatas3)&&(fgreen > fgreenbawah3)&&(fblue < fblueatas3)&&(fblue > fbluebawah3)){
    lcd.setCursor(0,0);
    lcd.print(" WARNA 3");
    myservo1.write(130);
  }

  if((fmerah < fmerahatas4)&&(fmerah > fmerahbawah4)&&(fgreen < fgreenatas4)&&(fgreen > fgreenbawah4)&&(fblue < fblueatas4)&&(fblue > fbluebawah4)){
     lcd.setCursor(0,0);
    lcd.print(" WARNA 4");   
    myservo1.write(160);
  }

  if((fmerah < fmerahatas5)&&(fmerah > fmerahbawah5)&&(fgreen < fgreenatas5)&&(fgreen > fgreenbawah5)&&(fblue < fblueatas5)&&(fblue > fbluebawah5)){
    lcd.setCursor(0,0);
    lcd.print(" WARNA 5"); 
    myservo1.write(180);
  }

  if((fmerah < fmerahatas6)&&(fmerah > fmerahbawah6)&&(fgreen < fgreenatas6)&&(fgreen > fgreenbawah6)&&(fblue < fblueatas6)&&(fblue > fbluebawah6)){
    lcd.setCursor(0,0);
    lcd.print(" WARNA 6"); 
    myservo1.write(200);
  }

  if((fmerah < fmerahatas7)&&(fmerah > fmerahbawah7)&&(fgreen < fgreenatas7)&&(fgreen > fgreenbawah7)&&(fblue < fblueatas7)&&(fblue > fbluebawah7)){
    lcd.setCursor(0,0);
    lcd.print(" WARNA 7");
    myservo1.write(50);
  }

  if((fmerah < fmerahatas8)&&(fmerah > fmerahbawah8)&&(fgreen < fgreenatas8)&&(fgreen > fgreenbawah8)&&(fblue < fblueatas8)&&(fblue > fbluebawah8)){
    lcd.setCursor(0,0);
    lcd.print(" WARNA 8");  
    myservo1.write(220);
  }
  }
      
}

void scanning1(){

btsetx = digitalRead(btset); 
 
  lcd.setCursor(0,0);
  lcd.print("SCAN WARNA 1");

  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  frequency = pulseIn(sensorOut, LOW);
  fmerah = frequency;
 
  lcd.setCursor(0,1);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  delay(100);
 
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fgreen = frequency;

  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fblue = frequency;
 
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("     ");
  delay(100);
 
if(btsetx == 0){
delay(200);

simfmerah1 = fmerah;
simfgreen1 = fgreen;
simfblue1 = fblue;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("    ");
  delay(3000);
  lcd.clear();
return;
}

scanning1();
}

void scanning2(){

btsetx = digitalRead(btset); 
 
  lcd.setCursor(0,0);
  lcd.print("SCAN WARNA 2");

  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  frequency = pulseIn(sensorOut, LOW);
  fmerah = frequency;
 
  lcd.setCursor(0,1);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  delay(100);
 
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fgreen = frequency;

  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fblue = frequency;
 
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("     ");
  delay(100);
 
if(btsetx == 0){
delay(200);

simfmerah2 = fmerah;
simfgreen2 = fgreen;
simfblue2 = fblue;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("    ");
  delay(3000);
  lcd.clear();
return;
}

scanning2();
}

void scanning3(){

btsetx = digitalRead(btset); 
 
  lcd.setCursor(0,0);
  lcd.print("SCAN WARNA 3");

  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  frequency = pulseIn(sensorOut, LOW);
  fmerah = frequency;
 
  lcd.setCursor(0,1);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  delay(100);
 
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fgreen = frequency;

  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fblue = frequency;
 
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("     ");
  delay(100);
 
 
if(btsetx == 0){
delay(200);

simfmerah3 = fmerah;
simfgreen3 = fgreen;
simfblue3 = fblue;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("    ");
  delay(3000);
  lcd.clear();
return;
}

scanning3();
}


void scanning4(){

btsetx = digitalRead(btset); 
 
  lcd.setCursor(0,0);
  lcd.print("SCAN WARNA 4");

  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  frequency = pulseIn(sensorOut, LOW);
  fmerah = frequency;
 
  lcd.setCursor(0,1);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  delay(100);
 
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fgreen = frequency;

  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fblue = frequency;
 
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("     ");
  delay(100);
 
 
if(btsetx == 0){
delay(200);

simfmerah4 = fmerah;
simfgreen4 = fgreen;
simfblue4 = fblue;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("    ");
  delay(3000);
  lcd.clear();
return;
}

scanning4();
}



void scanning5(){

btsetx = digitalRead(btset); 
 
  lcd.setCursor(0,0);
  lcd.print("SCAN WARNA 5");

  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  frequency = pulseIn(sensorOut, LOW);
  fmerah = frequency;
 
  lcd.setCursor(0,1);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  delay(100);
 
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fgreen = frequency;

  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fblue = frequency;
 
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("     ");
  delay(100);
 
 
if(btsetx == 0){
delay(200);

simfmerah5 = fmerah;
simfgreen5 = fgreen;
simfblue5 = fblue;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("    ");
  delay(3000);
  lcd.clear();
return;
}

scanning5();
}



void scanning6(){

btsetx = digitalRead(btset); 
 
  lcd.setCursor(0,0);
  lcd.print("SCAN WARNA 6");

  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  frequency = pulseIn(sensorOut, LOW);
  fmerah = frequency;
 
  lcd.setCursor(0,1);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  delay(100);
 
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fgreen = frequency;

  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fblue = frequency;
 
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("     ");
  delay(100);
 
 
if(btsetx == 0){
delay(200);

simfmerah6 = fmerah;
simfgreen6 = fgreen;
simfblue6 = fblue;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("    ");
  delay(3000);
  lcd.clear();
return;
}

scanning6();
}



void scanning7(){

btsetx = digitalRead(btset); 
 
  lcd.setCursor(0,0);
  lcd.print("SCAN WARNA 7");

  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  frequency = pulseIn(sensorOut, LOW);
  fmerah = frequency;
 
  lcd.setCursor(0,1);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  delay(100);
 
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fgreen = frequency;

  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fblue = frequency;
 
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("     ");
  delay(100);
 
 
if(btsetx == 0){
delay(200);

simfmerah7 = fmerah;
simfgreen7 = fgreen;
simfblue7 = fblue;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("    ");
  delay(3000);
  lcd.clear();
return;
}

scanning7();
}



void scanning8(){

btsetx = digitalRead(btset); 
 
  lcd.setCursor(0,0);
  lcd.print("SCAN WARNA 8");

  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  frequency = pulseIn(sensorOut, LOW);
  fmerah = frequency;
 
  lcd.setCursor(0,1);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  delay(100);
 
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fgreen = frequency;

  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  delay(100);

  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  frequency = pulseIn(sensorOut, LOW);
  fblue = frequency;
 
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("     ");
  delay(100);
 
 
if(btsetx == 0){
delay(200);

simfmerah8 = fmerah;
simfgreen8 = fgreen;
simfblue8 = fblue;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("R=");
  lcd.print(fmerah);
  lcd.print(" ");
  lcd.print("G=");
  lcd.print(fgreen);
  lcd.print(" ");
  lcd.print("B=");
  lcd.print(fblue);
  lcd.print("    ");
  delay(3000);
  lcd.clear();
  kal = 1;
return;
}

scanning8();
}
 
 
 
3. VIDEO HASILNYA
 

 
 

No comments:

Post a Comment