Inhoudsopgave:
- Stap 1: Zwarte doos
- Stap 2: Arduino
- Stap 3: De Arduino aansluiten op Blackbox
- Stap 4: Ultrasone sensor
- Stap 5: Breadboard-verbinding van sensor met Arduino
- Stap 6: Motorschild
- Stap 7: Motor Shield aansluiten op Arduino
- Stap 8: De 4 motoren en batterijen aansluiten op Shield
- Stap 9: Programmeer de robot
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Hoe een obstakel te bouwen dat een robot ontwijkt?
Stap 1: Zwarte doos
de eerste stap gebruikte ik een zwarte doos als basis voor mijn robot.
Stap 2: Arduino
De Arduino is het brein van het hele systeem en orkestreert onze motoren
Stap 3: De Arduino aansluiten op Blackbox
Ik heb de arduino aan de blackbox bevestigd met behulp van hete lijm
Stap 4: Ultrasone 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
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
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
Bevestig eenvoudig het motorschild aan de Arduino met de sensordraden erin geknarst
Stap 8: 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); }