Inhoudsopgave:

Obstakel vermijden van robotauto - Ajarnpa
Obstakel vermijden van robotauto - Ajarnpa

Video: Obstakel vermijden van robotauto - Ajarnpa

Video: Obstakel vermijden van robotauto - Ajarnpa
Video: A robot with a mission 2024, November
Anonim
Obstakel vermijden van robotauto
Obstakel vermijden van robotauto
Obstakel vermijden van robotauto
Obstakel vermijden van robotauto

Hoe een obstakel te bouwen dat een robot ontwijkt?

Stap 1: Zwarte doos

Zwarte Doos
Zwarte Doos

de eerste stap gebruikte ik een zwarte doos als basis voor mijn robot.

Stap 2: Arduino

Arduino
Arduino

De Arduino is het brein van het hele systeem en orkestreert onze motoren

Stap 3: De Arduino aansluiten op Blackbox

De Arduino aan Blackbox koppelen
De Arduino aan Blackbox koppelen

Ik heb de arduino aan de blackbox bevestigd met behulp van hete lijm

Stap 4: Ultrasone sensor

Ultrasoon sensor
Ultrasoon sensor

Om een robot te maken die uit zichzelf kan bewegen, hebben we een soort input nodig, een sensor die past bij ons doel. Een ultrasone sensor is een instrument dat de afstand tot een object meet met behulp van ultrasone geluidsgolven. Een ultrasone sensor gebruikt een transducer om ultrasone pulsen te verzenden en te ontvangen die informatie over de nabijheid van een object doorgeven

Stap 5: Breadboard-verbinding van sensor met Arduino

Breadboard-verbinding van sensor met Arduino
Breadboard-verbinding van sensor met Arduino
Breadboard-verbinding van sensor met Arduino
Breadboard-verbinding van sensor met Arduino

Ik gebruikte draden om de verbinding tussen het breadboard en de arduino te mannelijk.

Let op dat uw ping-sensor een andere pinlay-out kan hebben, maar dat deze een spanningspen, grondpen, trig-pen en een echo-pen moet hebben.

Stap 6: Motorschild

Motorschild
Motorschild

Arduino-boards kunnen zelf geen gelijkstroommotoren aansturen, omdat de stromen die ze genereren te laag zijn. Om dit probleem op te lossen gebruiken we motorschilden. Het motorschild heeft 2 kanalen, waardoor twee gelijkstroommotoren kunnen worden bestuurd, stappenmotor. … Door deze pinnen te adresseren, kunt u een motorkanaal selecteren om te starten, de motorrichting (polariteit) specificeren, het motortoerental (PWM) instellen, de motor stoppen en starten en de stroomopname van elk kanaal controleren

Stap 7: Motor Shield aansluiten op Arduino

Motor Shield aansluiten op Arduino
Motor Shield aansluiten op Arduino

Bevestig eenvoudig het motorschild aan de Arduino met de sensordraden erin geknarst

Stap 8: De 4 motoren en batterijen aansluiten op Shield

De 4 motoren en batterijen aansluiten op Shield
De 4 motoren en batterijen aansluiten op Shield

Elk Motor Shield heeft (minimaal) twee kanalen, één voor de motoren en één voor een stroombron, sluit ze ten opzichte van elkaar aan

Stap 9: Programmeer de robot

voer deze code uit

#include #include

NewPing-sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotormotor1(1, MOTOR12_1KHZ); AF_DCMotormotor2(2, MOTOR12_1KHZ); AF_DCMotormotor3 (3, MOTOR34_1KHZ); AF_DCMotormotor4(4, MOTOR34_1KHZ); Servo-mijnservo;

#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 afstand = 80; int speedSet = 0;

ongeldige setup() {

mijnservo.attach(10); mijnservo.write(115); vertraging (2000); afstand = readPing(); vertraging (100); afstand = readPing(); vertraging (100); afstand = readPing(); vertraging (100); afstand = readPing(); vertraging (100); }

void loop() {int distanceR = 0; int afstandL = 0; vertraging (40); if(afstand<=15) { moveStop(); vertraging (50); moveBackward(); vertraging (150); verplaatsStop(); vertraging (100); afstandR = lookRight(); vertraging (100); afstandL = kijk Links(); vertraging (100);

if(distanceR>=distanceL) { turnRight(); verplaatsStop(); }anders { draaiLinks(); verplaatsStop(); } }else { moveForward(); } afstand = readPing(); }

int lookRight() { myservo.write(50); vertraging (250); int afstand = readPing(); vertraging (50); mijnservo.write(100); retour afstand; }

int lookLeft() { mijnservo.write(120); vertraging (300); int afstand = readPing(); vertraging (100); mijnservo.write(115); retour afstand; vertraging (100); }

int readPing() {vertraging(70); int cm = sonar.ping_cm(); if(cm==0) { cm = 200; } retour cm; }

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

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

void moveBackward() { goesForward=false; motor1.run (ACHTERUIT); motor2.run (ACHTERUIT); motor3.run(ACHTERUIT); motor4.run (ACHTERUIT); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { motor1.setSpeed(speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); vertraging (5); } void turnLeft() { motor1.run (ACHTERWAARTS); motor2.run (ACHTERUIT); motor3.run(VOORUIT); motor4.run(VOORUIT); vertraging (500); motor1.run(VOORUIT); motor2.run(VOORUIT); motor3.run(VOORUIT); motor4.run(VOORUIT); }

void turnLeft() { motor1.run (ACHTERWAARTS); motor2.run (ACHTERUIT); motor3.run(VOORUIT); motor4.run(VOORUIT); vertraging (500); motor1.run(VOORUIT); motor2.run(VOORUIT); motor3.run(VOORUIT); motor4.run(VOORUIT); }

Aanbevolen: