renk sensörü tcs3200 sorunum var . Lütfen yardımcı olurmusunuz?

arkadaşlar merhaba . benim problemim renk sensörüne mesela maviyi gösterdiğimde 3 saniye boyunca var ise bir led yaksın . renk sensörünün programında kalibre ettiğim mavi rengi for döngüsünün içine atıp 3 kere döngü tekrarlıyıp çıkış verdirebiliyorum ama ben mavi rengini sürekli kontrol etmek istiyorum for döngüsünün içinde ve mavi rengi varsa 3snye saysın çıkış versin ama bu 3 snye içinde mavi yok ise çıkış vermesin bunu nasıl yapabilirim programda for ile belirtilen bölümde sorunum açıkça bellidir .ve sadece mavi değil bütün renkler için yapıcam sadece bir renk için sorunumu çözsem diğer renkleri de yapıcam .saygılarımla herkese iyi çalışmalar . /* Sensör pinleri tanımlanıyor */ int S0 = 8; int S1 = 9; int S2 = 12; int S3 = 11; int OUT = 10; int LED = 13; unsigned int kirmizi_led = 2; // Rgb kırmızı pin unsigned int mavi_led = 7; // Rgb mavi pin unsigned int yesil_led = 3; // Rgb yeşil pin int sonuc; int gelen; /* Renk yüzdeleri tanımlanıyor Bu sayılar ortama göre değişiklik gösterebilir Bu yüzden sensörü kalibre etmek için sensörden okuduğunuz değerler ile bu sayıları güncelleyiniz Dizi elemanları sırasıyla sensörden ölçülen Kırmızı,Mavi ve Yeşil frekanslarını göstermektedir */ int RenkYuzdesi[5][3] = { {48,17,34}, // Sarı renk {10,50,29}, // Mavi renk {29,36,29}, // Beyaz renk {71,26,22}, // Kırmızı renk {25,21,44} }; // Yeşil renk String Renkler[5] = {“Sari”, “Mavi”, “Beyaz”, “Kirmizi”, “Yesil”}; /* Sensör hassasiyeti */ int aralik = 10; /* Renk frekanslarının tutulduğu değişkenler */ int KirmiziYuzdesi, YesilYuzdesi, MaviYuzdesi; void setup() { Serial.begin(9600); pinMode(S0,OUTPUT); pinMode(S1,OUTPUT); pinMode(S2,OUTPUT); pinMode(S3,OUTPUT); pinMode(LED,OUTPUT); pinMode(OUT,INPUT); pinMode(kirmizi_led, OUTPUT); pinMode(mavi_led, OUTPUT); pinMode(yesil_led, OUTPUT); } void loop() { RengiTanimla(); delay(1000); } void yak(){ digitalWrite(mavi_led,HIGH); } void durum(){ yak(); } void son(){ digitalWrite(mavi_led,LOW); } void TCS3200_Ac() { digitalWrite(LED,HIGH); digitalWrite(S0,HIGH); digitalWrite(S1,HIGH); delay(5); } void TCS3200_Kapat() { digitalWrite(LED,LOW); digitalWrite(S0,LOW); digitalWrite(S1,LOW); } void Filtresiz() { digitalWrite(S2,HIGH); digitalWrite(S3,LOW); delay(5); } void KirmiziFiltre() { digitalWrite(S2,LOW); digitalWrite(S3,LOW); delay(5); } void YesilFiltre() { digitalWrite(S2,HIGH); digitalWrite(S3,HIGH); delay(5); } void MaviFiltre() { digitalWrite(S2,LOW); digitalWrite(S3,HIGH); delay(5); } void RengiTanimla() { float BeyazFrekansi, KirmiziFrekansi, YesilFrekansi, MaviFrekansi; TCS3200_Ac(); Filtresiz(); BeyazFrekansi = float(pulseIn(OUT,LOW,40000)); KirmiziFiltre(); KirmiziFrekansi = float(pulseIn(OUT,LOW,40000)); YesilFiltre(); YesilFrekansi = float(pulseIn(OUT,LOW,40000)); MaviFiltre(); MaviFrekansi = float(pulseIn(OUT,LOW,40000)); TCS3200_Kapat(); KirmiziYuzdesi = int((BeyazFrekansi / KirmiziFrekansi) * 100.0); YesilYuzdesi = int((BeyazFrekansi / YesilFrekansi) * 100.0); MaviYuzdesi = int((BeyazFrekansi / MaviFrekansi) * 100.0); Serial.println(“Renk Yuzdeleri”); Serial.print("Kirmizi= "); Serial.print(KirmiziYuzdesi); Serial.print(“Mavi=”); Serial.print(MaviYuzdesi); Serial.print(“Yesil=”); Serial.println(YesilYuzdesi); RengiBul(); } void RengiBul() { if(KirmiziYuzdesi > RenkYuzdesi[0][0] - 7 && KirmiziYuzdesi < RenkYuzdesi[0][0] + 7 && MaviYuzdesi > RenkYuzdesi[0][1] - 7 && MaviYuzdesi < RenkYuzdesi[0][1] + 7 && YesilYuzdesi > RenkYuzdesi[0][2] - 7 && YesilYuzdesi < RenkYuzdesi[0][2] + 7 ){ Serial.println(Renkler[0]); yak(); } if(KirmiziYuzdesi > RenkYuzdesi[1][0] - 7 && KirmiziYuzdesi < RenkYuzdesi[1][0] + 7 && MaviYuzdesi > RenkYuzdesi[1][1] - 7 && MaviYuzdesi < RenkYuzdesi[1][1] + 7 && YesilYuzdesi > RenkYuzdesi[1][2] - 7 && YesilYuzdesi < RenkYuzdesi[1][2] + 7 ){ sonuc = KirmiziYuzdesi + MaviYuzdesi + YesilYuzdesi; Serial.println(sonuc); for( int a =0; a < 4; a ++){ // burdaki for dögüsünde mavi var ise ve 3 kere bu döngü yapmış ise led yanar . delay (3000); Serial.print(“saniye”); Serial.print(a); if (a==3 && sonuc>80&&sonuc<110){ yak(); } (MaviYuzdesi>15); // ama burda mavi rengini nasıl tekrar kontrol etmeliyim ki fordan çıksın break; } } else if(KirmiziYuzdesi > RenkYuzdesi[2][0] - 7 && KirmiziYuzdesi < RenkYuzdesi[2][0] + 7 && MaviYuzdesi > RenkYuzdesi[2][1] - 7 && MaviYuzdesi < RenkYuzdesi[2][1] + 7 && YesilYuzdesi > RenkYuzdesi[2][2] - 7 && YesilYuzdesi < RenkYuzdesi[2][2] + 7 ){ yak(); Serial.println(Renkler[2]); } else if(KirmiziYuzdesi > RenkYuzdesi[3][0] - 7 && KirmiziYuzdesi < RenkYuzdesi[3][0] + 7 && MaviYuzdesi > RenkYuzdesi[3][1] - 7 && MaviYuzdesi < RenkYuzdesi[3][1] + 7 && YesilYuzdesi > RenkYuzdesi[3][2] - 7 && YesilYuzdesi < RenkYuzdesi[3][2] + 7 ){ yak(); Serial.println(Renkler[3]); } else if(KirmiziYuzdesi > RenkYuzdesi[4][0] - 7 && KirmiziYuzdesi < RenkYuzdesi[4][0] + 7 && MaviYuzdesi > RenkYuzdesi[4][1] - 7 && MaviYuzdesi < RenkYuzdesi[4][1] + 7 && YesilYuzdesi > RenkYuzdesi[4][2] - 7 && YesilYuzdesi < RenkYuzdesi[4][2] + 7 ){ yak(); Serial.println(Renkler[4]); } else son(); }

çok detaylı inceleyemedim ama Rengi BUL’u Ana Loop’un icine koy ve rengi Tanimla fonksiyonu içinden çıkararak bir dene bakalım istediğin olacak mı ?