Indholdsfortegnelse:

Gyrosensorstyret platform til labyrintpuslespil: 3 trin
Gyrosensorstyret platform til labyrintpuslespil: 3 trin

Video: Gyrosensorstyret platform til labyrintpuslespil: 3 trin

Video: Gyrosensorstyret platform til labyrintpuslespil: 3 trin
Video: Сериал - "Сваты" (1-й сезон 1-я серия) фильм комедия для всей семьи 2024, November
Anonim
Gyrosensorstyret platform til labyrintpuslespil
Gyrosensorstyret platform til labyrintpuslespil

Denne instruerbare blev oprettet for at opfylde projektkravet til Make -kurset ved University of South Florida (www.makecourse.com)"

Dette enkle projekt inspireret af en selvbalancerende platform, der tager feedback fra accelerometersensoren. Tjek det ud, hvis du ikke allerede havde det.

Projektet bruger Arduino UNO - Let at bruge en mikrokontroller, som du kan få fra online shoppingwebsteder! I denne instruktive viser jeg, hvordan du kan lave din egen programmerbare vippeplatform - fra designprocessen til indkøb af dele, 3D -udskrivningsfiler, samling og programmering. Bliv ved, og lad os komme videre!

Trin 1: Nødvendige komponenter og 3D -printede dele

Nødvendige komponenter og 3D -printede dele
Nødvendige komponenter og 3D -printede dele
Nødvendige komponenter og 3D -printede dele
Nødvendige komponenter og 3D -printede dele
Nødvendige komponenter og 3D -printede dele
Nødvendige komponenter og 3D -printede dele

Listen over de komponenter, der bruges til projektet:

1. Arduino UNO mikrokontroller.

2. brødbræt med jumper ledninger.

3. En kasse.

4. cirkulær platform

5. Labyrint.

6. links - 3 nej'er

7. En base til montering af tre servoer.

8. Gyro/accelerometer sensor. (MPU6050)

9,1sq mm ledninger (500cm) - 4 nr

10. 3 mm dia stålkugler.

De fleste dele, der bruges til projektet, er 3D -printet, og jeg har vedhæftet stl. filer klar til udskrivning.

Saml alle delene som vist på figurerne. Labyrinten er varmlimet til den cirkulære platform for at se ud som på billedet. De tre servoer skal varmlimes på den 3D -trykte bund, der er monteret på æskens låg. Æsken indeholder Arduino UNO og Breadboard samlet som vist på figuren. Opbygningen af brødbrættet vil blive diskuteret i det næste trin.

Efter montering skal den endelige prototype se ud som på det sidste billede.

Trin 2: Opsætning af brødbræt

Opsætning af brødbræt
Opsætning af brødbræt
Opsætning af brødbræt
Opsætning af brødbræt
Opsætning af brødbræt
Opsætning af brødbræt

Efter montering tilsluttes Arduino, Accelerometer sensor, servoer som beskrevet i det følgende.

De positive og negative skinner på brødbrættet er forbundet til henholdsvis 5V og GND for Arduino. Sensoren er forbundet til Arduino ved hjælp af de halve meter ledninger, der skal loddes til sensoren, så VCC- og GND -benene på sensoren, der skal tilsluttes henholdsvis +ve og -ve skinner på brødbrættet. SCL- og SDA -benene på sensoren, der skal tilsluttes A5 og A4 analoge ben i Arduino. PWM -benene på de tre servoer er forbundet til henholdsvis 2, 3, 4 ben på Arduino og +ve og -ve benene på alle servoerne er forbundet til +ve og -ve skinner på brødbrættet. med dette er vores forbindelser færdige.

Trin 3: Kode til projektet

du kan downloade MPU6050- og Servobibliotekerne fra internettet og bruge det til projektet. Kompiler og upload følgende kode til Arduino, og projektet er klar. Vip sensoren, og du kan se labyrinten vippe i samme retning! Det tager lidt tid at løse gåden, da det er lidt udfordrende, men det er sjovt at lege med.

#omfatte

#omfatte

#omfatte

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 opsætning ()

{

Servo1. vedhæft (2);

Servo2. vedhæft (3);

Servo3. vedhæft (4);

Wire.begin ();

Serial.begin (9600);

}

void loop ()

{

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

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

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

Serial.print ("ax =");

Serial.print (ax);

Serial.print ("ay =");

Serial.println (ay);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

hvis (ax 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.skriv (0);

Servo2.write (0);

Servo3.write (0);

}

}

Anbefalede: