HalilSenn
MB Üyesi
- Kayıt
- 2 Ocak 2019
- Mesajlar
- 13
- Tepkiler
- 3
- Yaş
- 28
- Üniv
- Adnan Menderes Üniversitesi
Merhaba arkadaşlar çizgi izleyen ve engel geçen araç yapıyorum. Çizgi izleme ve engele gelmede bir sorun yaşamıyorum ancak engelin önünde durduktan sonra aracın bir kez daha engel görmesini istiyorum. Bir kez daha engeli gördükten sonra geçecek. Eğer bunu yaptırmazsam engel yok diyerek geçmek isteyecek, belkide engel kapanırken denk gelecek ve engelle çarpışacak. O yüzden 1 kere daha engeli gördükten sonra geç işlemini nasıl yaptırabilirim?
#define SensorSol 4 //left sensor
#define echoPin 12
#define trigPin 11
#define SensorSag 2 //right sensor
long sure, uzaklik; //duration, distance
#define MotorR1 9
#define MotorR2 8
#define MotorRE 10
#define MotorL1 7
#define MotorL2 6
#define MotorLE 5
void setup() {
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(SensorSol, INPUT);
pinMode(SensorSag, INPUT);
pinMode(MotorR1, OUTPUT);
pinMode(MotorR2, OUTPUT);
pinMode(MotorRE, OUTPUT);
pinMode(MotorL1, OUTPUT);
pinMode(MotorL2, OUTPUT);
pinMode(MotorLE, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
sure = pulseIn(echoPin, HIGH);
uzaklik = (sure / 2) / 29.1 ;
Serial.print("uzaklik: ");
Serial.println(uzaklik);
if (uzaklik > 5 ) {
if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 0){
ileri();
}
if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 1){
sag();
}
if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 0){
ileri();
}
if(digitalRead(SensorSol) == 1 && digitalRead(SensorSag) == 0){
sol();
}
if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 0){
ileri();
}
}
if (uzaklik < 5){
dur();
delay(500);
//SORUN BURADA BAŞLIYOR.
//ENGELİ BİR DAHA GÖR VE ARDINDAN if (uzaklik > 5);
//geç();
//delay(1000);
//void stop
//delay(500);
//Tekrar çizgi izlemeye devam et
}
}
void ileri(){ // move forward
digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 60);
digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 80);
}
void sag(){ //right
digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 0);
digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 80);
}
void sol(){ //left
digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 80);
digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 0);
}
void dur(){ // stop
digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 0);
digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 0);
}
void gec(){ //pass obstacle
digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 250);
digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 250);
}
Veya engeli gördürme konusunda MZ80 mi kullanmalıyım? Hangisi daha iyi sonuç verir, MZ80 mi yoksa HCSR04 mü?
Projem hakkında video;
#define SensorSol 4 //left sensor
#define echoPin 12
#define trigPin 11
#define SensorSag 2 //right sensor
long sure, uzaklik; //duration, distance
#define MotorR1 9
#define MotorR2 8
#define MotorRE 10
#define MotorL1 7
#define MotorL2 6
#define MotorLE 5
void setup() {
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(SensorSol, INPUT);
pinMode(SensorSag, INPUT);
pinMode(MotorR1, OUTPUT);
pinMode(MotorR2, OUTPUT);
pinMode(MotorRE, OUTPUT);
pinMode(MotorL1, OUTPUT);
pinMode(MotorL2, OUTPUT);
pinMode(MotorLE, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
sure = pulseIn(echoPin, HIGH);
uzaklik = (sure / 2) / 29.1 ;
Serial.print("uzaklik: ");
Serial.println(uzaklik);
if (uzaklik > 5 ) {
if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 0){
ileri();
}
if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 1){
sag();
}
if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 0){
ileri();
}
if(digitalRead(SensorSol) == 1 && digitalRead(SensorSag) == 0){
sol();
}
if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 0){
ileri();
}
}
if (uzaklik < 5){
dur();
delay(500);
//SORUN BURADA BAŞLIYOR.
//ENGELİ BİR DAHA GÖR VE ARDINDAN if (uzaklik > 5);
//geç();
//delay(1000);
//void stop
//delay(500);
//Tekrar çizgi izlemeye devam et
}
}
void ileri(){ // move forward
digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 60);
digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 80);
}
void sag(){ //right
digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 0);
digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 80);
}
void sol(){ //left
digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 80);
digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 0);
}
void dur(){ // stop
digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 0);
digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 0);
}
void gec(){ //pass obstacle
digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 250);
digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 250);
}
Veya engeli gördürme konusunda MZ80 mi kullanmalıyım? Hangisi daha iyi sonuç verir, MZ80 mi yoksa HCSR04 mü?
Projem hakkında video;