Përmbajtje:

Platforma e kontrolluar me sensorë gyro për enigmën labirint: 3 hapa
Platforma e kontrolluar me sensorë gyro për enigmën labirint: 3 hapa

Video: Platforma e kontrolluar me sensorë gyro për enigmën labirint: 3 hapa

Video: Platforma e kontrolluar me sensorë gyro për enigmën labirint: 3 hapa
Video: Он танцует на крыше. 💃💃 - Parkour Climb and Jump GamePlay 🎮📱 🇷🇺 2024, Nëntor
Anonim
Platforma e kontrolluar me sensorë Gyro për Puzzle Maze
Platforma e kontrolluar me sensorë Gyro për Puzzle Maze

Ky udhëzues u krijua në përmbushje të kërkesës së projektit të kursit Make në Universitetin e Floridës së Jugut (www.makecourse.com)"

Ky projekt i thjeshtë i frymëzuar nga një platformë vetë-balancuese që merr reagime nga sensori i përshpejtuesit. Kontrolloni nëse nuk e keni bërë tashmë.

Projekti përdor Arduino UNO - Lehtë për t'u përdorur një mikrokontrollues që mund të merrni nga faqet e internetit të blerjeve online! Në këtë udhëzues, unë do të tregoj se si mund të bëni platformën tuaj të programueshme të pjerrët - nga procesi i projektimit deri te marrja e pjesëve, skedarët e printimit 3D, montimi dhe programimi. Vazhdoni dhe le të ecim përpara!

Hapi 1: Komponentët e kërkuar dhe pjesët e printuara në 3D

Pjesët e kërkuara dhe pjesët e printuara në 3D
Pjesët e kërkuara dhe pjesët e printuara në 3D
Pjesët e kërkuara dhe pjesët e printuara në 3D
Pjesët e kërkuara dhe pjesët e printuara në 3D
Pjesët e kërkuara dhe pjesët e printuara në 3D
Pjesët e kërkuara dhe pjesët e printuara në 3D

Lista e përbërësve të përdorur për projektin:

1. Mikrokontrolluesi Arduino UNO.

2. Breadboard me tela bluzë.

3. Një kuti.

4. Platforma rrethore

5. Çmenduri.

6. Lidhje - 3 Jo

7. Një bazë për montimin e tre servos.

8. Sensori Gyro/Accelerometer. (MPU6050)

Tela 9.1sq mm (500cm) - 4 Jo

10. topa çeliku dia 3mm.

Shumica e pjesëve të përdorura për projektin janë të shtypura 3D dhe unë kam bashkangjitur stl. skedarë gati për printim.

Mblidhni të gjitha pjesët siç tregohet në figura. Labirinti është ngjitur nxehtësisht në platformën rrethore për tu dukur si në foto. Tre servot duhet të ngjiten në mënyrë të nxehtë në bazën e printuar 3D që është montuar në kapakun e kutisë. Kutia përmban Arduino UNO dhe Breadboard të montuar siç tregohet në figurë. Konfigurimi i bordit të bukës do të diskutohet në hapin tjetër.

Pas montimit, prototipi përfundimtar duhet të duket si në foton e fundit.

Hapi 2: Konfigurimi i tabelës së bukës

Konfigurimi i tabelës së bukës
Konfigurimi i tabelës së bukës
Konfigurimi i tabelës së bukës
Konfigurimi i tabelës së bukës
Konfigurimi i tabelës së bukës
Konfigurimi i tabelës së bukës

Pas montimit, sensori Arduino, Accelerometer, servos lidhen siç përshkruhet në vijim.

Binarët pozitivë dhe negativë në tabelën e bukës janë të lidhur përkatësisht me 5V dhe GND të Arduino. Sensori është i lidhur me Arduino duke përdorur telat gjysmë metër të cilët do të ngjiten në sensor në mënyrë që kunjat VCC dhe GND të sensorit të lidhen përkatësisht me binarët +ve dhe -ve në pjatën e bukës. Kunjat SCL dhe SDA të sensorit të lidhen me kunjat analoge A5 dhe A4 të Arduino. Kunjat PWM të tre servove janë të lidhur me 2, 3, 4 kunjat e Arduino përkatësisht dhe kunjat +ve dhe -ve të të gjithë servove janë të lidhur me binarët +ve dhe -ve të pjatës. me këtë, lidhjet tona janë bërë.

Hapi 3: Kodi për Projektin

mund të shkarkoni bibliotekat MPU6050 dhe Servo nga interneti dhe t'i përdorni për projektin. Përpiloni dhe ngarkoni kodin e mëposhtëm në Arduino dhe projekti është gati. Anojeni sensorin dhe mund të shihni që labirinti të anohet në të njëjtin drejtim! Duhet pak kohë për të zgjidhur enigmën pasi është pak sfiduese, por është argëtuese të luash me të.

#përfshi

#përfshi

#përfshi

Servo Servo1;

Servo Servo2;

Servo Servo3;

Sensor MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t sëpatë, ay, az;

int16_t gx, gy, gz;

void setup ()

{

Servo1.tash (2);

Servo2.attach (3);

Servo3.shtoj (4);

Wire.begin ();

Serial.filloj (9600);

}

lak void ()

{

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

ax = hartë (sëpatë, -17000, 17000, 0, 180);

ay = hartë (ay, -17000, 17000, 0, 180);

Serial.print ("ax =");

Serial.print (sëpatë);

Serial.print ("ay =");

Serial.println (ay);

nëse (sëpatë <80 && ay <80) {

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.shkruaj (servoPos3--); }

nëse (sëpata 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.shkruaj (servoPos3--); }

nëse (sëpatë> 120 && ay> 0) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.shkruaj (servoPos3 ++); }

nëse (ax == 90 && ay == 90) {

Servo1.shkruani (0);

Servo2.shkruaj (0);

Servo3.shkruani (0);

}

}

Recommended: