bbs2006
Üye
- Katılım
- 13 Kas 2006
- Mesajlar
- 245
- Puanları
- 1
- Yaş
- 48
Merhaba
arduino ve dfplayer mini mp3 modülü ile renk okuma yapıyorum. tcs34725 renk okuma yaptığım zaman bir çok renk kodları çakışma yapıyor. bazı renk kodlarını halletim ancak diğer renk kodları çakışıyor. bu konuda yardımcı olursanız sevinirim.
arduino ve dfplayer mini mp3 modülü ile renk okuma yapıyorum. tcs34725 renk okuma yaptığım zaman bir çok renk kodları çakışma yapıyor. bazı renk kodlarını halletim ancak diğer renk kodları çakışıyor. bu konuda yardımcı olursanız sevinirim.
Kod:
/* Yazan: Barış Bilir SOYLU
2017-2018 Eğitim Öğretim Yılı
Tübitak 4006 Projesi
*/
#include <Wire.h>
#include <DFRobot_TCS34725.h>
#include <DFPlayer_Mini_Mp3.h>
#include <SoftwareSerial.h>
DFRobot_TCS34725 tcs = DFRobot_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); // Renk sensörü tanımlama
//Adafruit_TCS34725 tcs =Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); // Renk sensörü tanımlama
//SoftwareSerial mySoftwareSerial(10,11); //RX ve TX
uint16_t temizle,kirmizi,yesil,mavi; // Renk değerleri için tanımlamalar
float ortalama,r,g,b; // renk hesaplamaları için tanımlamalar
void setup () {
//mySoftwareSerial.begin(9600);
Serial.begin (9600);
mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module
mp3_set_volume (10);
if(tcs.begin()){ // Renk sensörüne bağlandıysa veri almaya başla.
Serial.println("Sensör Algılandı");
}
else{Serial.println("Sensör Alğılanamadı");
while(true);} //Durma işlemi gerçekleşiyor.
}
void loop () {
renk_oku(); // Renk okuma algoritmasını çalıştır.
rengi_goster(); // Renk göster algoritmasını çalıştır.
delay(500); // 500 ms bekle.
}
void renk_oku(){ // Renk okuma Algoritması
tcs.getRGBC(&kirmizi,&yesil,&mavi,&temizle);
ortalama=((kirmizi+yesil+mavi)/3); //Renk degerlerini topla ve ortalamasını al.
r=kirmizi/ortalama;
g=yesil/ortalama;
b=mavi/ortalama;
Serial.println("\tOrtalama:\t"); Serial.print(ortalama);
Serial.print("\tKIRMIZI:\t"); Serial.print(r);
Serial.print("\tYEŞİL:\t"); Serial.print(g);
Serial.print("\tMAVİ:\t"); Serial.print(b);
delay(50); //50msn bekle
}
void rengi_goster(){
if ((r > 1.4) && (g < 0.9) && (b < 0.9)) { // kırmızı renk olma durumu
mp3_play (3); // 0003.mp3 dosyasını çal. Kırmızı renk.
delay (1000); // 1sn bekle.
}
else if ((r < 0.98) && (g < 1.4) && (b < 0.9)) { // yeşil renk olma durumu
mp3_play (1); // 0001.mp3 dosyasını çal. Yeşil renk.
delay (1000); // 1sn bekle.
}
else if ((r < 0.8) && (g < 1.2) && (b > 1.2)) { // mavi renk olma durumu
mp3_play (2); // 0002.mp3 dosyasını çal. mavi renk.
delay (1500); // 1sn bekle.
}
else if ((r > 1.15) && (g > 1.15) && (b < 0.7)) { // sarı renk olma durumu
mp3_play (5); // 0005.mp3 dosyasını çal. sarı renk.
delay (1000); // 1sn bekle.
}
/*
else if ((r >= 1.6) && (g < 0.7) && (b < 0.8)) { // turuncu renk olma durumu
mp3_play (6); // 0006.mp3 dosyasını çal. turuncu renk.
delay (1000); // 1sn bekle.
}
*/
else if ((r>1.0) && (g < 1.0) && (b>0.92)) { // siyah renk olma durumu
mp3_play (4); // 0004.mp3 dosyasını çal. siyah renk.
delay (1000); // 1sn bekle.
}
/*
else if ((r>0.70 ) && (g > 1.03) && (b< 1.23)) { // Beyaz renk olma durumu
mp3_play (8); // 0008.mp3 dosyasını çal. Beyaz renk.
delay (1000); // 1sn bekle.
}
*/
else if ((r> 0.70) && (g <0.78 ) && (b< 1.3)) { // Mor renk olma durumu
mp3_play (9); // 0009.mp3 dosyasını çal. Mor renk.
delay (1000); // 1sn bekle.
}
else if ((r> 1.0) && (g < 1.00) && (b< 1.0)) { // Pembe renk olma durumu
mp3_play (10); // 0010.mp3 dosyasını çal. Pembe renk.
delay (1000); // 1sn bekle.
}
}