Bu projemizde renk algıma sensörü ile arduino kullanarak basit bir uygulama yapacağız.Yapacağımız uygulamada sensörümüz rengi algılayarak rgb ledimizi aynı renkte yakacak.Arduino ile renk algılama projemize başlayalım.
Malzemeler:
- Arduino
- TCS3200 Renk Sensörü Kartı
- Rgb Led
- Direnç
Elektronik Bağlantı Şeması:
Renk Sensörü Arduino Bağlantısı |
|
Sensör Pin |
Arduino Pin |
S0 | GND |
S1 | 5V |
S2 | pin 7 |
S3 | pin 8 |
OUT | pin 4 |
VCC | 5V |
GND | GND |
RGB Led Bağlantıları:
Şekildeki bağlantı renklerinden rgb bacaklarının hangi renkte olduğunu görebilirsiniz.
Mavi-6.pin
Yeşil-10.pin
Kırmızı-11.pin
Yazılım Kısmı:
Renk sensöründeki pinlerin high ve low olma durumlarına göre oluşacak renkler aşağıdaki gibidir.
S2 |
S3 |
Okunan Renk |
LOW | LOW | Red |
LOW | HIGH | Blue |
HIGH | HIGH | Green |
Rgb ledimiz için 3! kadar yani 6 tane farklı durum oluşacağından algoritmada 6 tane koşul tanımlaması yapıyoruz.
RGB, RBG, GRB, GBR, BGR, BRG
Renk Tanıma Yazılımı
int kirmizi=11; int yesil=10; int mavi=6; int S2=7; int S3=8; int outpin=4; int kirmizi_algilama; int yesil_algilama; int mavi_algilama; unsigned int pulseWidth; void setup() { Serial.begin(9600); pinMode(kirmizi, OUTPUT); pinMode(yesil, OUTPUT); pinMode(mavi, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); pinMode(outpin, OUTPUT); } void loop() { digitalWrite(S2,LOW); digitalWrite(S3,LOW); pulseWidth = pulseIn(outpin,LOW); kirmizi_algilama = pulseWidth/400. -1; kirmizi_algilama = (255- kirmizi_algilama); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH); pulseWidth = pulseIn(outpin,LOW); yesil_algilama = pulseWidth/400. -1; yesil_algilama = (255- yesil_algilama); digitalWrite(S2,LOW); digitalWrite(S3,HIGH); pulseWidth = pulseIn(outpin,LOW); mavi_algilama = pulseWidth/400. -1; mavi_algilama = (255- mavi_algilama); if(kirmizi_algilama > yesil_algilama && yesil_algilama > mavi_algilama){ kirmizi_algilama =255; yesil_algilama = yesil_algilama/2; mavi_algilama = 0; } if(kirmizi_algilama > mavi_algilama && mavi_algilama > yesil_algilama){ kirmizi_algilama = 255; mavi_algilama = mavi_algilama/2; yesil_algilama = 0; } if(yesil_algilama > kirmizi_algilama && kirmizi_algilama > mavi_algilama){ yesil_algilama =255; kirmizi_algilama = kirmizi_algilama/2; mavi_algilama = 0; } if(yesil_algilama > mavi_algilama && mavi_algilama > kirmizi_algilama){ yesil_algilama =255; mavi_algilama = mavi_algilama/2; kirmizi_algilama = 0; } if(mavi_algilama > kirmizi_algilama && kirmizi_algilama > yesil_algilama){ mavi_algilama =255; kirmizi_algilama = kirmizi_algilama/2; yesil_algilama = 0; } if(mavi_algilama > yesil_algilama && yesil_algilama > kirmizi_algilama){ mavi_algilama =255; yesil_algilama = yesil_algilama/2; kirmizi_algilama = 0; } mavi_algilama =mavi_algilama *.5; yesil_algilama = yesil_algilama * .75; Serial.print(kirmizi_algilama); Serial.print(" , "); Serial.print(yesil_algilama); Serial.print(" , "); Serial.print(mavi_algilama); Serial.print(" , "); analogWrite(kirmizi, kirmizi_algilama); analogWrite(yesil,yesil_algilama); analogWrite(mavi, mavi_algilama); delay(250); }
Arduino ile renk ayırma otomasyon projemize aşağıdaki sayfadan bakabilirsiniz.
benim rgb ortak anot ondan kod çalışmıyor yardım edebilir misiiniz
int kirmizi=11;
int yesil=10;
int mavi=6;
int S2=7;
int S3=8;
int outpin=4;
int kirmizi_algilama;
int yesil_algilama;
int mavi_algilama;
unsigned int pulseWidth;
void setup() {
Serial.begin(9600);
pinMode(kirmizi, OUTPUT);
pinMode(yesil, OUTPUT);
pinMode(mavi, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(outpin, OUTPUT);
}
void loop() {
digitalWrite(S2,LOW);
digitalWrite(S3,LOW);
pulseWidth = pulseIn(outpin,LOW);
kirmizi_algilama = pulseWidth/400. -1;
kirmizi_algilama = (255- kirmizi_algilama);
digitalWrite(S2,HIGH);
digitalWrite(S3,HIGH);
pulseWidth = pulseIn(outpin,LOW);
yesil_algilama = pulseWidth/400. -1;
yesil_algilama = (255- yesil_algilama);
digitalWrite(S2,LOW);
digitalWrite(S3,HIGH);
pulseWidth = pulseIn(outpin,LOW);
mavi_algilama = pulseWidth/400. -1;
mavi_algilama = (255- mavi_algilama);
if(kirmizi_algilama > yesil_algilama && yesil_algilama > mavi_algilama){
kirmizi_algilama =255;
yesil_algilama = yesil_algilama/2;
mavi_algilama = 0;
}
if(kirmizi_algilama > mavi_algilama && mavi_algilama > yesil_algilama){
kirmizi_algilama = 255;
mavi_algilama = mavi_algilama/2;
yesil_algilama = 0;
}
if(yesil_algilama > kirmizi_algilama && kirmizi_algilama > mavi_algilama){
yesil_algilama =255;
kirmizi_algilama = kirmizi_algilama/2;
mavi_algilama = 0;
}
if(yesil_algilama > mavi_algilama && mavi_algilama > kirmizi_algilama){
yesil_algilama =255;
mavi_algilama = mavi_algilama/2;
kirmizi_algilama = 0;
}
if(mavi_algilama > kirmizi_algilama && kirmizi_algilama > yesil_algilama){
mavi_algilama =255;
kirmizi_algilama = kirmizi_algilama/2;
yesil_algilama = 0;
}
if(mavi_algilama > yesil_algilama && yesil_algilama > kirmizi_algilama){
mavi_algilama =255;
yesil_algilama = yesil_algilama/2;
kirmizi_algilama = 0;
}
mavi_algilama =mavi_algilama *.5;
yesil_algilama = yesil_algilama * .75;
Serial.print(kirmizi_algilama);
Serial.print(” , “);
Serial.print(yesil_algilama);
Serial.print(” , “);
Serial.print(mavi_algilama);
Serial.print(” , “);
analogWrite(kirmizi, kirmizi_algilama);
analogWrite(yesil,yesil_algilama);
analogWrite(mavi, mavi_algilama);
delay(250);
}
kodu atım devreyide doğru bir şekilde yaptım ama renkleri algılamıyor yani yeşil renk gösterdiğime sensöre rgb led yanmıyor sorunu anlayamadım pek fazla yardımcı olursanız sevinirim
aynı anda iki renk sensörünü beraber kullanmak istiyorum, ancak kodları yüklerken hata veriyor? iki renk sensörünü nasıl kullanabilirim?
iyi günler tcs3200 renk sensörüyle yazdığınız kodu kullandığımda seri portta hep aynı değerleri görüyorum sizce ne yapmam gerekli
merhaba tcs 34725 sensörü ile 34200 olan bir devreyi kurabilirmiyim ACİLL
Merhaba Dediğinizi gibi bağlantıları yaptık ama hep yeşil yanmakta ve diğer renkleri algılamıyor
oe bacagını nereye bağlantı yapılacıgını bulamadık onunla bir alakası olabilir mi ?
renk tonlarına göre değerler değiştiğinden, sensörü renk değerlerine göre kalibre etmeniz gerekiyor. Sensörü rengin üzerine tutun ve serial monitöre değerleri yazdırın o değerleri kodda belirtin.
merhaba hocam ; devreyi kurdum kod yüklemesini gerçekleştirdim lakin sadece yeşil yanıyor sürekli olarak farklı renk göstersemde boşta bıraksamda ne yapmalıyım , şimdiden çok teşekkür ediyorum 🙂
Sezgin abi bu kodda sarı renk algıladığında yeşil isik obur renkler algilandiginda kirmizi isik nasil ayarlanir
iyi günler tcs3200 renk sensörüyle yazdığınız kodu kullandığımda seri portta hep aynı değerleri görüyorum sizce ne yapmam gerekli kısacası tcs3200 ü okuyamiyor lütfen yardımcı olurmusunuz projemiz var
iyi günler tcs3200 renk sensörüyle yazdığınız kodu kullandığımda seri portta hep aynı değerleri görüyorum sizce ne yapmam gerekli
Hocam iyi günler öncelikle. Bende TCS3200 var ve bu sensöre göre LCD bağlantısını anlatırmısınız hangi pin hangi pine ?
bu projede lcd ye yazdırmıyor kod. lcd kullanırsanız örnek lcd kodlarını bu koda entegre edebilirsiniz.
Kod ekliycem ama örnek bağlantı şemasını bulamıyorum lcd için
iyi günler sezgin bey ben renk sensörünü kullanarak robot kolun renklere göre cisimleri ayrıştırmasını istiyorum ve sizin verdiğiniz yazılımda renkler okunduktan sonra led yanması yerine ben bu bilgiyi arduıno sayesinde robot kola vermek istiyorum yazılımda ne gibi değişiklikler yapsam daha iyi olur.
red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
bu kodu açıklayabilirmisiniz ?
out çıktısı HIGH’ a eşit ise yani denklik doğru ise LOW, eşit değil yani out değeri LOW ise HIGH yap.
Yani soru işaretinin anlamı, durumun doğru veya yanlış olmasına göre başka değere eşitleme işlemini yapar.
Banada bir yardımcı olurmusunuz renksensörü ile hareket sensörünü aynanda kontrol etmek istiyorum ama renk sensörüm bir çok renge değil sadece sarı renge odaklanıp sarı rengi görmeme olasılığı yükseldikçe buzzerin çok ötmesini istiyorum birçoğu tamam ama renk sensörüme göre bi türlü kod bulamıyorum
Tcs34725 bu model renk sensörünü kullanmanızı tavsiye ederim . Sorunsuz ölçüm yapar. Sizdeki hangi model ?
Hocam merhaba . Yapmak istediğim bir proje için sadece gümüş rengini algılatmak istiyorum nasıl bir sensör kullanmalıyım boyutu küçük olmalı .
Tcs34725 rgb renk sensörünü tavsiye ederim.
5 gündür Arduino Uno ile 6 renk (kırmızı,yeşil,mavi,sarı,turkuaz,mor) okuyabilen bir program yapmaya çalışıyorum . Lütfen sarı, turkuaz ve moru algılayan örnek programı gönderin. Kafayı yemek üzereyim.
bu projedeki renk sensörünü kullanın >> http://www.robimek.com/sesli-renk-okuyucu-robot-yapimi/
projede sarı kırmızı yeşil mavi renklerin algılaması var. başka renk eklemek isterseniz serial monitörü açın ve sensörü rengin üzerine tutun. rengin r g b değerleri ekranda görülecektir. rengin tonlarına göre bir iki ölçüm yapın bu ölçümlerin alt ve üst sınırını yazın. örneğin r değeri minimum 1.3 maksimum 1.8 olduysa if ile bu değerleri belirtin. bu şekilde renkleri ekleyebilirsiniz.
kullandığım RGB ortak katotlu bu kodları kullanıyorum
fakat devre gerektiği gibi çalışmıyor lütfen hatamı söylermisniz..
int kirmizi = 11;
int yesil = 10;
int mavi = 6;
int S2 = 7;
int S3 = 8;
int outpin = 4;
int kirmizi_algilama;
int yesil_algilama;
int mavi_algilama;
unsigned int pulseWidth;
void setup() {
Serial.begin(9600);
pinMode(kirmizi, OUTPUT);
pinMode(yesil, OUTPUT);
pinMode(mavi, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(outpin, INPUT);
}
void loop() {
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
pulseWidth = pulseIn(outpin, LOW);
kirmizi_algilama = pulseWidth / 400. – 1;
kirmizi_algilama = (255 – kirmizi_algilama);
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
pulseWidth = pulseIn(outpin, LOW);
yesil_algilama = pulseWidth / 400. – 1;
yesil_algilama = (255 – yesil_algilama);
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
pulseWidth = pulseIn(outpin, LOW);
mavi_algilama = pulseWidth / 400. – 1;
mavi_algilama = (255 – mavi_algilama);
Serial.print(kirmizi_algilama);
Serial.print(” , “);
Serial.print(yesil_algilama);
Serial.print(” , “);
Serial.println(mavi_algilama);
Serial.println(“”);
analogWrite(kirmizi, kirmizi_algilama);
analogWrite(yesil,yesil_algilama);
analogWrite(mavi, mavi_algilama);
if (kirmizi_algilama>mavi_algilama && kirmizi_algilama > yesil_algilama) {
digitalWrite(kirmizi, LOW);
digitalWrite(mavi, HIGH);
digitalWrite(yesil, HIGH);
}
if (yesil_algilama>mavi_algilama && yesil_algilama > kirmizi_algilama) {
digitalWrite(kirmizi, HIGH);
digitalWrite(mavi, HIGH);
digitalWrite(yesil, LOW);
}
if (mavi_algilama>kirmizi_algilama && mavi_algilama > yesil_algilama) {
digitalWrite(kirmizi, HIGH);
digitalWrite(mavi, LOW);
digitalWrite(yesil, HIGH);
}
if(kirmizi_algilama > yesil_algilama && yesil_algilama > mavi_algilama){
kirmizi_algilama =255;
yesil_algilama = yesil_algilama/2;
mavi_algilama = 0;
}
if(kirmizi_algilama > mavi_algilama && mavi_algilama > yesil_algilama){
kirmizi_algilama = 255;
mavi_algilama = mavi_algilama/2;
yesil_algilama = 0;
}
if(yesil_algilama > kirmizi_algilama && kirmizi_algilama > mavi_algilama){
yesil_algilama =255;
kirmizi_algilama = kirmizi_algilama/2;
mavi_algilama = 0;
}
if(yesil_algilama > mavi_algilama && mavi_algilama > kirmizi_algilama){
yesil_algilama =255;
mavi_algilama = mavi_algilama/2;
kirmizi_algilama = 0;
}
if(mavi_algilama > kirmizi_algilama && kirmizi_algilama > yesil_algilama){
mavi_algilama =255;
kirmizi_algilama = kirmizi_algilama/2;
yesil_algilama = 0;
}
if(mavi_algilama > yesil_algilama && yesil_algilama > kirmizi_algilama){
mavi_algilama =255;
yesil_algilama = yesil_algilama/2;
kirmizi_algilama = 0;
}
delay(250);
}
Ben bu projede ortak anotlu bir RGB kullanıyorum devre doğru çalışmıyor,
RGB’nin anot veya katot olması durumunda kodlarda değişiklik yapmamız
gereklimi ?
ortak anot ise low olduğunda renk yanar. buradaki kod ortak katota göre. yani high olan kısımları low, low olanları da high yaparsan anot rgb ye uyarlamış olursun.
// Coder : Sezgin Gül
#include // Servo motor kütüphanesi
#include “Wire.h” // I2C iletişim protokolü kütüphanesi
#include “Adafruit_TCS34725.h” // Renk sensörü kütüphanesi
#include // Lcd kütüphanesi
LiquidCrystal_I2C lcd(0x27,16,2); // Lcd tanımlama
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAN_1X); // Renk sensörü tanımlama
Servo renk_gosterge; // Servo motor tanımlama
unsigned int kirmizi_led = 3; // Rgb kırmızı pin
unsigned int mavi_led = 4; // Rgb mavi pin
unsigned int yesil_led = 5; // Rgb yeşil pin
uint16_t temizle, kirmizi, yesil, mavi; // Renk değerleri için tanımlamalar
float ortalama, r, g, b; // renk hesaplamaları için tanımlamalar
int kirmizi_aci = 30; // Servo motor kırmızı renk gösterge açısı
int yesil_aci = 90; // Servo motor yeşil renk gösterge açısı
int mavi_aci = 150; // Servo motor mavi renk gösterge açısı
int renksiz = 0; // Servo motor tanımsız renk gösterge açısı
void setup() { // pinlerin çıkış ve giriş ayarları ve tanımlamaları
lcd.init(); // lcd yükleme
lcd.backlight(); // lcd ışık ayarı
Serial.begin(9600); // serial iletişim hızı
renk_gosterge.attach(9); // servo motor 9. dijital pin tanımlaması
if (tcs.begin()) { // renk sensörüne bağlandıysa veri almaya başla
// lcd ye mesaj gönder
lcd.setCursor(0, 1);
lcd.print(“Renk Gostergesi”);
} else { // renk sensörüne bağlanmadıysa
// lcd ye mesaj gönder
lcd.setCursor(0, 1);
lcd.print(“baglanti hatasi!”);
while (1); // yeniden bağlanmaya çalış
}
delay(1000); // 1 saniye bekle
lcd.clear(); // lcd yi temizle
// led pinlerini çıkış olarak ayarla
pinMode(kirmizi_led, OUTPUT);
pinMode(mavi_led, OUTPUT);
pinMode(yesil_led, OUTPUT);
// başlangıçta led sönük ayarla
digitalWrite(kirmizi_led,HIGH);
digitalWrite(yesil_led,HIGH);
digitalWrite(mavi_led,HIGH);
}
void loop() { // sonsuz döngü
Renk_oku(); // Renk oku algoritmasını çalıştır
Rengi_goster(); // Renk göster algoritmasını çalıştır
delay(500); // 500 milisaniye bekle
}
void Renk_oku() // Renk okuma algoritması
{
tcs.getRawData(&kirmizi, &yesil, &mavi, &temizle); // renk sensöründen gelen değerleri al
ortalama = (kirmizi+yesil+mavi)/3; // renk değerlerini topla ve ortalamasını al
r = kirmizi/ortalama; // kırmızı renk değeri oranı
g = yesil/ortalama; // yeşil renk değeri oranı
b = mavi/ortalama; // mavi renk değeri oranı
lcd.setCursor(0,0); // lcd ekran ilk satır ve sutununa “r” yaz
lcd.print(“r”); //
lcd.setCursor(1,0); // lcd ekran ilk satır ve ikinci sutununa r nin değerini yaz
lcd.print(r);
lcd.setCursor(5,0); // lcd ekran ilk satır ve 5.sutununa “g” yaz
lcd.print(“g:”);
lcd.setCursor(7,0); // lcd ekran ilk satır ve 7.sutununa g değerini yaz
lcd.print(g);
lcd.setCursor(11,0); // lcd ekran ilk satır ve 11.sutununa “b” yaz
lcd.print(“b:”);
lcd.setCursor(13,0); // lcd ekran ilk satır ve 11.sutununa b değerini yaz
lcd.print(b);
}
void Rengi_goster() // Renk gösterme algoritması
{
if ((r > 1.4) && (g < 0.9) && (b < 0.9)) { // kırmızı renk olma durumu
renk_gosterge.write(kirmizi_aci); // servo motor kırmızı rengi göster
lcd.setCursor(0,1); // lcd ekran 2.satıra kırmızı renk yaz
lcd.print("Kirmizi Renk");
kirmizi_yak(); // kırmızı led yak
}
else if ((r 1.4) && (b < 0.9)) { // yeşil renk olma durumu
renk_gosterge.write(yesil_aci); // servo motor yeşil rengi göster
lcd.setCursor(0,1); // lcd ekran 2.satıra yeşil renk yaz
lcd.print("Yesil Renk"); // yeşil led yak
yesil_yak();
}
else if ((r < 0.8) && (g 1.2)) { // mavi renk olma durumu
renk_gosterge.write(mavi_aci); // servo motor mavi rengi göster
lcd.setCursor(0,1); // lcd ekran 2.satıra mavi renk yaz
lcd.print(“Mavi Renk”);
mavi_yak(); // mavi led yak
}
else { // tanımlı renkler değilse
lcd.setCursor(0,1); // lcd ekran 2.satıra birşey yazma
lcd.print(” “);
renk_gosterge.write(renksiz); // servo motor tanımız pozisyona al
led_kapat(); // ledi kapat
}
}
void kirmizi_yak() // kırmızı renk tanımı
{
digitalWrite(kirmizi_led,LOW);
digitalWrite(yesil_led,HIGH);
digitalWrite(mavi_led,HIGH);
}
void mavi_yak() // mavi renk tanımı
{
digitalWrite(kirmizi_led,HIGH);
digitalWrite(yesil_led,HIGH);
digitalWrite(mavi_led,LOW);
}
void yesil_yak() // yeşil renk tanımı
{
digitalWrite(kirmizi_led,HIGH);
digitalWrite(yesil_led,LOW);
digitalWrite(mavi_led,HIGH);
}
void led_kapat() // ledi söndür
{
digitalWrite(kirmizi_led,HIGH);
digitalWrite(yesil_led,HIGH);
digitalWrite(mavi_led,HIGH);
}
Tcs 34725 hata veriyor sebebi ne olabiir?
Lütfen çok acilll…
sensörün pinlerini doğru taktığınıza emin misiniz. Yazılım kısmında sorun yok. Bağlantılarınızı tekrar kontrol edin.
Tcs3475_Gani_1× was not declared in this scope
Hata nerede?
merhaba bağlantılar doğru kodu kopyaladım yapıştırdım hata yok ama seri portta sürekli sabit 256 , 192 ,58 gibi değerler okuyor.Hangi rengi göstersem sonuç aynı acaba renk sensörüm mü bozuk ?
bende aynı hatayı aldım aşağıdaki linkdeki kodu deneyince daha verimli bi sonuç aldım bi deyni istersenzi
gelecegiyazanlar.turkcell.com.tr/konu/arduino/egitim/arduino-102/yuzey-renklerinin-algilanmasi
Son bir şey daha arduino da hangi pine hangi pin i takmalıyım? Breadboarda renk sensörünün hiç bir pinini bağlamayacak mıyım?
Breadboarda taksanız da zaten oradan arduinoya bağlantı yapmanız gerekir. Yani breadboard şart değil sadece bağlantı yapmanızı kolaylaştırır. Dediğim gibi 3.3v – 3.3v a gnd gnd ye scl analog 5 , sda analog 4 pinine takın.
Verdiğiniz bilgiler için çok teşekkür ederim…
Biz zaten arduino ile breadboard arasında bağlantı kurmuştuk. Bu durumda renk sensörünü breadboarda bağlamak istesek breadboardda nereye bağlamalıyız? Breadboarda bağlamak istememizin sebebi devredeki diğer elemanların sizin söylediğiniz pinlerde takılı olanları var. Arduino uno kullandık devremizde.
aynı pini kullandığınız sadece enerji pinleri olmalı. onları da breadboard da seri bağlayıp ortak kablo ile arduino pini ile bağlantı kurun.
Teşekkürler…
Ceveplarınız için teşekkürler…
google.com.tr/search?q=arduino+renk+alg%C4%B1lama+uygulamas%C4%B1&hl=tr&source=lnms&prmd=ivn&tbm=isch&sa=X&ved=0ahUKEwi74r3D9cfMAhXDSBQKHXhMDgkQ_AUIBygB&biw=1280&bih=800#hl=tr&tbm=isch&q=arduino+renk+alg%C4%B1lama+uygulamas%C4%B1+devresi++proje+hocam&imgrc=V6JxRNHxK7bdoM%3A
Bu linkten devremizi görebilirsiniz.
Nerede hata yapıyorum?
yukarıda yazdığım pinleri arduinoya bağlamanız yeterli.
Son bir şey daha arduino da hangi pine hangi pin i takmalıyım? Breadboarda renk sensörünün hiç bir pinini bağlamayacak mıyım?
Sarı, mor, pembe, turuncu bu renkleri’de RGB’ de
nasıl elde edebilirim yardımcı olurmusunuz.
buradaki projede sarı ve turuncu tanımı var diğerlerini de serial monitördeki değerlere göre koşula ekle.
TCS34725 renk sensöründe 7 adet giriş var fakat içerisinde gelen erkek header lar ın 8 adet girişi var.Erkek headerleri renk sensörüne nasıl takacağız? ve hangi girişler kullanılıyor? led, ınt, sda, scl, 3v3, gnd, vın? hangi giriş breadboarda, hangisi arduino uno’ya bağlanıyor?
sensör pinlerinden 3.3v, gnd, scl ve sda pinlerini kullanmanız yeterlidir Buradan örnek projeye bakabilirsiniz. http://www.robimek.com/sesli-renk-okuyucu-robot-yapimi/
Peki o erkek headerleri o 7 girişe naıl takacagız? Fazladan olan yer hangi tarafta kalacak? Son olarak pinlerin hepsini arduino ya mı bağlayacağız?
Bir sorum olucaktıda ben bu projeyi yaptım fakat kırmızı led sürekli yanıyor bunu nasıl çözebilirim
İyi günler ben tsc3200 renk sensöründe sarı rengi elde etme istiyorum yardım ederseniz sevinirim
iyi günler bu rgb sensörünün out çıkışından üretilen sinyaller haberleşme protokol verisimi yoksa kare dalga sayınımı saymalıyız ? bu sensörü assembly şeklinde kodlamam gerekiyorda.
üretilen çıkışın nasıl oldugunu ögrenmem gerekiyor.
50% duty cycle ile kare dalga üretir.
Merhabalar ,
Paylaştığınız bu projeyi yapmaya çalıştım ama serial portta hep aynı değeri alıyorum. Bu sorunu nasıl çözebilirim.
Teşekkürler
bu renk sensöründe yansıma probleminden kaynaklı aynı değer gösterebiliyor. Ama TCS34725 renk sensörü bu konuda oldukça iyidir . Sorunsuz renk algılıyor . Projesi burada mevcuttur >> http://www.robimek.com/sesli-renk-okuyucu-robot-yapimi/
Teşekkür ederim. Peki bu problemi çözebilmenin yolu var mı önerebilceğiniz ?
değerleri seriale yazdırın. ona göre programa entegre edin. Ama dediğim gibi bu sensör algılamada iyi değil
bu projede rgb led yerine dc motor sürüleblirmi acaba
Renklere göre dc motoru kontrol edersiniz Yazılımı ona göre düzenlemelisiniz.
Selam, Sezgin Bey
boolean stringComplete = false; // whether the string is complete
String inputString=””; // a string to hold incoming data
int kirmizi=8;
int mavi=9;
void setup() {
// initialize serial:
Serial.begin(9600);
pinMode(kirmizi,OUTPUT);
pinMode(mavi,OUTPUT);
// reserve 200 bytes for the inputString:
// inputString.reserve(200);
}
void loop() {
while (Serial.available()) {
// get the new byte:
char inChar = Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == ‘\n’) {
stringComplete = true;
}
}
// print the string when a newline arrives:
if (stringComplete) {
if (inputString == “yeşil\n”)
{
digitalWrite(mavi,HIGH);
digitalWrite(kirmizi,LOW);
}
else if (inputString==”kırmızı\n”)
{
digitalWrite(kirmizi,HIGH);
digitalWrite(mavi,LOW);
}
// Serial.println(“yazılan metin “+inputString);
// clear the string:
inputString = “”;
stringComplete = false;
}
}
sorun, alınan string verinin karşılaştırmasında. tek karakter kıyaslayınca çalışıyor. yeşil yerine ==”y\n” yazıldığında sorun yok. alınan veriyi println yapınca da gönderilen verinin aynısını yazıyor. sadece kıyaslama yapınca şart sağlanmıyor. bu arada c# ile denedim, serial monitör ile denedim netice aynı…string veri okumak bu kadar zor olmamalı. char veri projemiz için elverişli olmayabilir.
İsmail bey, sizin kodunuzda yeşil pin tanımlaması yapmamışsızsınız.Ayrıca yeşil print ederken ş harfi türkçe karakter olduğundan kabul etmez.
yeşil led olduğu için denemede yeşil yazdım. mavi pin var yukarıda. esas sorum; seri porttan gelen metni örneğin kırmızı kelimesini olduğu gibi sorgulayamam mı? c# tan “kirmizi” şeklinde mi göndermem gerekir?
Sorun çözüldü! Şükür. Sorgulama yapılacak kelimeyi İngilizce karakterlerle değiştirince oldu. yesil, kirmizi…
Teşekkürler Sezgin Bey.
Rica ederim İsmail Bey, İyi çalışmalar.
Teşekkürler Sezgin Bey.
Sarı renk algılayabilir mi ?
Tabi algılayabilir. Renklerin yüzdelik karışım değerlerine bakarak yazılıma ekleyebilirsiniz.