Çizgi izleyen robotlar, belirli bir çizgi üzerinde hareket eden ve bu çizgiyi takip eden robotlardır. Bunlar genellikle optik sensörler veya kamera gibi sensörler kullanarak çizginin pozisyonunu algılar ve bu bilgiye göre hareket ederler. Bu robotlar genellikle kalibrasyon, hız ve yol takibi gibi konularda programlanabilirler ve endüstriyel otomasyon, eğitim veya eğlence amaçlı kullanılabilirler.
Arduino, çizgi izleyen robotların yapımı için popüler bir platformdur. Arduino, kolayca kullanılabilen bir kodlama dili ve uygun fiyatlı bir donanım platformu sunması nedeniyle, öğrenciler ve hobbyistler tarafından sıklıkla kullanılır. Çizgi izleyen robotların yapımı için optik sensörler, fotoresistörler veya IR sensörler kullanılabilir ve bunlar Arduino üzerinde programlanarak çizginin takibini sağlayabilir.
const int leftSensor = A0; const int rightSensor = A1; const int leftMotor = 3; const int rightMotor = 4; void setup() { pinMode(leftSensor, INPUT); pinMode(rightSensor, INPUT); pinMode(leftMotor, OUTPUT); pinMode(rightMotor, OUTPUT); } void loop() { int leftValue = analogRead(leftSensor); int rightValue = analogRead(rightSensor); if (leftValue > rightValue) { digitalWrite(leftMotor, HIGH); digitalWrite(rightMotor, LOW); } else { digitalWrite(leftMotor, LOW); digitalWrite(rightMotor, HIGH); } }
Bu kod, iki fotoresistör kullanarak çizginin pozisyonunu okur ve bu pozisyona göre iki motorun açıp kapatmasını sağlar. Eğer sol sensörün okuma değeri sağ sensörün okuma değerinden daha yüksekse, sol motor açık ve sağ motor kapalı kalır, aksi takdirde sağ motor açık ve sol motor kapalı kalır. Ancak, bu kod sadece bir başlangıç noktasıdır ve kullanılan sensörler, motorlar ve diğer elemanlar gibi faktörlere göre değişebilir.
Ayrıca;
Pololu QTR-8A, bir IR sensör modülüdür ve çizgi izleyen robotlar için kullanılabilir. Bu sensör, 8 adet IR verici ve alıcı düzeni ile tasarlandı ve çizginin pozisyonunu okumak için kullanılabilir. Sensör, bir IR verici tarafından yayılan IR ışığını alıcı tarafından algılanmasına dayanır ve bu algılanma değerlerine göre çizginin pozisyonunu hesaplar. Pololu QTR-8A, kolayca kullanılabilir ve başka bir devre gerekmeden direk olarak Arduinoya bağlanabilir. Ayrıca, sensörün hassasiyeti ve doğruluğu için kalibrasyon işlemi yapılabilir.
Pololu QTR-8A ve Arduino ile çizgi izleyen bir robot yapmak için aşağıdaki adımlar takip edilmelidir:
Malzemelerin toplanması: Pololu QTR-8A sensör, Arduino plakası, DC motorlar, motor sürücü devresi, hariç/iç pil ve bağlantı kabloları gerekli malzemelerdir.
Sensörün bağlanması: Pololu QTR-8A sensörü, Arduinonun analog giriş pini olan A0-A7 pini ile bağlanır. Bağlantı şeması Pololu’nun web sitesinde bulunabilir.
Motorların bağlanması: DC motorlar, motor sürücü devresi yardımı ile Arduinoya bağlanır. Motor sürücü devresi, motorların hızını ve yönünü kontrol etmek için gereklidir.
Kodun yazılması: Çizgi izleyen bir robot yapmak için gereken kod, Pololu QTR-8A sensör verilerini okuyarak çizginin pozisyonunu hesaplamak ve bunu motorların hızı ve yönüne uygulamak için yazılır.
Test etme: Kod yazıldıktan sonra, robotun doğru bir şekilde çalışıp çalışmadığı test edilir.
Bu adımlar genel olarak çizgi izleyen bir robot yapmak için nasıl yapılacağını gösterir. Ancak, detaylı bilgi ve örnek kodlar için Pololu’nun web sitesi veya başka kaynaklar incelenebilir.
Aşağıdaki kod, Pololu QTR-8A sensörü ve Arduino ile çizgi izleyen bir robot yapmak için örnek bir koddur:
#include <QTRSensors.h> // Sensör pin tanımları #define NUM_SENSORS 8 #define NUM_LEDS 8 #define QTR_EMITTERS_ON 1 #define QTR_EMITTERS_OFF 0 #define TIMEOUT 2500 #define EMITTER_PIN QTR_NO_EMITTER_PIN QTRSensorsAnalog qtr((unsigned char[]) {0, 1, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, TIMEOUT, EMITTER_PIN); unsigned int sensorValues[NUM_SENSORS]; void setup() { // Sensör kalibrasyon qtr.calibrate(); Serial.begin(9600); } void loop() { // Sensör verilerini oku unsigned int sensors[NUM_SENSORS]; qtr.read(sensors); // En sol ve en sağ sensör verilerini kullanarak çizginin pozisyonunu hesapla int position = qtr.readLine(sensorValues); // Çizginin pozisyonuna göre motorların hızını ve yönünü ayarla if (position < 0) { // Çizgi sağ tarafında // Motorların hızını ve yönünü ayarla } else if (position > 0) { // Çizgi sol tarafında // Motorların hızını ve yönünü ayarla } else { // Çizginin ortasında // Motorların hızını ve yönünü ayarla } // Verileri seri porttan görüntüle for (int i = 0; i < NUM_SENSORS; i++) { Serial.print(sensorValues[i]); Serial.print("\t"); } Serial.println(); delay(100); }
Bu kod, Pololu QTR-8A sensöründen çizginin pozisyonunu okuyarak motorların hızını ve yönünü ayarlar. Sensör verileri serial porttan görüntülenir. Kod, sensör kalibrasyonu, çizginin pozisyonunun okunması ve motorların hızını ve yönünün ayarlanması gibi temel işlevleri içerir ve çizgi izleyen bir robot yapmak için güncellenebilir ve geliştirilebilir.