Innholdsfortegnelse:

Gyrosensorkontrollert plattform for labyrintpuslespill: 3 trinn
Gyrosensorkontrollert plattform for labyrintpuslespill: 3 trinn

Video: Gyrosensorkontrollert plattform for labyrintpuslespill: 3 trinn

Video: Gyrosensorkontrollert plattform for labyrintpuslespill: 3 trinn
Video: Колоритная дама желает познакомиться ► 2 Прохождение Resident Evil Village 2024, Juli
Anonim
Gyrosensorkontrollert plattform for labyrintpuslespill
Gyrosensorkontrollert plattform for labyrintpuslespill

Denne instruerbare ble opprettet for å oppfylle prosjektkravet til Make -kurset ved University of South Florida (www.makecourse.com)"

Dette enkle prosjektet er inspirert av en selvbalanserende plattform som tar tilbakemelding fra akselerometersensoren. Sjekk det hvis du ikke allerede har gjort det.

Prosjektet bruker Arduino UNO - Enkel å bruke en mikrokontroller som du kan få fra nettbutikker! I denne instruksen vil jeg vise hvordan du kan lage din egen programmerbare vippeplattform - fra designprosessen til innkjøp av deler, 3D -utskriftsfiler, montering og programmering. Stå på og la oss gå videre!

Trinn 1: Nødvendige komponenter og 3D -trykte deler

Nødvendige komponenter og 3D -trykte deler
Nødvendige komponenter og 3D -trykte deler
Nødvendige komponenter og 3D -trykte deler
Nødvendige komponenter og 3D -trykte deler
Nødvendige komponenter og 3D -trykte deler
Nødvendige komponenter og 3D -trykte deler

Listen over komponentene som ble brukt til prosjektet:

1. Arduino UNO mikrokontroller.

2. brødbrett med jumper ledninger.

3. En boks.

4. Sirkulær plattform

5. Maze.

6. lenker - 3 nei

7. En base for montering av tre servoer.

8. Gyro/akselerometer sensor. (MPU6050)

9,1 kvm mm ledninger (500 cm) - 4 nei

10. 3 mm dia stålkuler.

De fleste delene som ble brukt til prosjektet er 3D -trykte og jeg har festet stl. filer klare til utskrift.

Monter alle delene som vist på figurene. Labyrinten er varmlimt til den sirkulære plattformen for å se ut som på bildet. De tre servoene skal varmlimes på den 3D -trykte basen som er montert på lokket på esken. Boksen inneholder Arduino UNO og Breadboard montert som vist på figuren. Oppsett av brødbrett vil bli diskutert i neste trinn.

Etter montering skal den siste prototypen se ut som på det siste bildet.

Trinn 2: Oppsett av brødbrett

Oppsett av brødbrett
Oppsett av brødbrett
Oppsett av brødbrett
Oppsett av brødbrett
Oppsett av brødbrett
Oppsett av brødbrett

Etter montering kobles Arduino, akselerometer sensor, servoer til som beskrevet i det følgende.

De positive og negative skinnene på brødbrettet er koblet til henholdsvis 5V og GND for Arduino. Sensoren er koblet til Arduino ved hjelp av halvmeterledningene som skal loddes til sensoren slik at VCC- og GND -pinnene på sensoren som skal kobles til henholdsvis +ve og -ve -skinner på brødbrettet. SCL- og SDA -pinnene på sensoren som skal kobles til A5 og A4 analoge pinner på Arduino. PWM -pinnene til de tre servoene er koblet til henholdsvis 2, 3, 4 pinner på Arduino og +ve og -ve pinnene til alle servoene er koblet til +ve og -ve -skinnene på brødbrettet. Med dette er forbindelsene våre gjort.

Trinn 3: Kode for prosjektet

du kan laste ned MPU6050- og Servobibliotekene fra internett og bruke det til prosjektet. Kompiler og last opp følgende kode til Arduino og prosjektet er klart. Vipp sensoren, og du kan se labyrinten vippe i samme retning! Det tar litt tid å løse gåten, siden det er litt utfordrende, men det er morsomt å leke med.

#inkludere

#inkludere

#inkludere

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;

ugyldig oppsett ()

{

Servo1. Fest (2);

Servo2. Fest (3);

Servo3. Fest (4);

Wire.begin ();

Serial.begin (9600);

}

hulrom ()

{

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

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

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

Serial.print ("ax =");

Serial.print (øks);

Serial.print ("ay =");

Serial.println (ay);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

hvis (øks 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

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

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3 ++); }

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

Servo1.write (0);

Servo2.write (0);

Servo3.write (0);

}

}

Anbefalt: