Innehållsförteckning:

Gyrosensorstyrd plattform för labyrintpussel: 3 steg
Gyrosensorstyrd plattform för labyrintpussel: 3 steg

Video: Gyrosensorstyrd plattform för labyrintpussel: 3 steg

Video: Gyrosensorstyrd plattform för labyrintpussel: 3 steg
Video: Трактористы (комедия, реж. Иван Пырьев, 1939 г.) 2024, Juli
Anonim
Gyrosensorstyrd plattform för labyrintpussel
Gyrosensorstyrd plattform för labyrintpussel

Denna instruerbara skapades för att uppfylla projektkravet för Make -kursen vid University of South Florida (www.makecourse.com)"

Detta enkla projekt inspirerat av en självbalanserande plattform som tar feedback från accelerometersensorn. Kolla in det om du inte redan gjort det.

Projektet använder Arduino UNO - Lätt att använda en mikrokontroller som du kan få från online shopping webbplatser! I den här instruktören visar jag hur du kan skapa din egen programmerbara lutningsplattform - från designprocessen till inköp av delar, 3D -utskriftsfiler, montering och programmering. Fortsätt och låt oss gå vidare!

Steg 1: Komponenter som krävs och 3D -utskrivna delar

Komponenter som krävs och 3D -tryckta delar
Komponenter som krävs och 3D -tryckta delar
Komponenter som krävs och 3D -utskrivna delar
Komponenter som krävs och 3D -utskrivna delar
Komponenter som krävs och 3D -utskrivna delar
Komponenter som krävs och 3D -utskrivna delar

Listan över komponenter som används för projektet:

1. Arduino UNO mikrokontroller.

2. brödbräda med bygelkablar.

3. En låda.

4. cirkulär plattform

5. Maze.

6. Länkar - 3 Nej

7. En bas för montering av tre servon.

8. Gyro/accelerometer sensor. (MPU6050)

9,1 kvm trådar (500 cm) - 4 nr

10. 3 mm dia stålkulor.

De flesta delar som används för projektet är 3D -tryckta och jag har bifogat stl. filer redo för utskrift.

Montera alla delar som visas i figurerna. Labyrinten är limmad på den cirkulära plattformen för att se ut som på bilden. De tre servon ska varmlimas på den 3D -tryckta basen som är monterad på lådan på lådan. Lådan innehåller Arduino UNO och Breadboard monterade enligt bilden. Brädbrädans inställning kommer att diskuteras i nästa steg.

Efter montering ska den slutliga prototypen se ut som på den sista bilden.

Steg 2: Inställning av brödbräda

Inställning av brödbräda
Inställning av brödbräda
Inställning av brödbräda
Inställning av brödbräda
Inställning av brödbräda
Inställning av brödbräda

Efter montering ansluts Arduino, Accelerometer sensor, servon enligt beskrivningen i det följande.

De positiva och negativa skenorna på panelen är anslutna till 5V respektive GND för Arduino. Sensorn är ansluten till Arduino med hjälp av de halvmeters trådar som ska lödas till sensorn så att VCC- och GND -stiften på sensorn som ska anslutas till +ve och -ve -skenor på brödbrädan respektive. SCL- och SDA -stiften på sensorn som ska anslutas till A5- och A4 -analoga stiften på Arduino. PWM -stiften på de tre servon är anslutna till 2, 3, 4 stift på Arduino respektive och +ve och -ve stiften på alla servon är anslutna till +ve och -ve skenorna på brödbrädet. med detta är våra anslutningar klara.

Steg 3: Kod för projektet

du kan ladda ner MPU6050- och Servobiblioteken från internet och använda det för projektet. Kompilera och ladda upp följande kod till Arduino och projektet är klart. Luta sensorn och du kan se labyrinten luta åt samma håll! Det tar lite tid att lösa pusslet eftersom det är lite utmanande men det är roligt att leka med.

#omfatta

#omfatta

#omfatta

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;

void setup ()

{

Servo1. fäst (2);

Servo2. bifoga (3);

Servo3. fäst (4);

Wire.begin ();

Serial.begin (9600);

}

void loop ()

{

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

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

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

Serial.print ("ax =");

Serial.print (ax);

Serial.print ("ay =");

Serial.println (ay);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

om (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 ++); }

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

Servo1.write (0);

Servo2.write (0);

Servo3.write (0);

}

}

Rekommenderad: