Robot car elak halangan ialah satu chassis 2WD, sebuah pemandu L298N, satu HC-SR04 yang menghala ke depan, dan satu gelung yang mengukur, memutuskan, kemudian memandu. Bahagian mekanikalnya cuma satu petang berskru; yang menentukan sama ada kereta anda meluncur atau merangkak ialah bateri, kerana L298N diam-diam menelan sekitar dua volt sebelum motor sempat melihatnya.
Apa komponen yang diperlukan untuk robot car elak halangan?
Kit chassis 2WD membekalkan bahagian mekanikalnya β plat akrilik, dua motor gear TT, roda, satu roda caster depan, skru dan satu suis rocker. Setiap bahagian elektriknya pula anda yang tambah, dan pemegang bateri AA yang memang disertakan dalam kit itulah satu-satunya item yang digantikan oleh panduan ini.
Senarai komponen β robot car 2WD elak halangan
Senarai komponen pilihan
Chassis 4WD ialah laluan alternatif dan menjalankan sketch yang sama persis. TP4056 mengecas semula dua sel 18650 antara sesi main, servis solder 5 pin meliputi empat sambungan tab motor kalau anda lebih suka tidak solder sendiri, dan pita itu mengikat sensor pada hidung chassis serta menebat sambungan bateri.
Jantina hujung wayar itulah yang selalu tersilap pada pesanan pertama. Header kawalan L298N dan header HC-SR04 kedua-duanya pin male, manakala tepi Uno pula soket female, jadi kesemua sepuluh wayar isyarat mestilah male-to-female. Dua laluan kuasa ialah pengecualiannya: satu hujungnya pin telanjang yang diapit di bawah skru dalam blok terminal L298N, dan hujung satu lagi kena masuk ke dalam soket female pada Uno, jadi kedua-dua hujung mesti male β wayar male-to-female sampai ke Uno sambil membawa soket, dan dua soket tidak boleh bercantum. Dua itu datang daripada pek male-to-male. Wayar jumper breadboard yang tegar tidak sesuai untuk kedua-dua kerja ini. Uno diprogram melalui USB-B bersaiz penuh, jadi ia perlukan kabel A-to-B.
Bagaimana cara pasang chassis sebelum sebarang wiring?
Plat chassis 2WD dihantar dengan filem pelindung kertas kraft pada kedua-dua permukaannya, jadi “kadbod” yang anda buka itu sebenarnya bukan chassis. Kelupas filem itu dari kedua-dua belah, dan dari tab pemasangan motor kecil berbentuk T itu sekali, barulah setiap lubang dan slot pada akrilik jernih itu kelihatan.
Solder bukan pilihan di sini. Motor TT sampai dengan tab logam telanjang pada penutup hujung belakangnya, berserta pasangan wayar merah dan hitam yang longgar dengan hujung bertimah telanjang: empat sambungan, dua bagi setiap motor. Panduan solder kami menerangkan tekniknya, dan servis solder 5 pin meliputi tepat empat sambungan ini kalau anda lebih suka poskan bahagian itu kepada kami. Jangan lama-lama dengan besi solder β tab itu duduk beberapa milimeter sahaja dari penutup hujung plastik. Suis rocker dalam kit pun ada lug telanjang, jadi memasangnya pada wayar positif pek bateri ialah dua sambungan lagi; tinggalkan suis itu dan anda matikan kereta dengan mengangkat satu sel keluar dari pemegangnya. Bahagian L298N langsung tidak perlukan solder β setiap wayar di situ diapit di bawah skru.
Selebihnya kerja mekanikal β motor diselitkan antara tab akrilik, roda ditolak masuk ke aci putih berbentuk palang, caster di bawah tepi depan β dan berbaloi ditonton sekali sebelum anda mula:

Tiada apa-apa dalam kit yang memegang HC-SR04, jadi rancang tempatnya sebelum dek itu penuh. Sensor itu tempatnya di bahagian paling depan, rata dan menghala terus ke hadapan, dengan kedua-dua transdusernya melepasi tepi akrilik β kalau ia diundur ke belakang hidung, ia mendengar dek itu sendiri dan bukan bilik. Rata itu lebih penting daripada rupanya: pancaran itu keluar dalam bentuk kon kira-kira 15 darjah luasnya, jadi sensor yang terjongket sedikit ke bawah akan jumpa lantai beberapa puluh sentimeter di hadapan lalu menganggapnya dinding yang tidak pernah hilang. Dua pengikat kabel melalui slot chassis, atau sekeping pita penebat di keliling tepi plat, sudah cukup memegangnya; Uno dan L298N duduk di belakangnya atas standoff kuningan, dengan setiap header dibiarkan senang dicapai.
Kenapa pilihan bateri yang menentukan sama ada kereta ini bergerak?
L298N ialah jambatan darlington bipolar lama, bukan jambatan MOSFET. Arus motor melalui satu timbunan transistor yang sedang mengalirkan arus di bahagian atas dan satu lagi di bahagian bawah, dan transistor bipolar yang tepu masih menahan voltan yang degil merentasi dirinya sendiri, bukannya berkelakuan seperti suis tertutup. Datasheet L298 daripada ST menyenaraikan kedua-duanya sekali sebagai jumlah penurunan 1.8 V minimum dan 3.2 V maksimum pada 1 A, dan Rajah 1-nya memplot penurunan itu memanjat naik bersama arus β jadi kiraan di bawah, yang menggunakan angka lantai 1.8 V, adalah kes yang paling baik hati. Ia bahagian yang tidak pernah sampai ke motor dan bertukar menjadi haba dalam heatsink hitam itu.
Sekarang pemegang bateri kit itu sendiri. Empat sel AA baharu memberi 6 V; tolak jambatan tadi dan motor nampak lebih kurang 4.2 V, dan rintangan dalaman sel alkali menariknya lebih rendah sebaik sahaja dua motor bermula serentak. Motor TT dinilai 3β6 V pada arus tanpa beban berterusan 150 mA Β±10%, beberapa kali ganda itu apabila rodanya ditahan β jadi 4.2 V yang melendut di bawah beban akan merangkak atas jubin dan terus berhenti atas permaidani. Enam volt juga tidak mampu menjalankan Uno melalui VIN, yang mahukan 7β12 V.
Dua sel 18650 dalam pemegang 2 slot duduk kepala ke ekor, dan itu bermakna siri: 7.4 V nominal, 8.4 V bila penuh dicas. Tolak jambatan tadi dan motor nampak lebih kurang 5.6 V pada nominal, tepat di dalam julatnya, manakala PWM ke hadapan 200 daripada 255 dalam sketch itu mengekalkan pek yang baru dicas pada purata sekitar 5.2 V. Angka 7.4 V itu juga melepasi dropout regulator 5 V milik L298N sendiri, dan terminal skru +5V regulator itulah yang membekalkan kuasa kepada Uno β board dan sensor sekali masih jauh di bawah satu per sepuluh ampere.
Biarkan jumper kecil 5V-EN itu terpasang: ia menyambungkan regulator tadi kepada input +12V, dan hanya ditanggalkan apabila input melebihi lebih kurang 12 V. Dan jangan ganti dengan pemegang 18650 4 slot, yang tempatnya pada projek bervoltan lebih tinggi β pemegang berbilang slot juga menyirikan selnya, jadi empat sel bermakna 14.8β16.8 V, jauh melebihi apa yang mampu ditanggung motor 3β6 V walaupun selepas jambatan mengambil bahagiannya.

Bagaimana cara wayar L298N, sensor dan Uno?
L298N dihantar dengan dua cap jumper hitam pada ENA dan ENB, yang mengikat kedua-dua enable kekal HIGH β laju penuh, tiada kawalan kelajuan. Tanggalkan kedua-duanya dan sambungkan pin yang terdedah itu kepada output PWM Arduino; itulah yang membolehkan pemalar trim dalam sketch berfungsi. Panduan kawalan kelajuan L298N kami membawanya lebih jauh.
| Dari | Ke | Kenapa |
|---|---|---|
| Wayar merah pemegang bateri, melalui suis rocker kit | Terminal skru +12V L298N | Pek 7.4 V itu membekalkan kedua-dua jambatan dan regulator 5 V atas board |
| Wayar hitam pemegang bateri | GND L298N (skru tengah) | Laluan pulang bagi arus motor |
| Terminal skru +5V L298N | Pin 5V Uno | 5 V teratur dari modul itu menjalankan Uno dan sensor β tiada bateri kedua |
| GND L298N | GND Uno | Tanpa ground yang dikongsi, pin IN tiada rujukan dan kereta akan berkelakuan rawak |
| OUT1 / OUT2 L298N | Dua wayar motor kiri | Tukar tempat kalau roda itu berpusing songsang β tak perlu ubah kod |
| OUT3 / OUT4 L298N | Dua wayar motor kanan | Peraturan sama untuk sebelah lagi |
| IN1 / IN2 L298N | D9 / D8 Uno | Satu HIGH dan satu LOW menentukan arah motor kiri |
| IN3 / IN4 L298N | D7 / D6 Uno | Pasangan yang sama untuk motor kanan |
| ENA / ENB L298N (cap ditanggalkan) | D10 / D11 Uno | Kelajuan PWM bagi setiap sebelah, dan di situlah trim setiap motor duduk |
| Vcc HC-SR04 | Terminal skru +5V L298N, bersama wayar bekalan Uno | Uno cuma ada satu pin 5V dan wayar modul itu sudah pun berada di dalamnya; terminal skru boleh memegang kedua-duanya. Sensor ini menarik lebih kurang 15 mA |
| Gnd HC-SR04 | GND Uno (board ini ada tiga) | Pin ground Uno kedua, supaya sensor berkongsi rujukan Arduino |
| Trig_RX_SCL HC-SR04 | D3 Uno | Denyut 10 Β΅s yang melepaskan pancaran bunyi |
| Echo_TX_SDA HC-SR04 | D2 Uno | Kekal HIGH selama tempoh penerbangan bunyi itu |
Dua sel 18650 bersiri tiada sebarang fius antara ia dengan apa sahaja yang tersentuh: sel 2200 mAh yang sihat mencurah berpuluh ampere ke dalam litar pintas, cukup panas untuk mencairkan penebat dan melecurkan jari. Buang penebat pada setiap wayar pemegang setakat yang diperlukan oleh terminal skru sahaja, ketatkan skru pada tembaga telanjang dan bukan atas penebat, dan tampal pita pada setiap sambungan terdedah sebelum pek itu turun ke celah skru chassis. Duduk setiap sel mengikut kekutuban yang diacu pada slotnya β hujung bersentuhan spring sentiasa hujung negatif β dan pasangkan dua sel yang sama jenis dan sama tahap cas, supaya yang kuat tidak terpaksa menyeret yang lemah.
Bagaimana HC-SR04 menukar gema menjadi sentimeter?
HC-SR04 melepaskan pancaran lapan kitaran 40 kHz dari transduser “T”-nya apabila Trig ditahan HIGH selama 10 Β΅s, mendengar pada “R”, kemudian menahan Echo HIGH tepat selama bunyi itu berada dalam penerbangan. Bunyi bergerak lebih kurang 343 m/s dalam udara suhu bilik β 0.0343 cm setiap mikrosaat β dan perjalanannya ialah pergi dan balik, jadi sentimeter ialah mikrosaat Γ· 58. Panduan sensor kami mengupas bahagian itu secara berasingan.
Revisi yang kami hantar membawa silkscreen berbilang mod: Vcc / Trig_RX_SCL / Echo_TX_SDA / Gnd. Kalau anda sedang mencari pin yang bertanda ringkas “Trig”, itulah Trig_RX_SCL β nama-nama tambahan itu ialah mod alternatif yang tidak digunakan langsung dalam projek ini.
Sekarang perangkap yang membuatkan banyak kereta terkandas dalam bilik kosong. pulseIn() Arduino berputus asa selepas tempoh time out-nya lalu memulangkan 0, bukan satu ralat β wiring_pulse.c dalam core AVR memang memulangkan sifar, bukan satu tempoh, apabila tiada denyut yang sempat diukur. Bahagikan sifar dengan 58 dan anda dapat 0 cm, yang dibaca oleh sketch yang naif sebagai dinding yang melekat pada sensor, jadi kereta membrek tanpa sebab. Dinding bersudut, perabot lembut dan lantai lapang semuanya menyerakkan pancaran itu ke tempat lain. Anggap sifar sebagai julat maksimum: tiada gema bermakna tiada apa-apa di hadapan.
Apa kod sumber penuh untuk robot car elak halangan ini?
HC-SR04 dan L298N kedua-duanya tidak perlukan library. Pilih Arduino Uno, upload melalui kabel A-to-B, dan buka Serial Monitor pada 9600 baud untuk menonton bacaannya sambil anda memegang kereta itu. Ia dikompil menjadi 3,194 bait, lebih kurang 9% daripada flash Uno. Upload dengan pek bateri dimatikan, kemudian cabut USB sebelum menghidupkannya. Dua bekalan itu tidak boleh hidup serentak: +5V dari L298N tiba terus pada pin 5V Uno, melepasi regulator board itu sendiri dan juga fius yang menjaga port USB-nya, jadi tiada apa-apa yang berdiri di hadapan rel tersebut β cantumkan ia dengan 5 V laptop sekali dan mana-mana yang lebih tinggi bacaannya akan menolak arus masuk ke dalam satu lagi. Letakkan kereta atas sebuah buku untuk larian pertamanya, roda tergantung bebas, supaya nombor pin yang tersalah cuma berharga satu roda berpusing dan bukannya jatuh dari meja.
// Robot car 2WD elak halangan: Arduino Uno + L298N + HC-SR04.
// Tiada library diperlukan. Trig dan Echo cuma pin digital biasa, dan setiap
// motor makan dua pin arah plus satu pin enable PWM pada L298N.
// ---- Pin ----
const uint8_t TRIG_PIN = 3; // HC-SR04 Trig_RX_SCL
const uint8_t ECHO_PIN = 2; // HC-SR04 Echo_TX_SDA
const uint8_t ENA_PIN = 10; // laju motor kiri (PWM)
const uint8_t IN1_PIN = 9; // arah motor kiri
const uint8_t IN2_PIN = 8;
const uint8_t IN3_PIN = 7; // arah motor kanan
const uint8_t IN4_PIN = 6;
const uint8_t ENB_PIN = 11; // laju motor kanan (PWM)
// ---- Dua nombor yang anda tune ----
// Tiada dua motor TT yang serupa. Jalankan kereta lurus atas lantai rata dan
// turunkan sebelah yang mendahului, 5 count setiap kali, sampai ia jalan lurus.
const uint8_t SPEED_LEFT = 200;
const uint8_t SPEED_RIGHT = 200;
const uint8_t SPEED_TURN = 220; // pusing di tempat melawan dua-dua tayar, jadi perlu lebih
// ---- Keputusan ----
const uint16_t CLEAR_CM = 25; // lebih dekat daripada ini, kereta bertindak
const uint16_t NO_ECHO_CM = 400; // nilai bagi ping yang time out: lantai lapang
const unsigned long REVERSE_MS = 400;
const unsigned long PIVOT_MS = 350;
const unsigned long ECHO_TIMEOUT_US = 25000UL; // ~4.3 m pergi-balik, lepas itu berhenti tunggu
// Satu ping. Pulangkan sentimeter, atau NO_ECHO_CM bila tiada apa-apa balik.
uint16_t pingOnceCm() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10); // denyut trigger 10 us seperti dalam datasheet
digitalWrite(TRIG_PIN, LOW);
unsigned long echoUs = pulseIn(ECHO_PIN, HIGH, ECHO_TIMEOUT_US);
// pulseIn pulangkan 0 bila ia time out. Sifar BUKAN sifar sentimeter:
// tiada gema, jadi laluan di hadapan lapang, bukan dinding pada sensor.
if (echoUs == 0) {
return NO_ECHO_CM;
}
// Bunyi ambil lebih kurang 58 us untuk pergi 1 cm dan balik, pada suhu bilik.
return (uint16_t)(echoUs / 58);
}
// Median tiga ping: satu pantulan pelik tak lagi boleh memandu kereta ini.
uint16_t distanceCm() {
uint16_t a = pingOnceCm();
delay(30);
uint16_t b = pingOnceCm();
delay(30);
uint16_t c = pingOnceCm();
uint16_t swap;
if (a > b) { swap = a; a = b; b = swap; }
if (b > c) { swap = b; b = c; c = swap; }
if (a > b) { swap = a; a = b; b = swap; }
return b;
}
void driveLeft(bool forward, uint8_t speed) {
digitalWrite(IN1_PIN, forward ? HIGH : LOW);
digitalWrite(IN2_PIN, forward ? LOW : HIGH);
analogWrite(ENA_PIN, speed);
}
void driveRight(bool forward, uint8_t speed) {
digitalWrite(IN3_PIN, forward ? HIGH : LOW);
digitalWrite(IN4_PIN, forward ? LOW : HIGH);
analogWrite(ENB_PIN, speed);
}
void stopBoth() {
analogWrite(ENA_PIN, 0);
analogWrite(ENB_PIN, 0);
}
void goForward() { driveLeft(true, SPEED_LEFT); driveRight(true, SPEED_RIGHT); }
void goBackward() { driveLeft(false, SPEED_LEFT); driveRight(false, SPEED_RIGHT); }
void pivotLeft() { driveLeft(false, SPEED_TURN); driveRight(true, SPEED_TURN); }
void pivotRight() { driveLeft(true, SPEED_TURN); driveRight(false, SPEED_TURN); }
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(ENA_PIN, OUTPUT);
pinMode(IN1_PIN, OUTPUT);
pinMode(IN2_PIN, OUTPUT);
pinMode(IN3_PIN, OUTPUT);
pinMode(IN4_PIN, OUTPUT);
pinMode(ENB_PIN, OUTPUT);
stopBoth();
Serial.println(F("Obstacle car ready - put it down."));
delay(2000); // masa untuk letak kereta atas lantai dan lepaskan tangan
}
void loop() {
uint16_t cm = distanceCm();
Serial.println(cm);
if (cm > CLEAR_CM) {
goForward();
delay(40);
return;
}
// Ada sesuatu yang dekat. Berhenti dahulu sebelum undur: melempar gearbox
// yang sedang berbeban terus dari depan ke belakang ialah perkara paling
// berat yang boleh anda minta dari gear plastik dan dari H-bridge itu.
stopBoth();
delay(200);
goBackward();
delay(REVERSE_MS);
stopBoth();
delay(150);
// Tengok kiri kanan. Tanpa servo, kereta kena pusing badannya sendiri untuk
// menghalakan sensor: ukur selepas setiap pusingan, pilih sebelah lebih lapang.
pivotLeft();
delay(PIVOT_MS);
stopBoth();
delay(150);
uint16_t leftCm = distanceCm();
pivotRight();
delay(PIVOT_MS * 2);
stopBoth();
delay(150);
uint16_t rightCm = distanceCm();
if (leftCm > rightCm) {
pivotLeft(); // ayun balik melepasi tengah ke pandangan sebelah kiri
delay(PIVOT_MS * 2);
stopBoth();
}
delay(100); // duduk diam, kemudian gelung seterusnya memandu ke ruang yang dipilih
}
CLEAR_CM ialah 25 dan bukan 5 kerana kereta itu terus bergerak sepanjang ia berfikir. analogWrite() menyerahkan PWM-nya kepada satu timer perkakasan, jadi motor terus berjalan sepanjang distanceCm() berjalan, dan tiga ping berserta jeda pengendapannya memakan lebih kurang satu per sepuluh saat β lebih lama lagi apabila salah satu terpaksa time out. Kereta itu melalui beberapa sentimeter dalam tempoh tersebut dan beberapa sentimeter lagi selepasnya, kerana stopBoth() menarik pin enable ke LOW, yang melepaskan jambatan lalu membiarkan roda berputar bebas dan bukannya membrekkannya. Hujung dekat pun penting: HC-SR04 tidak mampu mengukur lebih dekat daripada lebih kurang 2 cm, dan halangan di dalam titik buta itu tidak memberi gema yang boleh diguna β yang dibaca oleh sketch ini, secara sengaja, sebagai lantai lapang. Bertindak pada 25 cm mengekalkan dinding itu dalam julat yang sensor masih jujur.
Kenapa ia membelok dan bukannya bergerak lurus?
Dua motor TT tidak pernah serupa: gear train yang diacu itu berbeza gesekannya dan berusnya pula duduk masuk secara berbeza, jadi satu sebelah berpusing lebih laju pada nilai PWM yang sama. Sebab itulah SPEED_LEFT dan SPEED_RIGHT ialah dua pemalar yang berasingan. Uji atas lantai rata dan perhatikan arah ia terpesong: kereta terpesong menjauhi sebelahnya yang lebih laju, jadi yang membelok ke kiri sebenarnya ada motor kanan yang lebih pantas. Turunkan pemalar sebelah itu sebanyak lima count, upload semula, dan ulang sampai ia memegang garisan lurus sepanjang dua tiga meter.
Kekalkan kedua-dua nombor itu agak tinggi. Di bawah lebih kurang 100, purata voltan selepas penurunan jambatan tadi tidak lagi mampu mengatasi geseran statik gearbox, jadi roda cuma berdengung tanpa berpusing β nilai PWM yang rendah bukan motor yang perlahan, itu motor yang terkandas.
Bentuk rutin itu sendiri sama pentingnya dengan nombornya: memandang ke kiri dan ke kanan sebelum membelok itulah yang mengalahkan perangkap sudut, di mana kereta yang sentiasa membelok ke arah yang sama akan terpantul-pantul antara dua dinding. Robot line follower atas chassis yang sama menyelesaikan masalah yang bertentangan.

Apa yang boleh ditambah selepas ia berjaya bergerak?
Servo SG90 ialah naik taraf yang paling jelas: didukung atas acinya, HC-SR04 boleh memandang kiri dan kanan dengan sendiri tanpa memusingkan badan kereta β lebih pantas, dan jauh kurang berkemungkinan tersangkut pada kaki meja di tengah-tengah pusingan; dalam kod, ia menukar dua pusingan tadi kepada dua kedudukan servo dan mengekalkan perbandingan yang sama, teknik yang ditunjukkan dalam projek tong sampah automatik kami. Jangkakan anda perlu mereka sendiri dudukannya, kerana servo ini dihantar bogel tanpa horn atau skru β sekeping akrilik lebihan dan pita penebat sudah memadai.
Chassis 4WD menjalankan sketch ini tanpa sebarang perubahan: sambungkan dua motor setiap sebelah secara selari ke dalam satu saluran L298N, yang membebankan saluran itu hanya sebahagian kecil daripada nilai 2 A-nya semasa memandu, dan yang menambah cengkaman atas karpet. Terkandas ialah pengecualiannya β satu motor TT yang tersekat menarik lebih kurang 1.5 A, jadi sepasang yang tersepit sudah melebihi nilai saluran itu; lepaskan kereta itu, jangan biar ia terus menolak. Cuma ia kit yang berlainan β tiada caster, suis atau pemegang AA. Pengecas TP4056 kemudiannya melengkapkan projek ini; baca panduan mengecas 18650 kami dahulu.
Kesilapan biasa yang kami lihat daripada pelanggan sebenar
Semuanya sudah berwayar tetapi tiada apa-apa bergerak. Periksa cap ENA dan ENB dahulu, kemudian ground: cap yang sudah ditanggalkan sedangkan pin enable itu tidak dipandu akan meninggalkan kedua-dua saluran dimatikan, dan GND L298N yang tidak pernah sampai ke GND Uno akan membiarkan pin IN terapung terhadap negatif bateri yang Arduino langsung tidak nampak.
Satu roda berpusing ke arah yang salah. Tiada apa yang rosak β arah motor DC hanyalah soal mana antara dua wayarnya yang positif. Tukar tempat pasangan wayar motor itu di OUT1/OUT2 atau OUT3/OUT4 dan biarkan kod itu seperti sedia ada.
Ia jalan atas USB tetapi mati atas bateri. Biasanya sel yang sudah kong, sel yang terbalik dalam slotnya, atau pek bateri yang diwayar ke Uno dan bukannya ke terminal +12V L298N β ukur pek itu dahulu.
Ia reset sendiri setiap kali membelok. Pusingan di tempat ialah arus paling berat yang pernah ditarik kereta ini, dan Uno pula hidup dari regulator 5 V kecil pada L298N, yang perlukan lebih kurang dua volt lebih tinggi pada inputnya berbanding apa yang dikeluarkannya. Pek 7.4 V yang dicas penuh ada ruang itu berkali ganda; sel yang sudah letih, separuh cas atau kutipan terpakai dengan rintangan dalaman tinggi tidak ada, dan pek AA 6 V dalam kit itu pula sudah bermula di bawah kehendak regulator sebelum sempat melendut lagi. Simptomnya memang tidak boleh disalah baca: kereta itu membeku dua saat kemudian memulakan rutinnya semula, kerana itulah delay(2000) dalam setup() yang berjalan buat kali kedua.
Bacaan melompat-lompat sebaik sahaja motor berjalan. Percikan berus di dalam motor DC ialah sebuah pemancar radio kecil yang ada wayar terpacak padanya, jadi pintal pasangan wayar setiap motor bersama dan halakan laluannya jauh dari empat wayar sensor itu. Kapasitor seramik 0.1 Β΅F yang disolder merentasi dua terminal setiap motor ialah penawar standard pada kit jenis ini.
FAQ
Kenapa kereta ini berhenti walaupun tiada apa-apa di hadapannya?
Ping yang time out memulangkan 0 daripada pulseIn(), dan kod yang tidak menyemaknya menukar itu menjadi 0 cm. Anggap sifar sebagai julat maksimum.
Bateri apa yang patut saya guna untuk robot car dengan L298N?
Dua sel 18650 bersiri, bukan bateri 9 V blok: rintangan dalaman bateri penggera asap terlalu tinggi, jadi dua motor yang bermula serentak akan meruntuhkan voltannya lalu me-reset Arduino.
Kenapa sensor terlepas dinding yang sepatutnya nampak?
Pancaran ultrasonik memantul seperti cahaya pada cermin, jadi permukaan bersudut menghantar bunyi itu ke tepi dan bukannya balik, manakala langsir atau sofa menyerapnya. Halakan ia rata dan terus ke hadapan.
Boleh saya guna ESP32 dan bukan Uno?
Boleh, dengan satu amaran: Echo naik ke 5 V sedangkan pin ESP32 ialah 3.3 V, jadi talian itu perlukan pembahagi dua perintang. Pin IN dan EN pula terima logik 3.3 V tanpa perubahan.
Kemas kini terakhir Ogos 2026. Tersangkut? Chat dengan kami di WhatsApp.



2WD 4WD Smart Car Chassis Single Layer Acrylic Arduino Smart Car Chassis Kit With Motor - 2WD CAR KIT
L298N Motor Driver Module Arduino Compatible Dual H Bridge Dual DC Motor Control Arduino Robotic Car
Ultrasonic Sensor HC-SR04 Ultrasonic Range Detection Distance Finder Obstacle avoidance For Arduino Application
Arduino Compatible UNO R3 FT232 Development Board Arduino Compatible CH340 Alternative
Data Cable Type-A Type-C MicroUSB Type-B 0.5m 1m 30cm 0.3m 100cm Data Transfer Upload Code - TYPE-A TO TYPE-B (1.0M)
18650 Battery Holder 1/2/3/4 Slot 3.7V Battery Cell Housing Battery Case Battery Casing - 18650 BATTERY HOLDER (2)
3.7V 18650 Battery Rechargeable Li-Ion Battery 1200mAh 2200mAh 3200mAh Flat Top - 18650 Li-Ion Battery (2200mAh)
40pcs Dupont Wire 10cm 20cm 30cm for Breadboard DIY Experiment Jumper Wire Breadboard wire - DUPONT WIRE M-F 20CM
40pcs Dupont Wire 10cm 20cm 30cm for Breadboard DIY Experiment Jumper Wire Breadboard wire - DUPONT WIRE M-M 20CM
TP4056 18650 Battery Charger Module Lithium Ion Battery Li-ion Battery Charger Type C Micro USB - TP4056 CHARGER (TYPEC)
Soldering Service for Circuit Boards & Electronics - 5 Pins Soldering Service
Electrical Insulation Tape 18mm x 10m PVC Color Coded Marking Red White Blue Yellow Green Black - ELECTRICAL TAPE (BLACK)