Çizgi izleyen ve engelde duran robota TCS34725 RGB Renk Sensörü eklemek istiyoruz. Bununla kırmızı iışta duran yeşil işıkta devam eden araç yapmak istiyoruz. çizgi izleyen robot kodları düzgün çalışıyor, renk sensörü kodlarıda düzgün çalışıyor ama renk sensörü kodlarını programa katınca araç çizgiyi takip etmiyor...sorunu çözemedim yardımcı olabilirmisiniz...
#include "Wire.h"
#include "Adafruit_TCS34725.h"
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_1X);
#define echoPin 12 //
#define trigPin 13 //
int SensorIR1=12 ;
int SensorIR2=5 ;
int SensorIR3=3 ;
int SensorIR5=13 ;
int SensorIR4=4 ;
#define MotorR1 6
#define MotorR2 7//
#define MotorRE 11
#define MotorL1 9
#define MotorL2 8
#define MotorLE 10
void setup() {
pinMode(MotorR1, OUTPUT);
pinMode(MotorR2, OUTPUT);
pinMode(MotorL1, OUTPUT);
pinMode(MotorL2, OUTPUT);
}
void loop() {
int sag= digitalRead(SensorIR5);
int ortasag= digitalRead(SensorIR4);
int orta= digitalRead(SensorIR3);
int ortasol= digitalRead(SensorIR2);
int sol= digitalRead(SensorIR1);
uint16_t clearcol, red, green, blue;//RENK SENSÖRÜ KODLARI
float average, r, g, b;
delay(100); // Farbmessung dauert c. 50ms
tcs.getRawData(&red, &green, &blue, &clearcol);
average = (red+green+blue)/3;
r = red/average;
g = green/average;
b = blue/average;
do{
if((r > 1.4) && (g < 0.9) && (b < 0.9))
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 0); //
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 0); // Sol motorun hızı 0 (Motor duruyor)
}
while((r < 0.95) && (g > 1.4) && (b < 0.9));
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 120); // Sağ motorun hızı 150
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 110); //
if(sol ==0 && ortasol==1&& orta==1 && ortasag==1&& sag==1){ // sol sensör çizgiyi gördüğünde robot ileri gitsin.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 100); // Sağ motorun hızı 150
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE,0); //
}
else if(sol ==1 && ortasol==0&& orta==1 && ortasag==1&& sag==1 ){ // Solorta sensör çizgiyi gördüğünde robot sağa dönsün.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE,100); // Sağ motorun hızı 0 (Motor duruyor)
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 0); //
}
else if(sol ==1 && ortasol==1&& orta==0 && ortasag==1&& sag==1){ // orta sensör çizgiyi gördüğünde robot sağa dönsün.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 120); // Sağ motorun hızı 150
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 110); // Sol motorun hızı 0 (Motor duruyor)
}
else if(sol ==1 && ortasol==1&& orta==1 && ortasag==0&& sag==1){ // sagorta sensör çizgiyi gördüğünde robot sağa dönsün.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 0); //
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 100); // Sol motorun hızı 0 (Motor duruyor)
}
else if(sol ==1 && ortasol==1&& orta==1 && ortasag==1&& sag==0){ // sag sensör çizgiyi gördüğünde robot sağa dönsün.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 0); //
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 100); // Sol motorun hızı 0 (Motor duruyor)
}
}
#include "Wire.h"
#include "Adafruit_TCS34725.h"
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_1X);
#define echoPin 12 //
#define trigPin 13 //
int SensorIR1=12 ;
int SensorIR2=5 ;
int SensorIR3=3 ;
int SensorIR5=13 ;
int SensorIR4=4 ;
#define MotorR1 6
#define MotorR2 7//
#define MotorRE 11
#define MotorL1 9
#define MotorL2 8
#define MotorLE 10
void setup() {
pinMode(MotorR1, OUTPUT);
pinMode(MotorR2, OUTPUT);
pinMode(MotorL1, OUTPUT);
pinMode(MotorL2, OUTPUT);
}
void loop() {
int sag= digitalRead(SensorIR5);
int ortasag= digitalRead(SensorIR4);
int orta= digitalRead(SensorIR3);
int ortasol= digitalRead(SensorIR2);
int sol= digitalRead(SensorIR1);
uint16_t clearcol, red, green, blue;//RENK SENSÖRÜ KODLARI
float average, r, g, b;
delay(100); // Farbmessung dauert c. 50ms
tcs.getRawData(&red, &green, &blue, &clearcol);
average = (red+green+blue)/3;
r = red/average;
g = green/average;
b = blue/average;
do{
if((r > 1.4) && (g < 0.9) && (b < 0.9))
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 0); //
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 0); // Sol motorun hızı 0 (Motor duruyor)
}
while((r < 0.95) && (g > 1.4) && (b < 0.9));
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 120); // Sağ motorun hızı 150
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 110); //
if(sol ==0 && ortasol==1&& orta==1 && ortasag==1&& sag==1){ // sol sensör çizgiyi gördüğünde robot ileri gitsin.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 100); // Sağ motorun hızı 150
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE,0); //
}
else if(sol ==1 && ortasol==0&& orta==1 && ortasag==1&& sag==1 ){ // Solorta sensör çizgiyi gördüğünde robot sağa dönsün.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE,100); // Sağ motorun hızı 0 (Motor duruyor)
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 0); //
}
else if(sol ==1 && ortasol==1&& orta==0 && ortasag==1&& sag==1){ // orta sensör çizgiyi gördüğünde robot sağa dönsün.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 120); // Sağ motorun hızı 150
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 110); // Sol motorun hızı 0 (Motor duruyor)
}
else if(sol ==1 && ortasol==1&& orta==1 && ortasag==0&& sag==1){ // sagorta sensör çizgiyi gördüğünde robot sağa dönsün.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 0); //
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 100); // Sol motorun hızı 0 (Motor duruyor)
}
else if(sol ==1 && ortasol==1&& orta==1 && ortasag==1&& sag==0){ // sag sensör çizgiyi gördüğünde robot sağa dönsün.
digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
analogWrite(MotorRE, 0); //
digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
analogWrite(MotorLE, 100); // Sol motorun hızı 0 (Motor duruyor)
}
}