Arduino
Arduino Çizgi İzleyen Robot
// ------------------------
// PIN TANIMLARI
// ------------------------
// Çizgi sensör pinleri
const int solPin = 2;
const int ortaPin = 3;
const int sagPin = 4;
// Motor kontrol pinleri (PWM destekli)
const int ENA = 5; // Sağ motor hız
const int IN1 = 7; // Sağ motor yön
const int IN2 = 6;
const int ENB = 9; // Sol motor hız
const int IN3 = 11; // Sol motor yön
const int IN4 = 10;
// ------------------------
// AYARLAR
// ------------------------
int motorHiziSag = 100; // Sol motor hızı (0-255)en düşük 65 olabilir
int motorHiziSol = 100; // Sağ motor hızı (0-255)EN düşük 55
void setup() {
// Sensör pinlerini giriş olarak ayarla
pinMode(solPin, INPUT);
pinMode(ortaPin, INPUT);
pinMode(sagPin, INPUT);
// Motor pinlerini çıkış olarak ayarla
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
// Seri haberleşmeyi başlat
Serial.begin(9600);
}
void loop() {
// Sensörlerden veri oku
int sol = !digitalRead(solPin);
int orta = !digitalRead(ortaPin);
int sag = !digitalRead(sagPin);
// Seri Monitör'e yazdır
Serial.print("Sol: ");
Serial.print(sol);
Serial.print(" | Orta: ");
Serial.print(orta);
Serial.print(" | Sag: ");
Serial.println(sag);
// Sensörlere göre karar ver
if (orta == 0 && sol == 1 && sag == 1) {
ileri();
}
else if (sol == 0 && orta == 1 && sag == 1) {
solaDon();
}
else if (sag == 0 && orta == 1 && sol == 1) {
sagaDon();
}
else if (sol == 0 && orta == 0 && sag == 1) {
sagaKeskin();
}
else if (sol == 1 && orta == 0 && sag == 0) {
solaKeskin();
}
else if (sol == 0 && orta == 0 && sag == 0) {
ileri(); // geniş çizgi olabilir
}
else {
dur(); // çizgi kaybolduysa
}
delay(10);
}
// ------------------------
// MOTOR FONKSİYONLARI
// ------------------------
void ileri() {
analogWrite(ENA, motorHiziSag);
analogWrite(ENB, motorHiziSol);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void solaDon() {
analogWrite(ENA, 85); // sol yavaş
analogWrite(ENB, 0); // sağ normal
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void sagaDon() {
analogWrite(ENA, 0); // sol normal
analogWrite(ENB, 85); // sağ yavaş
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void solaKeskin() {
analogWrite(ENA, 0); // sol durur
analogWrite(ENB, 85); // sağ döner
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void sagaKeskin() {
analogWrite(ENA, 85); // sol döner
analogWrite(ENB, 0); // sağ durur
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void dur() {
analogWrite(ENA, 0);
analogWrite(ENB, 0);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
