Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Bauen Sie Ihren ersten Arduino-Roboter - Der beste Anfängerleitfaden!

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Adafruit L293D Motorschild
Es ist ein kostengünstiges Gerät und einfach zu bedienen. Es ist ein allgemein verfügbares Motorschild, das keine Vorkenntnisse erfordert. Es kann auch einfach mit der Adafruit-Bibliothek programmiert werden.
× 1
HC-SR4 Ultraschallsensor
× 1
HC-05 Bluetooth-Modul
× 1
Getriebemotor
× 2
Rad
× 2
Lenkrad
× 2
9-V-Batterie (generisch)
× 3
9-V-Batterieklemme
× 3
Female/Female Jumper Wires
× 8
Kunststoffbox
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Heißklebepistole (generisch)
Schraubendreher

Apps und Onlinedienste

Bluetooth-Elektronik
Arduino-IDE
Adafruit-Motor-Shield-Bibliothek

Über dieses Projekt

Wenn Sie ein Anfänger in Arduino sind und einen Plan haben, Ihren ersten Roboter zu bauen, dann ist hier das Tutorial für Sie. Sehen Sie sich die Bilder von dem an, was Sie heute bauen werden.

In diesem Tutorial werde ich zeigen, wie man einen Arduino-Roboter mit verschiedenen Funktionalitäten baut. Wir können die Verwendung verschiedener Programme für verschiedene Funktionen lernen, hauptsächlich einen Smartphone-gesteuerten Roboter mit Hindernisvermeider, Wandfolger und Labyrinthlöser. Oder Sie können es auch nur für eine einzige Funktion verwenden.

Materialien und Werkzeuge

Schritt 2:Herstellen des Gehäuses

Bohren Sie zwei Löcher für den Motor:

Schließen Sie zwei Motoren an:

Machen Sie drei Löcher für das Laufrad:

Schließen Sie das Laufrad an:

Machen Sie zwei Löcher auf beiden Seiten des Kastens zum Anschließen der Motoren und drei Löcher am Boden zum Anschließen des Laufrades, nachdem Sie den richtigen Durchmesser gemessen und markiert haben. Installieren Sie dann die Motoren und die Laufrolle.

Batterien

Anschließen der Batterien.

Schaltplan.

Kleben Sie die Batterien in die Box.

Montieren Sie zwei 9-Volt-Batterien in der Box über der Laufrolle. Verdrahten Sie sie dann parallel und schließen Sie einen Schalter wie im obigen Diagramm gezeigt an.

Anschließen von Arduino und Motor Shield

Bringen Sie das Motorschild über dem Arduino an.

Verbinden Sie die Batteriekabel mit dem PWR Klemmen des Motorschirms.

Verbinden Sie die Motoren mit dem Motorschirm.

Entfernen Sie den Jumper von diesem Port.

Schließen Sie das Motorschild über dem Arduino an und platzieren Sie es über der Batterie. Verbinden Sie dann die Drähte von den Motoren und der Batterie mit dem Motorschild. Sehen Sie sich vor dem Anschließen das Anschlussdiagramm an, da es sehr wichtig ist.

Verdrahtungsanweisungen:

  • Verbinde den linken Motor mit "M1" der Motorabschirmung
  • Schließen Sie den rechten Motor an "M3" der Motorabschirmung an
  • Schließen Sie das Kabel von der Batterie an "ext pwr" der Motorabschirmung an

Machen Sie zwei Löcher und schalten Sie das Arduino ein

Markieren Sie die Stelle, um Löcher zu machen.

Machen Sie die Löcher.

Verbinden Sie den Batterieclip mit dem DC-Stecker mit der 9V-Batterie.

Legen Sie diese 9-Volt-Batterie in die Box.

Machen Sie zwei Löcher für den Zugriff auf den USB-Port und den DC-Eingang des Arduino. Nehmen Sie eine weitere 9-Volt-Batterie und schließen Sie einen Batterieclip an einen DC-Steckeradapter an. Verbinden Sie dann den DC-Stecker mit dem Arduino DC-Eingangsport, um das Arduino mit Strom zu versorgen. Legen Sie dann die Batterie zwischen den Motoren und Arduino in die Box.

Verbinden von Bluetooth-Modul und Schalter

Verbinden Sie das Bluetooth-Modul wie im Anschlussplan gezeigt mit dem Arduino und legen Sie es in die Box. Dann ein Loch machen, um den Schalter auf der Rückseite der Box zu montieren und den Schalter anzuschließen (hier habe ich den Schalter geändert, der früher wegen eines Lötproblems verwendet wurde).

Anleitung zur Verkabelung des Bluetooth-Moduls:

  • "TX" des Bluetooth-Moduls geht an "RX" von Arduino
  • "RX" des Bluetooth-Moduls geht zu "TX" von Arduino
  • "VCC" des Bluetooth-Moduls geht zu "5v" von Arduino
  • "GND" des Bluetooth-Moduls geht zu "GND" von Arduino
  • Die State &Key-Pins der BT-Module bleiben ungenutzt.

Gesamtschaltplan

Sensor-Ultraschallmontage

Nehmen Sie den Ultraschallsensor und kleben Sie ein kleines 'L'-förmiges Plastikstück darauf und kleben Sie es auf die Plastikbox (oder wenn Sie keinen Klebestift haben, verwenden Sie doppelseitiges Klebeband). Schließen Sie dann die Überbrückungsdrähte wie im obigen Schaltplan gezeigt an.

Verkabelungsanleitung des Ultraschallsensors:

  • "VCC" des Ultraschallsensors geht auf "+5" von Arduino
  • "GND" des Ultraschallsensors geht an "GND" von Arduino
  • "Trig"-Pin des Ultraschallsensors geht an "Analog-Pin 1" von Arduino
  • "Echo"-Pin des Ultraschallsensors geht an "Analog-Pin 0" von Arduino

Jetzt haben wir alle Verbindungen hergestellt und es ist Zeit zum Programmieren.

Letzter Schritt - Arduino-Codes und Bluetooth-App-Bearbeitung

Laden Sie die "Endgültige Skizze . hoch " im Codeabschnitt bereitgestellt. Wenn ein Fehler auftritt, vergewissern Sie sich, dass Sie die AFmotor-Bibliothek installiert haben.

Jetzt haben wir gelernt, wie man einen Arduino einfach programmiert. Ich habe hier einige Programme gezeigt, um diesen Roboter als hindernisvermeidender Roboter, Wallfolger und Bluetooth-gesteuert zu arbeiten. und endlich habe ich diese drei funktionen miteinander kombiniert. Sehen Sie sich das Video an, um weitere Details und Informationen zu erhalten

Erste Schritte mit der Bluetooth-App

Ein bisschen Spaß mit Wall Follower &Hindernisvermeidung

Besuchen Sie meinen Blog hier - robotechmaker.com

Wenn Sie Fragen oder Anregungen haben, kommentieren Sie bitte unten.

Code

  • Bluetooth-Skizze (gesteuerter Roboter)
  • Endgültige Skizze (Endgültiger Code)
  • Hindernisvermeiderskizze
  • Wandfolger-Skizze
Bluetooth (gesteuerter Roboter) SketchArduino
/*Autor:Marcelo Moraes Dieses Projekt enthält Public-Domain-Code. Die Änderung ist ohne vorherige Ankündigung zulässig. *///Libraries#include //ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // Motor Nr. 1 erstellen, 64KHz pwmAF_DCMotor motorLeft (3, MOTOR12_64KHZ); // Motor #3 erstellen, 64KHz PWM // Konstanten und Variablechar dataIn ='S';char determinant;char det;int vel =0; // Bluetooth Stuffvoid setup () { Serial.begin (9600); // serielle Bibliothek mit 9600 bps einrichten // Initialisierungsnachrichten Serial.println ( "ArduinoBymyself - ROVERBot"); Serial.println ("AF-Motortest!"); // Motoren ausschalten motorRight.setSpeed ​​(0); motorLeft.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE); }void loop () { det =check (); // check () subrotine aufrufen, um den seriellen Code zu erhalten // serieller Code-Analyseschalter (det) { case 'F':// F, vorwärts bewegen motorRight.setSpeed ​​(vel); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =check(); brechen; case 'B':// B, zurück bewegen motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run (RÜCKWÄRTS); motorLeft.run(BACKWARD); det =check(); brechen; case 'L':// L, Räder nach links bewegen motorRight.setSpeed(vel); motorLeft.setSpeed(vel/4); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =check(); brechen; case 'R':// R, Räder nach rechts bewegen motorRight.setSpeed(vel/4); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =check(); brechen; Fall 'I':// I, rechts vorwärts drehen motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =check(); brechen; Fall 'J':// J, rechts zurück drehen motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run (RÜCKWÄRTS); motorLeft.run(BACKWARD); det =check(); brechen; Fall 'G':// G, links nach vorne drehen motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =check(); brechen; case 'H':// H, links zurück drehen motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run (RÜCKWÄRTS); motorLeft.run(BACKWARD); det =check(); brechen; case 'S':// S, stop motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run(RELEASE); det =check(); brechen; }} // Bluetooth-Code vom seriellen Port erhalten check(){ if (Serial.available()> 0){// wenn gültige Daten im seriellen Port vorhanden sind dataIn =Serial.read(); // speichert Daten in a varialbe //Überprüfe den Code if (dataIn =='F'){//Forward determinant ='F'; aufrechtzuerhalten. Sonst if (dataIn =='B'){//Rückwärtsdeterminante ='B'; aufrechtzuerhalten. Sonst if (dataIn =='L'){//Linke Determinante ='L'; aufrechtzuerhalten. Sonst if (dataIn =='R'){//Rechte Determinante ='R'; aufrechtzuerhalten. Sonst if (dataIn =='I'){//Froward Right Determinante ='I'; aufrechtzuerhalten. Sonst if (dataIn =='J'){//Rückwärts-Rechts-Determinante ='J'; aufrechtzuerhalten. Sonst if (dataIn =='G'){//Forward Left Determinante ='G'; aufrechtzuerhalten. Sonst if (dataIn =='H'){//Rückwärts links Determinante ='H'; aufrechtzuerhalten. Sonst if (dataIn =='S'){//Stop Determinante ='S'; aufrechtzuerhalten. Sonst if (dataIn =='0') {//Geschwindigkeit 0 vel =0; aufrechtzuerhalten. Sonst if (dataIn =='1') {//Geschwindigkeit 25 vel =25; aufrechtzuerhalten. Sonst if (dataIn =='2') {//Geschwindigkeit 50 vel =50; aufrechtzuerhalten. Sonst if (dataIn =='3') {//Geschwindigkeit 75 vel =75; aufrechtzuerhalten. Sonst if (dataIn =='4') {//Geschwindigkeit 100 vel =100; aufrechtzuerhalten. Sonst wenn (dataIn =='5') {// Geschwindigkeit 125 vel =125; aufrechtzuerhalten. Sonst if (dataIn =='6') {//Geschwindigkeit 150 vel =150; aufrechtzuerhalten. Sonst if (dataIn =='7') {//Geschwindigkeit 175 vel =175; aufrechtzuerhalten. Sonst if (dataIn =='8') {//Geschwindigkeit 200 vel =200; aufrechtzuerhalten. Sonst if (dataIn =='9') {//Geschwindigkeit 225 vel =225; aufrechtzuerhalten. Sonst if (dataIn =='q') {//Geschwindigkeit 255 vel =255; aufrechtzuerhalten. Sonst if (dataIn =='U'){//Back Lights On Determinante ='U'; aufrechtzuerhalten. Sonst if (dataIn =='u') {//Back Lights Off Determinante ='u'; aufrechtzuerhalten. Sonst if (dataIn =='W') {//Front Lights On Determinante ='W'; aufrechtzuerhalten. Sonst if (dataIn =='w') {//Front Lights Off Determinante ='w'; aufrechtzuerhalten. Sonst if (dataIn =='V') {//Horn On Determinante ='V'; aufrechtzuerhalten. Sonst if (dataIn =='v') {//Horn Off Determinante ='v'; aufrechtzuerhalten. Sonst if (dataIn =='X'){//Extra On Determinante ='X'; aufrechtzuerhalten. Sonst if (dataIn =='x'){//Extra Off Determinante ='x'; } } Determinante zurückgeben;}
Endgültige Skizze (Endgültiger Code)Arduino
/*Autor:Muhammed Azharvisit - robotechmaker.com*/#include #define trigPin 14 // Definiere die Pins deines Sensors#define echoPin 15 //ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // Motor Nr. 1 erstellen, 64KHz pwmAF_DCMotor motorLeft (3, MOTOR12_64KHZ); // Motor #3 erstellen, 64KHz PWM // Konstanten und Variablechar dataIn ='S';char determinant;char det;int vel =255; // Bluetooth Stuffvoid setup () { Serial.begin (9600); // serielle Bibliothek mit 9600 bps einrichten pinMode (trigPin, OUTPUT); // Trig-Pin auf Ausgang setzen (Schallwellen senden) pinMode (echoPin, INPUT); // Echo-Pin auf Eingang setzen (Schallwellen empfangen) / /Initialisierungsnachrichten Serial.println("Mr.robot"); Serial.println ("Reday für die Arbeit!"); // Motoren ausschalten motorRight.setSpeed ​​(0); motorLeft.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE);}void loop() { det =check(); // check () subrotine aufrufen, um den seriellen Code zu erhalten // serieller Code-Analyseschalter (det) { case 'F':// F, vorwärts bewegen motorRight.setSpeed ​​(vel); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =check(); brechen; case 'B':// B, zurück bewegen motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run (RÜCKWÄRTS); motorLeft.run(BACKWARD); det =check(); brechen; case 'L':// L, Räder nach links bewegen motorRight.setSpeed(vel); motorLeft.setSpeed(vel/4); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =check(); brechen; case 'R':// R, Räder nach rechts bewegen motorRight.setSpeed(vel/4); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =check(); brechen; Fall 'I':// I, rechts vorwärts drehen motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =check(); brechen; Fall 'J':// J, rechts zurück drehen motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run (RÜCKWÄRTS); motorLeft.run(BACKWARD); det =check(); brechen; Fall 'G':// G, links nach vorne drehen motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =check(); brechen; case 'H':// H, links zurück drehen motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run (RÜCKWÄRTS); motorLeft.run(BACKWARD); det =check(); brechen; case 'S':// S, stop motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run(RELEASE); det =check(); brechen; Fall 'm'://für Wandfolger-Roboter. motorRight.setSpeed(vel); // Stellen Sie die Geschwindigkeit der Motoren zwischen 0-255 ein. motorLeft.setSpeed ​​(vel); lange Dauer, Entfernung; // Scan starten digitalWrite (trigPin, LOW); VerzögerungMikrosekunden(2); // Für einen erfolgreichen Sensorbetrieb sind Verzögerungen erforderlich. digitalWrite (trigPin, HOCH); VerzögerungMikrosekunden(10); //diese Verzögerung ist auch erforderlich! digitalWrite (trigPin, LOW); Dauer =pulseIn(echoPin, HIGH); Distance =(Dauer/2) / 29,1; // Distanz in Zentimeter umwandeln. if (Abstand <30)/*Der Abstand, der von der Wand eingehalten werden muss */ { Serial.println ("Wall is ditected!" );Serial.println ("Begonnen nach der Wand");Serial.println (" Drehen !"); motorRight.setSpeed(vel); motorLeft.setSpeed(0); motorRight.run(FORWARD); motorLeft.run(RELEASE); Verzögerung (500); // eine Sekunde warten} else {Serial.println ("Keine Wand erkannt. Umdrehen"); Verzögerung (15); motorRight.setSpeed(0); motorLeft.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run (FORWARD); } brechen; Fall 'b':// Hindernisvermeider-Roboter motorRight.setSpeed ​​(vel); // Stellen Sie die Geschwindigkeit der Motoren zwischen 0-255 ein. motorLeft.setSpeed ​​(vel); lange Aduration, Ferne; // Scan starten digitalWrite (trigPin, LOW); VerzögerungMikrosekunden(2); // Für einen erfolgreichen Sensorbetrieb sind Verzögerungen erforderlich. digitalWrite (trigPin, HOCH); VerzögerungMikrosekunden(10); //diese Verzögerung ist auch erforderlich! digitalWrite (trigPin, LOW); Aduration =pulseIn(echoPin, HIGH); Adistanz =(Aduration/2) / 29,1; // Distanz in Zentimeter umrechnen. if (Adistanz <25)/*wenn sich ein Hindernis 25 cm vor Ihnen befindet, gehen Sie wie folgt vor:*/ { Serial.println ("Close Hindernis detektiert!"); Serial.println ("Obstacle Details:");Serial.print ("Distance From Robot is");Serial.print ( Adistance);Serial.print ( "CM!");// die Entfernung in Zentimetern ausgeben.Serial.println ("Das Hindernis wird aufgrund der geringen Entfernung als Bedrohung deklariert . "); Serial.println (" Drehen !"); motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorLeft.run(BACKWARD); // Abbiegen, solange ein Hindernis vor Ihnen ist. motorRight.run (FORWARD);} else { Serial.println ("Kein Hindernis erkannt. Vorwärts gehen"); Verzögerung (15); motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FORWARD); //Wenn kein Hindernis vor dir ist, gehe vorwärts! motorLeft.run(FORWARD); } brechen; }} // Bluetooth-Code vom seriellen Port erhalten check(){ if (Serial.available()> 0){// wenn gültige Daten im seriellen Port vorhanden sind dataIn =Serial.read(); // speichert Daten in a varialbe//Überprüfe den Code if (dataIn =='F'){//Forward determinant ='F'; aufrechtzuerhalten. Sonst if (dataIn =='B'){//Rückwärtsdeterminante ='B'; aufrechtzuerhalten. Sonst if (dataIn =='L'){//Linke Determinante ='L'; aufrechtzuerhalten. Sonst if (dataIn =='R'){//Rechte Determinante ='R'; aufrechtzuerhalten. Sonst if (dataIn =='I'){//Froward Right Determinante ='I'; aufrechtzuerhalten. Sonst if (dataIn =='J'){//Rückwärts-Rechts-Determinante ='J'; aufrechtzuerhalten. Sonst if (dataIn =='G'){//Forward Left Determinante ='G'; aufrechtzuerhalten. Sonst if (dataIn =='H'){//Rückwärts links Determinante ='H'; aufrechtzuerhalten. Sonst if (dataIn =='S'){//Stop Determinante ='S'; aufrechtzuerhalten. Sonst if (dataIn =='0') {//Geschwindigkeit 0 vel =0; aufrechtzuerhalten. Sonst if (dataIn =='1') {//Geschwindigkeit 25 vel =25; aufrechtzuerhalten. Sonst if (dataIn =='2') {//Geschwindigkeit 50 vel =50; aufrechtzuerhalten. Sonst if (dataIn =='3') {//Geschwindigkeit 75 vel =75; aufrechtzuerhalten. Sonst if (dataIn =='4') {//Geschwindigkeit 100 vel =100; aufrechtzuerhalten. Sonst wenn (dataIn =='5') {// Geschwindigkeit 125 vel =125; aufrechtzuerhalten. Sonst if (dataIn =='6') {//Geschwindigkeit 150 vel =150; aufrechtzuerhalten. Sonst if (dataIn =='7') {//Geschwindigkeit 175 vel =175; aufrechtzuerhalten. Sonst if (dataIn =='8') {//Geschwindigkeit 200 vel =200; aufrechtzuerhalten. Sonst if (dataIn =='9') {//Geschwindigkeit 225 vel =225; aufrechtzuerhalten. Sonst if (dataIn =='b'){//Extra On Determinante ='b'; aufrechtzuerhalten. Sonst if (dataIn =='m'){//Extra On Determinante ='m'; } } Determinante zurückgeben;}
HindernisvermeiderskizzeArduino
/*Autor:Muhammed Azharvisit - robotechmaker.com*/#include #define trigPin 14 // Definiere die Pins deines Sensors#define echoPin 15 int vel =255; // Geschwindigkeit des Roboters // ObjectsAF_DCMotor motorRight (1, MOTOR12_64KHZ); // Motor Nr. 1 erstellen, 64KHz pwmAF_DCMotor motorLeft (3, MOTOR12_64KHZ); // Motor # 3 erstellen, 64KHz pwmvoid setup () { Serial.begin (9600); // serielle Bibliothek mit 9600 bps einrichten pinMode (trigPin, OUTPUT); // Trig-Pin auf Ausgang setzen (Schallwellen senden) pinMode (echoPin, INPUT); // Echo-Pin auf Eingang setzen (Schallwellen empfangen) / /Initialisierungsnachrichten Serial.println("Mr.robot"); Serial.println ("Reday für die Arbeit!"); // Motoren ausschalten motorRight.setSpeed ​​(0); motorLeft.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE);}void loop() {//Hindernisvermeider-Roboter motorRight.setSpeed(vel); // Stellen Sie die Geschwindigkeit der Motoren zwischen 0-255 ein. motorLeft.setSpeed ​​(vel); lange Dauer, Entfernung; // Scan starten digitalWrite (trigPin, LOW); VerzögerungMikrosekunden(2); // Für einen erfolgreichen Sensorbetrieb sind Verzögerungen erforderlich. digitalWrite (trigPin, HOCH); VerzögerungMikrosekunden(10); //diese Verzögerung ist auch erforderlich! digitalWrite (trigPin, LOW); Dauer =pulseIn(echoPin, HIGH); Distance =(Dauer/2) / 29,1; // Distanz in Zentimeter umwandeln. if (Abstand <25)/*wenn ein Hindernis 25 Zentimeter voraus ist, gehen Sie wie folgt vor:*/ { Serial.println ("Close Hindernis erkannt!"); Serial.println ("Obstacle Details:"); Serial.print ("Distance From Robot is");Serial.print ( distance);Serial.print ( "CM!");// die Entfernung in Zentimetern ausgeben.Serial.println ("Das Hindernis wird aufgrund der geringen Entfernung als Bedrohung deklariert . "); Serial.println (" Drehen !"); motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorLeft.run(BACKWARD); // Abbiegen, solange ein Hindernis vor Ihnen ist. motorRight.run (FORWARD);} else { Serial.println ("Kein Hindernis erkannt. Vorwärts gehen"); Verzögerung (15); motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FORWARD); //Wenn kein Hindernis vor dir ist, gehe vorwärts! motorLeft.run(FORWARD); } } 
Wandfolger-SkizzeArduino
/*Autor:Muhammed Azharvisit - robotechmaker.com*/#include #define trigPin 14 // Definiere die Pins deines Sensors#define echoPin 15 int vel =255; // Geschwindigkeit des Roboters //ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // Motor Nr. 1 erstellen, 64KHz pwmAF_DCMotor motorLeft (3, MOTOR12_64KHZ); // Motor # 3 erstellen, 64KHz pwmvoid setup () { Serial.begin (9600); // serielle Bibliothek mit 9600 bps einrichten pinMode (trigPin, OUTPUT); // Trig-Pin auf Ausgang setzen (Schallwellen senden) pinMode (echoPin, INPUT); // Echo-Pin auf Eingang setzen (Schallwellen empfangen) / /Initialisierungsnachrichten Serial.println("Mr.robot"); Serial.println ("Reday für die Arbeit!"); // Motoren ausschalten motorRight.setSpeed ​​(0); motorLeft.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE);}void loop(){//für Wandfolger-Roboter. motorRight.setSpeed(vel); // Stellen Sie die Geschwindigkeit der Motoren zwischen 0-255 ein. motorLeft.setSpeed ​​(vel); lange Dauer, Entfernung; // Scan starten digitalWrite (trigPin, LOW); VerzögerungMikrosekunden(2); // Für einen erfolgreichen Sensorbetrieb sind Verzögerungen erforderlich. digitalWrite (trigPin, HOCH); VerzögerungMikrosekunden(10); //diese Verzögerung ist auch erforderlich! digitalWrite (trigPin, LOW); Dauer =pulseIn(echoPin, HIGH); Distanz =(Dauer / 2) / 29,1; // Distanz in Zentimeter umwandeln. if (Abstand <30)/*Der Abstand, der mit der Wand eingehalten werden muss */ { Serial.println("Wall is ditected!"); Serial.println("Begonnen, der Wand zu folgen"); Serial.println("Drehen!"); motorRight.setSpeed(vel); motorLeft.setSpeed(0); motorRight.run(FORWARD); motorLeft.run(RELEASE); Verzögerung (500); // eine Sekunde warten} else {Serial.println ( "Keine Wand erkannt. Umdrehen"); Verzögerung (15); motorRight.setSpeed(0); motorLeft.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run(FORWARD); }}

Schaltpläne


Herstellungsprozess

  1. Das beste Zubehör für Ihren Raspberry Pi
  2. Best Practices für das Asset-Tracking:So holen Sie das Beste aus Ihren hart erarbeiteten Asset-Daten
  3. Wie Sie jetzt das Beste aus Ihrer Lieferkette machen
  4. Roboter für supercoole Indoor-Navigation
  5. Motorhalterungen 101:Der Leitfaden zur Auswahl des besten Materials für Motorhalterungen
  6. Ihr ultimativer Leitfaden zu den besten landwirtschaftlichen Industrieprodukten
  7. Ihr Leitfaden zu den besten Kranmarken
  8. Der beste 3D-Drucker-Kaufleitfaden für Ihre Werkstatt
  9. Der beste Weg, um Ihren IoT-Prototyp zu erstellen
  10. CNC Drahterodieren:Ihr bester Freund in der Werkstatt