Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Kuidas ehitada takistusi robotit vältides
Samm: must kast
Esimese sammuna kasutasin oma roboti aluseks musta kasti.
Samm: Arduino
Arduino on kogu süsteemi aju ja korraldab meie mootoreid
Samm: Arduino kinnitamine Blackboxi
Kinnitasin arduino kuuma liimi abil musta kasti külge
Samm: ultraheli andur
Selleks, et teha robot, mis suudab ise liikuda, vajame mingisugust sisendit, andurit, mis sobib meie eesmärgiga. Ultraheliandur on seade, mis mõõdab kaugust objektini ultrahelilainete abil. Ultraheliandur kasutab andurit ultraheliimpulsside saatmiseks ja vastuvõtmiseks, mis edastavad teavet objekti läheduse kohta
Samm: anduri ühendamine leivalauaga Arduinoga
Ma kasutasin juhtmeid leivalaua ja arduino vahelise ühenduse loomiseks.
Pöörake tähelepanu sellele, et teie ping -anduril võib olla erinev tihvtide paigutus, kuid sellel peaks olema pinge-, maandus-, käivitus- ja kajapolt.
6. samm: mootorikilp
Arduino lauad ei saa alalisvoolumootoreid ise juhtida, kuna nende tekitatavad voolud on liiga madalad. Selle probleemi lahendamiseks kasutame mootorikilpe. Mootori kilbil on 2 kanalit, mis võimaldab juhtida kahte alalisvoolumootorit või 1 samm -mootor. … Nende tihvtide abil saate valida käivitatava mootorikanali, määrata mootori suuna (polaarsuse), määrata mootori kiiruse (PWM), peatada ja käivitada mootori ning jälgida iga kanali voolu neeldumist
Samm: ühendage mootorikilp Arduinoga
Lihtsalt kinnitage mootorikilp arduino külge, anduri juhtmed on krigistatud
Samm: 4 mootori ja aku ühendamine kilbiga
Igal mootorikilbil on (vähemalt) kaks kanalit, üks mootoritele ja teine toiteallikale, ühendage need üksteise suhtes
Samm: programmeerige robot
käivitage see kood
#kaasama #kaasama
NewPingi sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
AF_DCMootorimootor1 (1, MOTOR12_1KHZ); AF_DCMootorimootor2 (2, MOTOR12_1KHZ); AF_DCMootorimootor3 (3, MOTOR34_1KHZ); AF_DCMootorimootor4 (4, MOTOR34_1KHZ); Servo myservo;
#defineeri TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10
tõeväärtus läheb Edasi = vale; int kaugus = 80; int speedSet = 0;
tühine seadistus () {
myservo.attach (10); myservo.write (115); viivitus (2000); kaugus = readPing (); viivitus (100); kaugus = readPing (); viivitus (100); kaugus = readPing (); viivitus (100); kaugus = readPing (); viivitus (100); }
void loop () {int kaugusR = 0; int kaugusL = 0; viivitus (40); if (kaugus <= 15) {moveStop (); viivitus (50); moveBackward (); viivitus (150); moveStop (); viivitus (100); kaugusR = lookRight (); viivitus (100); kaugusL = lookLeft (); viivitus (100);
if (kaugusR> = kaugusL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } kaugus = readPing (); }
int lookRight () {myservo.write (50); viivitus (250); int kaugus = readPing (); viivitus (50); myservo.write (100); tagasisõidu kaugus; }
int lookLeft () {myservo.write (120); viivitus (300); int kaugus = readPing (); viivitus (100); myservo.write (115); tagasisõidu kaugus; viivitus (100); }
int readPing () {delay (70); int cm = sonar.ping_cm (); kui (cm == 0) {cm = 200; } tagasitulek cm; }
void moveStop () {motor1.run (RELEASE); motor2.run (RELEASE); motor3.run (RELEASE); motor4.run (RELEASE); } void moveForward () {
kui (! läheb Edasi) {läheb Edasi = tõsi; mootor1.jooks (EDASI); motor2.run (EDASI); motor3.run (EDASI); motor4.run (EDASI); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); viivitus (5); }}}
void moveBackward () {goForward = false; motor1.run (TAGASI); motor2.run (TAGASI); motor3.run (TAGASI); motor4.run (TAGASI); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); viivitus (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (TAGASI); motor3.run (EDASI); motor4.run (EDASI); viivitus (500); mootor1.jooks (EDASI); motor2.run (EDASI); motor3.run (EDASI); motor4.run (EDASI); }
void turnLeft () {motor1.run (BACKWARD); motor2.run (TAGASI); motor3.run (EDASI); motor4.run (EDASI); viivitus (500); mootor1.jooks (EDASI); motor2.run (EDASI); motor3.run (EDASI); motor4.run (EDASI); }