MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

12 Schritt:Schritt 1: was man so braucht Schritt 2: ERSTE SCHRITTE: ANSCHLUSS DTMF mit Arduino Schritt 3: Einstellen der L293D Schritt 4: Anschluss der Sensoren mit ARDUINO Schritt 5: Anschließen des 5 BABYS MIT MUTTER Schritt 6: DIE CODE Schritt 7: Den Code eingeben: - FÜR PING SENSOR Schritt 8: Den Code eingeben: - für den HC-SR04 SENSOR Schritt 9: Vorbereitung des Körpers DER ROBOT !!!!!! Schritt 10: In Kontinuität ...... Schritt 11: PRÜFUNG ...... Schritt 12: Schließen der Haube

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

DTMF oder Dual Tone Multiple Frequency ist nette kleine Art der Steuerung von Maschinen mit Ihrem Handy. Diese instructable zeigt Ihnen, lieber Leser, wie man ein billiger machen als Schmutz DTMF gesteuerten Roboter, der kann auch funktionieren autonom yeh! das ist richtig AUTONOM, wenn es eng wird.
Das Projekt wird rund um die ach so vielseitig Arduino UNO errichtet (Oh Arduino ist ihr alles, was Sie nicht tun können !!!!!!). Die Programmierung ist unkompliziert, aber stellen Sie sicher, alles ist zur Hand, bevor Sie basteln starten. Das gesamte Projekt kann für weniger als 50 $ schlug zusammen und kann Stunden sinnlosen Spaß für Sie und die Familie Haustier mitbringen.

Lassen Sie mich erklären mein Projekt: ------

Wie der Titel vorschlagen, dieser Roboter in der Lage, Arbeiten sowohl in autonomen und manuellen Modus ist, werde ich die Arbeit des Roboters in den beiden Modi jetzt erklären:
Autonomen Modus: -
In diesem Projekt habe ich die "Sensor-Fusion-Technik", die "HIGH TECHIE TECHIE" klingen, aber ist eigentlich eine einfache Technik der Kombination der Eingangsdaten von mehr als einem (gleicher oder unterschiedlicher Art) Sensor, um die Umwelt zu analysieren implementiert. Dies erhöht die Erfassungsfähigkeit des Systems und ermöglicht eine genauere Rechnung (oder Gegenmaßnahmen in diesem Fall) zu formulieren auch. In diesem Projekt habe ich einen Ultraschall-Sensor für die Suche nach den Abstand des Hindernisses von dem Roboter und die beiden IR-Sensor (eine auf jeder Seite), um Kante Kollision zu verhindern.
Nehmen wir an, der Roboter auf ein Hindernis Überschrift. Wenn es in einer bestimmten Entfernung (in der Code angegeben) von dem Objekt sagen 6cm (durch den Ultraschallsensor berechnet) wird entweder nach links oder nach rechts. Diese Entscheidung wird durch Erfassen, welche der 2 Seiten leer sind (dh keinen anderen Hindernis oder nicht, um eine Kollision mit einem anderen Hindernis führen) gemacht. Das ist, wo die IR-Sensoren kommen in Spiel, die linke und rechte Seite überprüfen sie. Wenn nehme beide Seiten frei sind, dann können Sie wählen, wo Sie Ihre Roboter sollte Schritt ist es zu Fuß, indem Sie es im Code.
MANUELLER MODUS:-
Im manuellen Modus kann der Roboter mit Handy gesteuert werden kann, einem am Roboter angebracht und ein weiteres Telefon kann verwendet werden, um am Telefon mit dem Roboter verbunden rufen werden. Wenn Sie eine Taste auf dem Telefon des Anrufers wird ein Signal zu generieren drücken, wird die genannte Telefon das gleiche Signal an die DTMF-Modul, das es in ein 4-Bit-BCD-Code konvertiert werden übertragen (erfahren Sie mehr über DTMF auf dem "Internet")
Der Roboter zwischen diesen 2 Modi, indem Sie einfach eine Taste OFF das Telefon, die später erläutert wird umgeschaltet werden.

Sorry für die nicht dem Hochladen von Video YOUTUBE in unserer COLLEGE VERBOTEN UND DER instructable NICHT HABEN EINE Video-Upload-Funktion für NOW.
Schritt 1: was man so braucht

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

Alle 11 Artikel anzeigen

1: - DTMF-Modul (http://www.ebay.in/itm/like/20119037796).
2: - ARDUINO UNO.
3: - Drahtbrücken (Mann zu Frau und Mann zum Mann).
4: - PING Ultraschallsensor (Nutzen auch Sie HC-SR04 SENSOR weil es billiger ABER Sie müssen den Code, der ich in der Code-Abschnitt EXPLAIN ÄNDERN).
5: - 2 IR-Sensor (http://www.amazon.in/ROBOSOFT-SYSTEMS-Single-Sensor-Module/dp/B00U3LKGTG/ref=sr_1_cc_3?s=aps&ie=UTF8&qid=1427820514&sr=1-3-catcorr&keywords=ir+sensor+module)
6: - 2 kleine Brotschneidebretter.
7: - L293D MOTOR DRIVER (http: //www.amazon.in/L293D-Push-Pull-Four-Channel -...) Sie können auch das L293D MODULE IM WERK (http://www.ebay.in / itm / wie / 271552019152)
8: - 2 Räder und 2 Schrittmotoren mit Getriebes (AUF AMAZON) Wenn Sie die Motoren ohne das Getriebe dann werden sie NICHT MÖGLICH genügend Drehmoment auf die Räder zu bewegen, wenn der Roboter auf Boden gelegt ergeben. "PERSÖNLICHE ERFAHRUNG!!!!!!"
9: - ein Handy mit 3,5 mm Klinke-Unterstützung und ONE für den Aufruf.
10: - SMALL BOX.
11: - doppelseitiges Klebeband.
12: - 2 Batterien (Duracell Versuchen Sie verwenden). Sie können eine 5V Ladegerät zum Testen verwenden. Schritt 2: ERSTE SCHRITTE: ANSCHLUSS DTMF mit Arduino

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

Für diejenigen unter Ihnen, die nicht vertraut mit DTMF sind, habe ich eine unten angegebenen Link, bitte überprüfen.
http://www.mediacollege.com/audio/tone/dtmf.html Verbinden Es gibt 4 Pins auf der einen Seite der DTMF-Controller als D0, D1, D2, D3 markiert, diese Stifte eine Verbindung mit dem Pin 3, 4, 5 & 6 Arduino jeweils dh D0 Stift 3, und so weiter. Wir werden Anziehungskraft für die DTMF aus dem Arduino. Ich werde dich in der 4. Schritt erklären, wie. Schritt 3: EINSTELLUNG L293D

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

Der Vorteil der Verwendung eines Motortreibers und Schrittmotoren besteht darin, dass diese Anordnung ist billiger im Vergleich zur Verwendung von Servomotoren.
Schließen Sie die Stifte 4, 5, 12, 13 zusammen mit kleinen Brücken. Sie können diese Jumper mit festen Kern Aluminiumdrähte zu machen. Verbinden Sie die Pins 1 und 9 zusammen und Stiften 8 und 16 zusammen. Schließen Sie den Stift:
ARDUINO <=========> DRIVER
Pin 9 <----------------------------> Pin 2
Pin 10 <--------------------------> Pin 7
Stift 11 <--------------------------> Pin 15
Pin 12 <--------------------------> Pin 10
Verbinden Sie das 5V von Arduino mit dem Pin 1 bis Brotbrett und GND an die Pins 4, 5, 12, oder 13, wird einem zu tun. Schritt 4: Anschluss der Sensoren Arduino

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

Der Sensor Ich verwende ein Ultraschallsensor PING aufgrund seiner hohen Zuverlässigkeit und geringerer Pinzahl Vergleich zu HC-SR04, die ein 4-Pin-Sensor ist, da es separate Pins für Ein- und Ausgangssignal, während Ping verwendet das gleiche Pin für Eingangs und Ausgabe. Auch ich bekam es kostenlos, warum also zu einem anderen zu kaufen !!!!!!
Ich werde Ihnen sagen, wie Sie den Code für die 4-Pin-Sensor später im Code-Abschnitt ändern. Ausgabemittel, dass das Sensormodul wird vom Arduino angeregt werden, um den Ultraschallimpuls ausgelöst, und Eingabemittel, dass die reflektierte Welle, die von dem Sensor erfasst wird dem Arduino. Verbinden Sie den Signalstift an den Pin 8 auf Arduino. Da wir auf eine begrenzte Anzahl von Stromquelle werden wir von der Arduino werden Anziehungskraft zu verwenden, so schließen Sie das 5V-Pin des Sensors auf 5V-Versorgung des Fahrers Steckbrett ist (AUS DEM ARDUINO) und GND mit der Masse der Treiberplatine. Wenn Sie einen Treiber-Modul verwenden, stellen Sie eine gemeinsame 5V ausziehen Punkt und Masseverbindung für diese beiden. Schließen Sie auch das Stromversorgungsstift des DTMF-Modul, um das Brot Bordstromversorgung. Die Ausgangspins des IR-Sensors Ebenso eine Verbindung zu dem Stift 11 und 12 nach dem Code. Schritt 5: 5 ANSCHLUSS DER BABYS MIT MUTTER

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

Verbinden Sie nun alle fünf Module an den Arduino. Verbinden Sie auch die Motoren und die Verwendung einer 5 V-Ladegerät für die Prüfung. Wenn Sie nicht das Ladegerät haben, können Sie eine 9V-Batterie für die Motoren zu verwenden. Zu Test stecken Sie das Arduino auf Ihren Computer.
Die Batterien Vergeuden Sie nicht unnötig. Ich habe, und es war fast kostete mich mein 1. Preis.
Schritt 6: DIE CODE

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

Die Codierung, war eine Herausforderung, da die DTMF-Code für lediglich eine Ziffer zu einer Zeit zu erzeugen.
Das Problem wurde für den manuellen Modus, in dem ich einen Schlüssel zum Umschalten in den Handbetrieb definieren Codierung. Ich beginne mit einem Beispiel erklären: -
Leere Schleife ()
{
int z = digitalRead (d0);
int y = digitalRead (d1);
int x = digitalRead (d2);
int w = digitalRead (d3);
if ((w == LOW) && (x == LOW) && (y == LOW) && (z == HIGH)), dh Stelle 1
if ((w == LOW) && (x == LOW) && (y == HIGH) && (z == LOW)) dh Ziffer 2
Der Code sollte wie folgt funktionieren: - wenn 1 gedrückt wird, in den manuellen Modus und durch Drücken von 2 auf dem Tastenfeld der Roboter vorwärts bewegt der Roboter geht. Aber was ist eigentlich passiert ist, dass, wie ich 2 Drücken Sie den Roboter nicht mehr im Handbetrieb. WARUM ??????
Die Antwort ist, dass der Staat an den Pins des Arduino mit dem DTMF angeschlossen haben sich geändert, dh sie sind nicht mehr 1, weil der Staat Informationen nicht überall gespeichert (weil der Staat sich ändern muss, wenn der Roboter in den autonomen Modus umgeschaltet und die DTMF auch nur Code für die zuletzt gedrückte Taste zu erzeugen und kann nicht gespeichert werden, den Code selbst).


DIE LÖSUNG: - Die Lösung war einfach statt, indem eine Bedingung für eine Zahl, zum Schalten des Modus I es für eine Ziffer gesetzt hatte: -
Beispiel: -
if (w == LOW)
{
if ((w == LOW) && (x == LOW) && (y == HIGH) && (z == LOW))
{
digital (motorL1, HIGH);
digital (motorL2, LOW);
digital (motorR1, HIGH);
digital (motorR2, LOW);
}
if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == HIGH))
{
digital (motorL1, LOW);
digital (motorL2, HIGH);
digital (motorR1, LOW);
digital (motorR2, HIGH);
}
if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == LOW))
{
digital (motorL1, LOW);
digital (motorL2, HIGH);
digital (motorR1, HIGH);
digital (motorR2, LOW);
}
if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == LOW))
{
digital (motorL1, HIGH);
digital (motorL2, LOW);
digital (motorR1, LOW);
digital (motorR2, HIGH);
}
if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == HIGH))
{
digital (motorL1, LOW);
digital (motorL2, LOW);
digital (motorR1, LOW);
digital (motorR2, LOW);
}
}
SEIT 'W' bleibt immer niedrig für die ABOVE DIGITS, WIRD DIE W = 0 Zustand TRUE GESAMTEN Schritt 7: Den Code eingeben: -. FÜR PING SENSOR

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

const int serialPeriod = 250; // Ein Zeitraum von 250 ms = eine Frequenz von 4 Hz
unsigned long timeSerialDelay = 0;
const int UltraloopPeriod = 20; // Eine Periode von 20 ms = eine Frequenz von 50 Hz unsigned UltraLoopDelay = 0;
const int SENSOR_1 = 10; // Eingabe / Ausgabe vom SENSOR_1 const int SENSOR_2 = 11; const int SENSOR_3 = 12; int motorL1 = 6; // Ausgang für Motortreiber Pin 2 int motorL2 = 7; // Ausgang für Motortreiber Pin 7 int motorR1 = 8; // Ausgang für Motortreiber Stift 15 int motorR2 = 9; // Ausgang für Motortreiber Stift 10 int d0 = 2; // Eingabe von DTMF-pin D0 int d1 = 3; // Eingabe von DTMF Stift D1 int d2 = 4; // Eingabe von DTMF Stift D2 int d3 = 5; // Eingabe von DTMF Stift D3 int ultrasonicTime; // Variable zu Zeit speichern int ultrasonicDistance; // Variable zu speichern Entfernung berechnet Leere setup () { Serial.begin (9600); // Setzen serielle Kommunikationsgeschwindigkeit pinMode (motorL1, OUTPUT); pinMode (motorL2, OUTPUT); pinMode (motorR1, OUTPUT); pinMode (motorR2, OUTPUT); pinMode (d0, INPUT); pinMode (d1, INPUT); pinMode (d2, INPUT); pinMode (d3, INPUT); }
Leere Schleife () { int z = digitalRead (d0); int y = digitalRead (d1); int x = digitalRead (d2); int w = digitalRead (d3); /*----------------------------------------- MANUELLER MODUS ------ --------------------------------- * / if (w == LOW) { if ((w == LOW) && (x == LOW) && (y == HIGH) && (z == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == LOW)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == HIGH)) { digital (motorL1, LOW); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, LOW); } } / * ----------------------------------- AUTONOMOUSMODE ------------ ----------------------- * / if (w == HIGH) { Sichtweite(); if ((millis () - UltraLoopDelay)> = UltraloopPeriod) { readUltrasonicsensor_1 (); Motorstart (); UltraLoopDelay = millis (); } } } nichtig readUltrasonicsensor_1 () // fuction zu SENSOR_1 Daten und finden Entfernung { pinMode (SENSOR_1, OUTPUT); digital (SENSOR_1, LOW); Verzögerung (2); digital (SENSOR_1, HIGH); Verzögerung (10); digital (SENSOR_1, LOW); pinMode (SENSOR_1, INPUT); ultrasonicTime = pulseIn (SENSOR_1, HIGH); ultrasonicDistance = (ultrasonicTime / 2) / 29; // Berechnung, um den Abstand des Hindernisses vom Ultraschallsensor messen }
Motorstart erlöschen () // Funktion zum Antrieb des Motors nach spürte Abstand { int IRSL = digitalRead (SENSOR_2); // IR linken Sensor int irsR = digitalRead (SENSOR_3); // IR richtigen Sensor if (ultrasonicDistance> 10) // dieser Teil Code funktioniert auf Seitenkollisionen sogar verhindern {// Wenn kein Hindernis vor dem Roboter if ((IRSL == LOW) && (irsR == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((IRSL == HIGH) && (irsR == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((IRSL == LOW) && (irsR == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((IRSL == HIGH) && (irsR == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, LOW); digital (motorR2, HIGH); } } if (ultrasonicDistance <10) // dieser Teil des Code funktioniert, wenn es einige {// Hindernis direkt vor dem Roboter und auch if ((IRSL == HIGH) && (irsR == LOW)) // nach Seitenkollision zu verhindern, { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((IRSL == LOW) && (irsR == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((IRSL == HIGH) && (irsR == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((IRSL == LOW) && (irsR == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } } }
/ * --------------------------- KONTROLLE DER ULTRSONIC SENSOR ----------------- -------- * /
nichtig viewDistance () // Funktion zum Abstand auf serielle Monitor anzeigen {// Um ​​zu prüfen, ob der Ultraschall-Sensorcode richtig funktioniert if ((millis () - timeSerialDelay)> = serialPeriod) { Serial.print ("Distance"); Serial.print (ultrasonicDistance); Serial.print ("cm"); Serial.println (); timeSerialDelay = millis (); } }
Schritt 8: Den Code eingeben: - für den HC-SR04 SENSOR

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

const int serialPeriod = 250; // Ein Zeitraum von 250 ms = eine Frequenz von 4 Hz
unsigned long timeSerialDelay = 0;
const int UltraloopPeriod = 20; // Eine Periode von 20 ms = eine Frequenz von 50 Hz unsigned UltraLoopDelay = 0;
const int sensor_1_in = 10; // Eingabe / Ausgabe vom SENSOR_1 const int sensor_1_out = 13; const int SENSOR_2 = 11; const int SENSOR_3 = 12;
int motorL1 = 6; // Ausgang für Motortreiber Pin 2 int motorL2 = 7; // Ausgang für Motortreiber Pin 7 int motorR1 = 8; // Ausgang für Motortreiber Stift 15 int motorR2 = 9; // Ausgang für Motortreiber Stift 10 int d0 = 2; // Eingabe von DTMF-pin D0 int d1 = 3; // Eingabe von DTMF Stift D1 int d2 = 4; // Eingabe von DTMF Stift D2 int d3 = 5; // Eingabe von DTMF Stift D3 int ultrasonicTime; // Variable zu Zeit speichern int ultrasonicDistance; // Variable zu speichern Entfernung berechnet Leere setup () { Serial.begin (9600); // Setzen serielle Kommunikationsgeschwindigkeit pinMode (motorL1, OUTPUT); pinMode (motorL2, OUTPUT); pinMode (motorR1, OUTPUT); pinMode (motorR2, OUTPUT); pinMode (d0, INPUT); pinMode (d1, INPUT); pinMode (d2, INPUT); pinMode (d3, INPUT); }
Leere Schleife () { int z = digitalRead (d0); int y = digitalRead (d1); int x = digitalRead (d2); int w = digitalRead (d3); /*----------------------------------------- MANUELLER MODUS ------ --------------------------------- * / if (w == LOW) { if ((w == LOW) && (x == LOW) && (y == HIGH) && (z == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == LOW)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == HIGH)) { digital (motorL1, LOW); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, LOW); } } / * ----------------------------------- AUTONOMOUSMODE ------------ ----------------------- * / if (w == HIGH) { Sichtweite(); if ((millis () - UltraLoopDelay)> = UltraloopPeriod) { readUltrasonicsensor_1 (); Motorstart (); UltraLoopDelay = millis (); } } } Leere readUltrasonicsensor_1 () // GEÄNDERT { digital (sensor_1_out, LOW); Verzögerung (2); digital (sensor_1_out, HIGH); Verzögerung (10); digital (sensor_1_out, LOW); ultrasonicTime = pulseIn (sensor_1_in, HIGH); ultrasonicDistance = (ultrasonicTime / 2) / 29; // Berechnung, um den Abstand des Hindernisses vom Ultraschallsensor messen }
Motorstart erlöschen () // Funktion zum Antrieb des Motors nach spürte Abstand { int IRSL = digitalRead (SENSOR_2); // IR linken Sensor int irsR = digitalRead (SENSOR_3); // IR richtigen Sensor if (ultrasonicDistance> 10) // dieser Teil Code funktioniert auf Seitenkollisionen sogar verhindern {// Wenn kein Hindernis vor dem Roboter if ((IRSL == LOW) && (irsR == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((IRSL == HIGH) && (irsR == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((IRSL == LOW) && (irsR == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((IRSL == HIGH) && (irsR == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, LOW); digital (motorR2, HIGH); } } if (ultrasonicDistance <10) // dieser Teil des Code funktioniert, wenn es einige {// Hindernis direkt vor dem Roboter und auch if ((IRSL == HIGH) && (irsR == LOW)) // nach Seitenkollision zu verhindern, { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((IRSL == LOW) && (irsR == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((IRSL == HIGH) && (irsR == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((IRSL == LOW) && (irsR == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } } }
/ * --------------------------- KONTROLLE DER ULTRSONIC SENSOR ----------------- -------- * /
nichtig viewDistance () // Funktion zum Abstand auf serielle Monitor anzeigen {// Um ​​zu prüfen, ob der Ultraschall-Sensorcode richtig funktioniert if ((millis () - timeSerialDelay)> = serialPeriod) { Serial.print ("Distance"); Serial.print (ultrasonicDistance); Serial.print ("cm"); Serial.println (); timeSerialDelay = millis (); } }
Schritt 9: Vorbereitung des Körpers DER ROBOT !!!!!!

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

Das Loch auf dem Feld in der 1. Bild hat nichts damit zu tun.


1: Nehmen Sie eine gewöhnliche Karton bohren einige Löcher für die Motorwelle mit dicken Körper Stift.
2: Legen Sie die Motoren mit dem doppelseitigen Klebeband oder mit einem anderen praktikable Methode Sie mögen.
Schritt 10: In Kontinuität ......

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

Für den Sensor müssen Sie ein paar Anpassungen oben gezeigt zu machen. Der einzige Grund für die Verwendung von kleinen Brücken, war, dass der Sensor nahm mehr Raum, als ich dachte, so hatte ich den größten Teil der Außensteckbrett zu platzieren. Es ist etwas kompliziert zu erklären, aber Sie werden verstehen, was auf, wenn Sie diesen Punkt in den Build erreichen werde.
Jede Art und Weise, können Sie andere Techniken, die Ihre Phantasie für die Platzierung des Sensors an der Roboteranzug benutzen, aber das, was ich versucht zu tun war, indem Sie die Drähte im Inneren, ohne Drähte außerhalb der Box. auch Sie den Sensor gerade wenn Sie es wünschen montieren. Aber stellen Sie sicher, dass der Sensor nicht zu hoch oder es wird nicht in der Lage zu erkennen, Objekte von geringerer Höhe sein Schritt. 11: PRÜFUNG ......

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

Legen Sie die Mutter und es ist Babys in Seiten die Box und machen Sie einen Testlauf ohne Räder.
Keine Notwendigkeit zu sagen, dass die DTMF fehlt, ist es gerade heraus hängen.

Nach der Code, den ich geschrieben habe: -
2 = Vorwärts
5 = rückwärts
4 = links abbiegen
6 = rechts
andere als 1, 2, 3, 4, 5, 6 und 7 Ziffern wird der Roboter im autonomen Modus setzen Schritt 12:. Schließen der Haube

MANUAL / autonome Steuerung ROBOT (Verwendung von Sensorfusionstechnik)

Jetzt ist es Zeit, um alles, was im Inneren des Körpers Ort in der Nähe der Haube und ...... PLAY !!!!!!
ALLES GUTE......