Talaan ng mga Nilalaman:
- Hakbang 1: Itim na Kahon
- Hakbang 2: Arduino
- Hakbang 3: Ang paglakip ng Arduino sa Blackbox
- Hakbang 4: Ultrasonic Sensor
- Hakbang 5: Koneksyon sa Breadboard ng Sensor sa Arduino
- Hakbang 6: Motor Shield
- Hakbang 7: Pagkonekta sa Motor Shield sa Arduino
- Hakbang 8: Pagkonekta sa 4 Mga Motors at Baterya sa Shield
- Hakbang 9: I-program ang Robot
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Paano Bumuo ng Isang Obstacle na Pag-iwas sa Robot
Hakbang 1: Itim na Kahon
ang unang hakbang na ginamit ko ang isang itim na kahon bilang batayan para sa aking robot.
Hakbang 2: Arduino
Ang Arduino ay utak ng buong system at binubuo ang aming mga motor
Hakbang 3: Ang paglakip ng Arduino sa Blackbox
Inilakip ko ang arduino sa blackbox gamit ang mainit na pandikit
Hakbang 4: Ultrasonic Sensor
Upang makagawa ng isang robot na maaaring ilipat sa pamamagitan ng sarili nitong kailangan namin ng isang uri ng isang input, isang sensor na umaangkop sa aming layunin. Ang isang ultrasonic sensor ay isang instrumento na sumusukat sa distansya sa isang bagay gamit ang mga ultrasonic sound wave. Ang isang ultrasonic sensor ay gumagamit ng isang transducer upang magpadala at tumanggap ng mga ultrasonic pulses na nagpapasa ng pabalik na impormasyon tungkol sa kalapitan ng isang bagay
Hakbang 5: Koneksyon sa Breadboard ng Sensor sa Arduino
Gumamit ako ng mga wire sa lalaki ang koneksyon sa pagitan ng breadboard at arduino.
Bigyang pansin na ang iyong sensor ng ping ay maaaring may iba't ibang layout ng pin ngunit dapat itong magkaroon ng boltahe na pin, ground pin, trig pin at isang echo pin.
Hakbang 6: Motor Shield
Ang mga board ng Arduino ay hindi maaaring makontrol ang mga dc motor sa pamamagitan ng kanilang sarili, sapagkat ang mga alon na binubuo nila ay masyadong mababa. Upang malutas ang problemang ito ginagamit namin ang mga kalasag sa motor. Ang motor na kalasag ay mayroong 2 mga channel, na nagbibigay-daan sa kontrol ng dalawang DC motor, o 1 stepper motor. … Sa pamamagitan ng pagtugon sa mga pin na ito maaari kang pumili ng isang motor channel upang simulan, tukuyin ang direksyon ng motor (polarity), itakda ang bilis ng motor (PWM), itigil at simulan ang motor, at subaybayan ang kasalukuyang pagsipsip ng bawat channel
Hakbang 7: Pagkonekta sa Motor Shield sa Arduino
Ikabit lamang ang kalasag ng motor sa arduino na may mga sensor ng wire na naka-cr in
Hakbang 8: Pagkonekta sa 4 Mga Motors at Baterya sa Shield
Ang bawat Motor Shield ay mayroong (hindi bababa sa) dalawang mga channel, isa para sa mga motor, at isa para sa isang mapagkukunan ng kuryente, Ikonekta ang mga ito na may paggalang sa bawat isa
Hakbang 9: I-program ang Robot
patakbuhin ang code na ito
# isama ang # isama
NewPing sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
AF_DCMotor motor1 (1, MOTOR12_1KHZ); AF_DCMotor motor2 (2, MOTOR12_1KHZ); AF_DCMotor motor3 (3, MOTOR34_1KHZ); AF_DCMotor motor4 (4, MOTOR34_1KHZ); Servo MyServo;
#define TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10
boolean goesForward = false; int distansya = 80; int speedSet = 0;
walang bisa ang pag-setup () {
myservo.attach (10); myservo.write (115); pagkaantala (2000); distansya = readPing (); pagkaantala (100); distansya = readPing (); pagkaantala (100); distansya = readPing (); pagkaantala (100); distansya = readPing (); pagkaantala (100); }
void loop () {int distanceR = 0; int distansyaL = 0; pagkaantala (40); kung (distansya <= 15) {moveStop (); antala (50); ilipatBackward (); pagkaantala (150); ilipatStop (); pagkaantala (100); distanceR = lookRight (); pagkaantala (100); distansyaL = lookLeft (); pagkaantala (100);
kung (distansyaR> = distansyaL) {turnRight (); ilipatStop (); } iba pa {turnLeft (); ilipatStop (); }} iba pa {moveForward (); } distansya = readPing (); }
int lookRight () {myservo.write (50); pagkaantala (250); int distansya = readPing (); antala (50); myservo.write (100); distansya ng pagbabalik; }
int lookLeft () {myservo.write (120); pagkaantala (300); int distansya = readPing (); pagkaantala (100); myservo.write (115); distansya ng pagbabalik; pagkaantala (100); }
int readPing () {pagkaantala (70); int cm = sonar.ping_cm (); kung (cm == 0) {cm = 200; } bumalik cm; }
void moveStop () {motor1.run (RELEASE); motor2.run (RELEASE); motor3.run (RELEASE); motor4.run (RELEASE); } walang bisa moveForward () {
kung (! goesForward) {goesForward = true; motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); para sa (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); antala (5); }}}
void moveBackward () {goesForward = false; motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (BACKWARD); motor4.run (BACKWARD); para sa (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); antala (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (FORWARD); motor4.run (FORWARD); pagkaantala (500); motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); }
void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (FORWARD); motor4.run (FORWARD); pagkaantala (500); motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); }