Inhaltsverzeichnis:

Gyrosensorgesteuerte Plattform für Maze Puzzle - Gunook
Gyrosensorgesteuerte Plattform für Maze Puzzle - Gunook

Video: Gyrosensorgesteuerte Plattform für Maze Puzzle - Gunook

Video: Gyrosensorgesteuerte Plattform für Maze Puzzle - Gunook
Video: Robby - Beta 1 2024, November
Anonim
Gyrosensorgesteuerte Plattform für Maze Puzzle
Gyrosensorgesteuerte Plattform für Maze Puzzle

Dieses instructable wurde in Erfüllung der Projektanforderung des Make-Kurses an der University of South Florida (www.makecourse.com) erstellt

Dieses einfache Projekt wurde von einer selbstausgleichenden Plattform inspiriert, die Feedback vom Beschleunigungssensor übernimmt. Schau es dir an, falls du es noch nicht getan hast.

Das Projekt verwendet den Arduino UNO - einen einfach zu bedienenden Mikrocontroller, den Sie von Online-Shopping-Websites erhalten können! In diesem anweisbaren zeige ich, wie Sie Ihre eigene programmierbare Kippplattform herstellen können - vom Designprozess über die Beschaffung von Teilen, 3D-Druckdateien, Montage und Programmierung. Bleiben Sie dran und gehen wir weiter!

Schritt 1: Erforderliche Komponenten und 3D-gedruckte Teile

Erforderliche Komponenten und 3D-gedruckte Teile
Erforderliche Komponenten und 3D-gedruckte Teile
Erforderliche Komponenten und 3D-gedruckte Teile
Erforderliche Komponenten und 3D-gedruckte Teile
Erforderliche Komponenten und 3D-gedruckte Teile
Erforderliche Komponenten und 3D-gedruckte Teile

Die Liste der für das Projekt verwendeten Komponenten:

1. Arduino UNO-Mikrocontroller.

2. Breadboard mit Überbrückungsdrähten.

3. Eine Kiste.

4. Kreisförmige Plattform

5. Labyrinth.

6. Links - 3 Nein

7. A Basis für die Montage von drei Servos.

8. Gyro-/Beschleunigungssensor-Sensor. (MPU6050)

9,1 mm² Drähte (500 cm) - 4 Stück

10. Stahlkugeln mit 3 mm Durchmesser.

Die meisten für das Projekt verwendeten Teile sind 3D-gedruckt und ich habe die stl beigefügt. druckfertige Dateien.

Montieren Sie alle Teile wie in den Abbildungen gezeigt. Das Labyrinth ist heiß auf die kreisförmige Plattform geklebt, um wie auf dem Bild auszusehen. Die drei Servos sollten auf die 3D-gedruckte Basis, die auf dem Deckel der Box montiert ist, heiß geklebt werden. Die Box enthält das Arduino UNO und das Breadboard, die wie in der Abbildung gezeigt zusammengebaut sind. Das Steckbrett-Setup wird im nächsten Schritt besprochen.

Nach dem Zusammenbau sollte der endgültige Prototyp wie auf dem letzten Bild aussehen.

Schritt 2: Breadboard-Setup

Breadboard-Setup
Breadboard-Setup
Breadboard-Setup
Breadboard-Setup
Breadboard-Setup
Breadboard-Setup

Nach der Montage werden Arduino, Beschleunigungssensor, Servos wie im Folgenden beschrieben angeschlossen.

Die positiven und negativen Schienen auf dem Steckbrett sind jeweils mit 5V und GND von Arduino verbunden. Der Sensor wird mit den halben Meter Drähten, die an den Sensor gelötet werden sollen, mit dem Arduino verbunden, so dass die VCC- und GND-Pins des Sensors mit den +ve- und -ve-Schienen auf dem Steckbrett verbunden werden. Die SCL- und SDA-Pins des Sensors werden mit den analogen Pins A5 und A4 von Arduino verbunden. Die PWM-Pins der drei Servos sind mit 2, 3, 4 Pins des Arduino verbunden und die +ve- und -ve-Pins aller Servos sind mit den +ve- und -ve-Schienen des Steckbretts verbunden. damit sind unsere Verbindungen fertig.

Schritt 3: Code für das Projekt

Sie können die MPU6050- und Servo-Bibliotheken aus dem Internet herunterladen und für das Projekt verwenden. Kompilieren Sie den folgenden Code und laden Sie ihn auf den Arduino hoch und das Projekt ist fertig. Neigen Sie den Sensor und Sie können sehen, wie sich das Labyrinth in die gleiche Richtung neigt! Es dauert einige Zeit, das Rätsel zu lösen, da es ein wenig herausfordernd ist, aber es macht Spaß, damit zu spielen.

#enthalten

#enthalten

#enthalten

Servo-Servo1;

Servo-Servo2;

Servo-Servo3;

MPU6050-Sensor;

int servoPos1=90;

int servoPos2=90;

int servoPos3=90;

int16_t ax, ay, az;

int16_t gx, gy, gz;

Leere Einrichtung ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.attach (4);

Draht.beginnen ();

Serieller Anfang (9600);

}

Leere Schleife ()

{

sensor.getMotion6 (&ax, &ay, &az, &gx, &gy, &gz);

ax = Karte (ax, -17000, 17000, 0, 180);

ay = Karte (ay, -17000, 17000, 0, 180);

Serial.print ("ax=");

Seriendruck (Axt);

Serial.print (" ay = ");

Serial.println (ay);

if (ax < 80 && ay < 80){

Servo1.write (servoPos1++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

wenn (ax 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2++);

Servo3.write (servoPos3--); }

if (ax > 120 && ay > 0){

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3++); }

wenn (ax == 90 && ay == 90){

Servo1.write(0);

Servo2.write(0);

Servo3.write(0);

}

}

Empfohlen: