Obsah:

Robotickému autu sa vyhýbajte prekážkam: 9 krokov
Robotickému autu sa vyhýbajte prekážkam: 9 krokov

Video: Robotickému autu sa vyhýbajte prekážkam: 9 krokov

Video: Robotickému autu sa vyhýbajte prekážkam: 9 krokov
Video: Влад и Ники Супергерои ПОЛНАЯ ИГРА 2024, November
Anonim
Robotickému autu sa vyhýbajú prekážky
Robotickému autu sa vyhýbajú prekážky
Robotickému autu sa vyhýbajú prekážky
Robotickému autu sa vyhýbajú prekážky

Ako postaviť robot, ktorý sa vyhýba prekážke

Krok 1: Čierna skrinka

Čierna skrinka
Čierna skrinka

v prvom kroku som ako základ svojho robota použil čiernu skrinku.

Krok 2: Arduino

Arduino
Arduino

Arduino je mozgom celého systému a organizuje naše motory

Krok 3: Pripojenie Arduina k Blackboxu

Pripojenie Arduina k Blackboxu
Pripojenie Arduina k Blackboxu

Arduino som pripevnil na blackbox pomocou horúceho lepidla

Krok 4: Ultrazvukový senzor

Ultrazvukový senzor
Ultrazvukový senzor

Na to, aby sme robota, ktorý sa dokáže sám pohybovať, potrebujeme nejaký vstup, senzor, ktorý vyhovuje nášmu cieľu. Ultrazvukový senzor je nástroj, ktorý meria vzdialenosť k objektu pomocou ultrazvukových zvukových vĺn. Ultrazvukový senzor používa prevodník na odosielanie a príjem ultrazvukových impulzov, ktoré prenášajú späť informácie o blízkosti objektu

Krok 5: Breadboard pripojenie senzora k Arduinu

Pripojenie senzora k Arduinu na Breadboarde
Pripojenie senzora k Arduinu na Breadboarde
Pripojenie senzora k Arduinu na Breadboarde
Pripojenie senzora k Arduinu na Breadboarde

Na prepojenie medzi doskou a arduinom som použil drôty.

Dávajte pozor, aby váš snímač ping mal iné rozloženie pinov, ale mal by mať napäťový pin, uzemňovací kolík, spúšťací kolík a echo kolík.

Krok 6: Motorový štít

Motorový štít
Motorový štít

Dosky Arduino nedokážu ovládať jednosmerné motory samy, pretože prúdy, ktoré generujú, sú príliš nízke. Na vyriešenie tohto problému používame štíty motora. Štít motora má 2 kanály, čo umožňuje ovládanie dvoch jednosmerných motorov alebo 1 krokový motor. … Adresovaním týchto pinov môžete vybrať kanál motora, ktorý chcete spustiť, určiť smer motora (polaritu), nastaviť otáčky motora (PWM), zastaviť a naštartovať motor a monitorovať prúdovú absorpciu každého kanála

Krok 7: Pripojenie štítu motora k Arduinu

Pripojenie štítu motora k Arduinu
Pripojenie štítu motora k Arduinu

Jednoducho pripevnite štít motora na arduino pomocou zvlnených vodičov snímača

Krok 8: Pripojenie 4 motorov a batérií k štítu

Pripojenie 4 motorov a batérií k štítu
Pripojenie 4 motorov a batérií k štítu

Každý štít motora má (najmenej) dva kanály, jeden pre motory a jeden pre zdroj energie, prepojte ich navzájom

Krok 9: Naprogramujte robota

spustite tento kód

#include #include

NewPing sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DC Motor motora1 (1, MOTOR12_1KHZ); AF_DC Motor motora2 (2, MOTOR12_1KHZ); AF_DC Motor motora3 (3, MOTOR34_1KHZ); AF_DC Motor motora4 (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; vnútorná vzdialenosť = 80; int speedSet = 0;

neplatné nastavenie () {

myservo.attach (10); myservo.write (115); oneskorenie (2000); vzdialenosť = readPing (); oneskorenie (100); vzdialenosť = readPing (); oneskorenie (100); vzdialenosť = readPing (); oneskorenie (100); vzdialenosť = readPing (); oneskorenie (100); }

prázdna slučka () {int vzdialenosťR = 0; int vzdialenosťL = 0; oneskorenie (40); if (vzdialenosť <= 15) {moveStop (); oneskorenie (50); moveBackward (); oneskorenie (150); moveStop (); oneskorenie (100); vzdialenosťR = lookRight (); oneskorenie (100); vzdialenosťL = lookLeft (); oneskorenie (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } vzdialenosť = readPing (); }

int lookRight () {myservo.write (50); oneskorenie (250); int vzdialenosť = readPing (); oneskorenie (50); myservo.write (100); vzdialenosť návratu; }

int lookLeft () {myservo.write (120); oneskorenie (300); int vzdialenosť = readPing (); oneskorenie (100); myservo.write (115); vzdialenosť návratu; oneskorenie (100); }

int readPing () {oneskorenie (70); int cm = sonar.ping_cm (); ak (cm == 0) {cm = 200; } vrátiť cm; }

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

if (! goesForward) {goesForward = true; motor1.run (Vpred); motor2.run (Vpred); motor3.run (Vpred); motor4.run (Vpred); pre (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); oneskorenie (5); }}}

void moveBackward () {goesForward = false; motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (BACKWARD); motor4.run (BACKWARD); pre (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); oneskorenie (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (Vpred); motor4.run (Vpred); oneskorenie (500); motor1.run (Vpred); motor2.run (Vpred); motor3.run (Vpred); motor4.run (Vpred); }

void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (Vpred); motor4.run (Vpred); oneskorenie (500); motor1.run (Vpred); motor2.run (Vpred); motor3.run (Vpred); motor4.run (Vpred); }

Odporúča: