[Arduino] Linefollower Dengan Photoresistors: 5 Langkah

[Arduino] Linefollower Dengan Photoresistors: 5 Langkah

Isi kandungan:

Anonim

Pengenalan:

Hello!

Saya membina robot garis pemisah yang boleh digunakan dalam pelbagai cara, dan saya merumuskan projek saya dalam beberapa langkah.

Untuk bermula, semua yang anda perlukan adalah bahagian berikut:

Senarai Bahagian

-Robot bingkai

-Two roda

-Dua motor DC

-Mini roti papan

-Two dipimpin

-Two photoresistors

-Two 56k perintang

-Two 330 perintang

- Beberapa wayar

-Diodes (jika tidak dimasukkan ke dalam pengawal motor)

-Motor controller (i digunakan L298)

-Baik papan roti

-Tiga 1.5v bateri

-Arduino UNO

Bekalan:

Langkah 1: Bingkai Robot

Senarai Bahagian:

-Robot bingkai

-Two roda

-Dua motor DC

Bagaimana untuk:

Saya menggunakan bingkai robot lama dengan dua roda yang diperintahkan oleh dua motor DC, tetapi anda boleh menggunakan penyelesaian yang setara juga.

Langkah 2: Sensor Ir + Photoresistor

Senarai Bahagian:

-Mini roti papan

-Two dipimpin

-Two photoresistors

-Two 56k perintang

-Two 330 perintang

- Beberapa wayar

Bagaimana untuk:

Hitung jarak antara dua pasang pateri dan fotoresistor yang mendasarkan pada lebar pita anda.

Posisi photoresistors dan leds seperti yang dilihat dalam gambar.

Sambungan membawa kepada dua perintang 330 ohm dan meletakkan beberapa pita tidak telus di sekelilingnya untuk mengelakkan sebarang gangguan dengan photoresistor

Letakkan papan roti mini di bahagian bawah bingkai.

Langkah 3: Pengawal Motor

Senarai Bahagian:

- Beberapa wayar

-Diodes (jika tidak dimasukkan ke dalam pengawal motor)

-Motor pengawal

-Baik papan roti

-Tiga 1.5v bateri

Sensor Assembling:

Pasangkan pin input jambatan A pada pin 11 dan 12 Arduino.

Pasangkan pin input jambatan B pada pin 6 dan 5 Arduino.

Sambungkan dengan beberapa dioda pin output setiap jambatan ke motor, jika diperlukan.

Sambungkan voltan bekalan logik (Vss) ke 5v Arduino dan sambungkan tanah pengawal motor ke gnd arduino.

Sambungkan voltan bekalan (Vs) ke 3 bateri AA.

Langkah 4: Pemrograman Arduino

Senarai Bahagian:

-Arduino UNO

- Beberapa wayar

Gunakan kod ini:

int PinSens_A = A5;

int PinSens_B = A4;

int ValSens_A = 0;

int ValSens_B = 0;

int Ris;

int PinMotorA_1 = 10;

int PinMotorA_2 = 11;

int PinMotorB_1 = 5;

int PinMotorB_2 = 6;

int SpeedMotor_A;

int SpeedMotor_B;

int perbezaan = 0;

int RoL (int A, int B)

{

jika (A> B)

kembali 1;

jika (B> A)

kembali 2;

jika (A = B)

kembali 0;

}

tidak sah Ikut (int val, speedMax int)

{

jika (val == 2)

{

SpeedMotor_A = speedMax;

SpeedMotor_B = 0;

}

jika (val == 1)

{

SpeedMotor_A = 0;

SpeedMotor_B = speedMax;

}

}

int Pindah (int dir)

{

jika (dir == 0)

{

analogWrite (PinMotorA_1, SpeedMotor_A);

analogWrite (PinMotorB_1, SpeedMotor_B);

}

jika (dir == 1)

{

analogWrite (PinMotorA_2, SpeedMotor_A);

analogWrite (PinMotorB_2, SpeedMotor_B);

}

}

int calcDiff ()

{

ValSens_A = analogRead (PinSens_A);

ValSens_B = analogRead (PinSens_B);

jika (ValSens_A> ValSens_B)

{

int diff = ValSens_A - ValSens_B;

pulangan diff;

}

jika (ValSens_A <ValSens_B)

{

int diff = ValSens_B - ValSens_A;

pulangan diff;

}

}

tidak sah Debug ()

{

Serial.print (Ris);

Serial.print ("");

Serial.print (ValSens_A);

Serial.print ("");

Serial.print (ValSens_B);

Serial.println ("");

}

batal persediaan ()

{

Serial.begin (9600);

pinMode (PinMotorA_1, OUTPUT);

pinMode (PinMotorA_2, OUTPUT);

pinMode (PinMotorB_1, OUTPUT);

pinMode (PinMotorB_2, OUTPUT);

pinMode (PinSens_A, INPUT);

pinMode (PinSens_B, INPUT);

}

kekosongan gelung ()

{

jika (perbezaan == 0)

{

perbezaan = 1;

}

ValSens_A = analogRead (PinSens_A);

ValSens_B = analogRead (PinSens_B) +150; // gunakan nombor ubah untuk mengimbangi sensor

Ris = RoL (ValSens_A, ValSens_B);

Ikut (Ris, 100);

Pindah (0);

Debug ();

};

Langkah 5: Ujian

Akhirnya, uji konfigurasi anda untuk prestasi terbaik.