Turinys:

Kliūtis išvengti robotų automobilio: 9 žingsniai
Kliūtis išvengti robotų automobilio: 9 žingsniai

Video: Kliūtis išvengti robotų automobilio: 9 žingsniai

Video: Kliūtis išvengti robotų automobilio: 9 žingsniai
Video: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, Liepa
Anonim
Kliūtis vengti robotų automobilio
Kliūtis vengti robotų automobilio
Kliūtis vengti robotų automobilio
Kliūtis vengti robotų automobilio

Kaip sukurti kliūtį išvengiant roboto

1 žingsnis: juoda dėžutė

Juodoji dėžutė
Juodoji dėžutė

Pirmajame žingsnyje aš naudojau juodą dėžutę kaip savo roboto pagrindą.

2 žingsnis: „Arduino“

Arduino
Arduino

„Arduino“yra visos sistemos smegenys ir organizuoja mūsų variklius

3 žingsnis: „Arduino“prijungimas prie „Blackbox“

„Arduino“prijungimas prie „Blackbox“
„Arduino“prijungimas prie „Blackbox“

Arduino pritvirtinau prie juodosios dėžės karštais klijais

4 žingsnis: ultragarso jutiklis

Ultragarsinis jutiklis
Ultragarsinis jutiklis

Norint sukurti robotą, kuris galėtų judėti pats, mums reikia tam tikro įvesties, jutiklio, atitinkančio mūsų tikslą. Ultragarsinis jutiklis yra prietaisas, matuojantis atstumą iki objekto, naudojant ultragarso garso bangas. Ultragarso jutiklis naudoja keitiklį siųsti ir gauti ultragarsinius impulsus, kurie perduoda informaciją apie objekto artumą

5 žingsnis: „Breadboard“jutiklio prijungimas prie „Arduino“

Duonos lentos jutiklio prijungimas prie „Arduino“
Duonos lentos jutiklio prijungimas prie „Arduino“
Duonos lentos jutiklio prijungimas prie „Arduino“
Duonos lentos jutiklio prijungimas prie „Arduino“

Aš naudoju laidus, kad sujungčiau duonos lentą ir „arduino“.

Atkreipkite dėmesį, kad jūsų „ping“jutiklis gali turėti skirtingą kaiščio išdėstymą, tačiau jis turėtų turėti įtampos kaištį, įžeminimo kaištį, trigalį ir aido kaištį.

6 žingsnis: variklio skydas

Variklio skydas
Variklio skydas

„Arduino“plokštės negali savarankiškai valdyti nuolatinės srovės variklių, nes jų generuojamos srovės yra per mažos. Norėdami išspręsti šią problemą, naudojame variklio skydus. Variklio skydas turi 2 kanalus, kurie leidžia valdyti du nuolatinės srovės variklius arba 1 žingsninis variklis. … Spręsdami šiuos kaiščius, galite pasirinkti variklio kanalą, kurį norite inicijuoti, nurodyti variklio kryptį (poliškumą), nustatyti variklio greitį (PWM), sustabdyti ir užvesti variklį ir stebėti kiekvieno kanalo srovės absorbciją

7 žingsnis: „Motor Shield“prijungimas prie „Arduino“

„Motor Shield“prijungimas prie „Arduino“
„Motor Shield“prijungimas prie „Arduino“

Tiesiog pritvirtinkite variklio skydą prie arduino, sulenkę jutiklio laidus

8 veiksmas: 4 variklių ir akumuliatorių prijungimas prie skydo

4 variklių ir akumuliatorių prijungimas prie skydo
4 variklių ir akumuliatorių prijungimas prie skydo

Kiekvienas variklio skydas turi (bent) du kanalus, vieną varikliams ir vieną maitinimo šaltiniui. Prijunkite juos vienas kito atžvilgiu

9 veiksmas: užprogramuokite robotą

paleiskite šį kodą

#įtraukti #įtraukti

„NewPing“sonaras (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotorinis variklis1 (1, MOTOR12_1KHZ); AF_DCMotorinis variklis2 (2, MOTOR12_1KHZ); AF_DCMotorinis variklis3 (3, MOTOR34_1KHZ); AF_DCMotorinis variklis4 (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

loginis einaForward = false; int atstumas = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); vėlavimas (2000 m.); atstumas = skaitytiPing (); vėlavimas (100); atstumas = skaitytiPing (); vėlavimas (100); atstumas = skaitytiPing (); vėlavimas (100); atstumas = skaitytiPing (); vėlavimas (100); }

tuštumos kilpa () {int atstumasR = 0; int atstumasL = 0; vėlavimas (40); if (atstumas <= 15) {moveStop (); vėlavimas (50); Judėk atgal(); vėlavimas (150); moveStop (); vėlavimas (100); atstumasR = lookRight (); vėlavimas (100); atstumasL = lookLeft (); vėlavimas (100);

if (distanceR> = atstumasL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } atstumas = skaitytiPing (); }

int lookRight () {myservo.write (50); vėlavimas (250); int atstumas = skaitytiPing (); vėlavimas (50); myservo.write (100); grįžimo atstumas; }

int lookLeft () {myservo.write (120); vėlavimas (300); int atstumas = skaitytiPing (); vėlavimas (100); myservo.write (115); grįžimo atstumas; vėlavimas (100); }

int readPing () {delay (70); int cm = sonar.ping_cm (); jei (cm == 0) {cm = 200; } grįžti cm; }

void moveStop () {motor1.run (RELEASE); motor2.run (RELEASE); motor3.run (RELEASE); motor4.run (RELEASE); } void moveForward () {

jei (! eina pirmyn) {eina pirmyn = tiesa; motor1.run (į priekį); motor2.run (į priekį); motor3.run (į priekį); motor4.run (į priekį); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); vėlavimas (5); }}}

void moveBackward () {goForward = false; motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (BACKWARD); motor4.run (BACKWARD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); vėlavimas (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (į priekį); motor4.run (į priekį); vėlavimas (500); motor1.run (į priekį); motor2.run (į priekį); motor3.run (į priekį); motor4.run (į priekį); }

void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (į priekį); motor4.run (į priekį); vėlavimas (500); motor1.run (į priekį); motor2.run (į priekį); motor3.run (į priekį); motor4.run (į priekį); }

Rekomenduojamas: