INHOUDSOPGAWE:
- Stap 1: Black Box
- Stap 2: Arduino
- Stap 3: Heg die Arduino aan op Blackbox
- Stap 4: Ultrasoniese sensor
- Stap 5: Breadboard -verbinding van sensor met Arduino
- Stap 6: Motorskerm
- Stap 7: Verbind motorskerm met Arduino
- Stap 8: Koppel die vier motors en batterye aan die skild
- Stap 9: Programmeer die robot
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Hoe om 'n hindernis te bou om robot te vermy
Stap 1: Black Box
die eerste stap het ek 'n swart boks as basis vir my robot gebruik.
Stap 2: Arduino
Die Arduino is die brein van die hele stelsel en organiseer ons motors
Stap 3: Heg die Arduino aan op Blackbox
Ek het die arduino met warm gom aan die blackbox vasgemaak
Stap 4: 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
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
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
Bevestig eenvoudig die motorskerm aan die arduino met die sensordrade ingedruk
Stap 8: Koppel die vier 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); }