INHOUDSOPGAWE:

Hindernis om robotmotors te vermy: 9 stappe
Hindernis om robotmotors te vermy: 9 stappe

Video: Hindernis om robotmotors te vermy: 9 stappe

Video: Hindernis om robotmotors te vermy: 9 stappe
Video: Ричард Борчердс: Группа монстров, Теория струн, Самогон 2024, Julie
Anonim
Hindernis om robotmotors te vermy
Hindernis om robotmotors te vermy
Hindernis om robotmotors te vermy
Hindernis om robotmotors te vermy

Hoe om 'n hindernis te bou om robot te vermy

Stap 1: Black Box

Swart boks
Swart boks

die eerste stap het ek 'n swart boks as basis vir my robot gebruik.

Stap 2: Arduino

Arduino
Arduino

Die Arduino is die brein van die hele stelsel en organiseer ons motors

Stap 3: Heg die Arduino aan op Blackbox

Koppel die Arduino aan Blackbox
Koppel die Arduino aan Blackbox

Ek het die arduino met warm gom aan die blackbox vasgemaak

Stap 4: Ultrasoniese sensor

Ultrasoniese sensor
Ultrasoniese sensor

Om 'n robot te maak wat op sy eie kan beweeg, benodig ons 'n soort insette, 'n sensor wat by ons doel pas. 'N Ultrasoniese sensor is 'n instrument wat die afstand na 'n voorwerp met behulp van ultrasoniese klankgolwe meet. 'N Ultrasoniese sensor gebruik 'n transducer om ultrasoniese pulse te stuur en te ontvang wat inligting oor die nabyheid van 'n voorwerp teruggee

Stap 5: Breadboard -verbinding van sensor met Arduino

Broodbordverbinding van sensor met Arduino
Broodbordverbinding van sensor met Arduino
Broodbordverbinding van sensor met Arduino
Broodbordverbinding van sensor met Arduino

Ek het drade gebruik om die verbinding tussen die broodbord en die arduino te verbind.

Let daarop dat u pingsensor 'n ander penuitleg kan hê, maar 'n spanningspen, grondpen, trigpen en 'n eggo -pen moet hê.

Stap 6: Motorskerm

Motorskerm
Motorskerm

Arduino -borde kan nie self DC -motors beheer nie, omdat die strome wat hulle genereer te laag is. Om hierdie probleem op te los, gebruik ons motorskerms. stapmotor. … Deur hierdie penne aan te spreek, kan u 'n motorkanaal kies om te begin, die motorrigting (polariteit) spesifiseer, motorsnelheid (PWM) stel, die motor stop en begin en die stroomopname van elke kanaal monitor.

Stap 7: Verbind motorskerm met Arduino

Verbind motorskerm met Arduino
Verbind motorskerm met Arduino

Bevestig eenvoudig die motorskerm aan die arduino met die sensordrade ingedruk

Stap 8: Koppel die vier motors en batterye aan die skild

Koppel die 4 motors en batterye aan die skild
Koppel die 4 motors en batterye aan die skild

Elke motorskerm het (ten minste) twee kanale, een vir die motors en een vir 'n kragbron, verbind hulle ten opsigte van mekaar

Stap 9: Programmeer die robot

voer hierdie kode uit

#include #include

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;

#definieer TRIG_PIN A2 #definieer ECHO_PIN A3 #definieer MAX_DISTANCE 150 #definieer MAX_SPEED 100 #definieer MAX_SPEED_OFFSET 10

boolean goesForward = false; int afstand = 80; int speedSet = 0;

ongeldige opstelling () {

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

leemte lus () {int distanceR = 0; int afstand L = 0; vertraging (40); if (afstand <= 15) {moveStop (); vertraging (50); moveBackward (); vertraging (150); moveStop (); vertraging (100); distanceR = lookRight (); vertraging (100); distanceL = lookLeft (); vertraging (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } anders {turnLeft (); moveStop (); }} anders {moveForward (); } afstand = readPing (); }

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

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

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

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

as (! goesForward) {goesForward = true; motor1.run (VOORUIT); motor2.run (VOORUIT); motor3.run (VOORUIT); motor4.run (VOORUIT); vir (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.loop (TERUG); motor2.run (TERUG); motor3.loop (TERUG); motor4.run (TERUG); vir (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 (TERUG); motor2.run (TERUG); motor3.run (VOORUIT); motor4.run (VOORUIT); vertraging (500); motor1.run (VOORUIT); motor2.run (VOORUIT); motor3.run (VOORUIT); motor4.run (VOORUIT); }

leegte draaiLinks () {motor1.run (TERUG); motor2.run (TERUG); motor3.run (VOORUIT); motor4.run (VOORUIT); vertraging (500); motor1.run (VOORUIT); motor2.run (VOORUIT); motor3.run (VOORUIT); motor4.run (VOORUIT); }

Aanbeveel: