Sadržaj:

Platforma kontrolirana žiroskopom za slagalicu Maze: 3 koraka
Platforma kontrolirana žiroskopom za slagalicu Maze: 3 koraka

Video: Platforma kontrolirana žiroskopom za slagalicu Maze: 3 koraka

Video: Platforma kontrolirana žiroskopom za slagalicu Maze: 3 koraka
Video: Сексшоп адаптер ► 1 Прохождение The Legend of Zelda: Tears of the Kingdom 2024, Juli
Anonim
Platforma s kontroliranim žiroskopom za Maze Puzzle
Platforma s kontroliranim žiroskopom za Maze Puzzle

Ovo uputstvo je nastalo u skladu sa zahtjevima projekta Make kursa na Univerzitetu Južne Floride (www.makecourse.com)"

Ovaj jednostavan projekt inspiriran samo balansirajućom platformom koja uzima povratne informacije od senzora akcelerometra. Provjerite ako već niste.

Projekt koristi Arduino UNO - mikrokontroler jednostavan za korištenje koji možete nabaviti sa web stranica za online kupovinu! U ovom uputstvu pokazat ću kako možete napraviti vlastitu programabilnu platformu za naginjanje - od procesa projektiranja do nabavke dijelova, datoteka za 3D ispis, montaže i programiranja. Držite se i idemo naprijed!

Korak 1: Potrebne komponente i 3D štampani dijelovi

Potrebne komponente i 3D štampani dijelovi
Potrebne komponente i 3D štampani dijelovi
Potrebne komponente i 3D štampani dijelovi
Potrebne komponente i 3D štampani dijelovi
Potrebne komponente i 3D štampani dijelovi
Potrebne komponente i 3D štampani dijelovi

Spisak komponenti koje se koriste za projekat:

1. Arduino UNO mikrokontroler.

2. Bboardboard sa kratkospojnicima.

3. Kutija.

4. Kružna platforma

5. Labirint.

6. Linkovi - 3 ne

7. A Baza za montažu tri servo pogona.

8. Senzor žiroskopa/akcelerometra. (MPU6050)

9.1sq mm žice (500cm) - 4 br

10. Čelične kuglice promjera 3 mm.

Većina dijelova koji su korišteni za projekat su 3D štampani, a ja sam priložio stl. datoteke spremne za štampanje.

Sastavite sve dijelove kako je prikazano na slikama. Labirint je vruće zalijepljen na kružnu platformu kako bi izgledao kao na slici. Tri servo pogona treba vruće zalijepiti na 3D štampanu podlogu koja je montirana na poklopac kutije. Kutija sadrži Arduino UNO i Breadboard sastavljene kako je prikazano na slici. O postavljanju matične ploče raspravljat će se u sljedećem koraku.

Nakon montaže, konačni prototip trebao bi izgledati kao na posljednjoj slici.

Korak 2: Postavljanje Breadboard -a

Breadboard Setup
Breadboard Setup
Breadboard Setup
Breadboard Setup
Breadboard Setup
Breadboard Setup

Nakon montaže, Arduino, senzor akcelerometra, servo upravljači su povezani kako je opisano u nastavku.

Pozitivne i negativne šine na matičnoj ploči povezane su na 5V i GND Arduina. Senzor je spojen na Arduino pomoću žica od pola metra koje treba lemiti na senzor tako da se VCC i GND pinovi senzora spoje na +ve i -ve šine na matičnoj ploči. SCL i SDA pinovi senzora za povezivanje sa A5 i A4 analognim pinovima Arduina. PWM pinovi tri servo servera spojeni su na 2, 3, 4 pina Arduina, a +ve i -ve pinovi svih servo servo upravljača spojeni su na +ve i -ve šine na matičnoj ploči. ovim su naše veze uspostavljene.

Korak 3: Kôd za projekat

biblioteke MPU6050 i Servo možete preuzeti s interneta i koristiti ih za projekt. Sastavite i prenesite sljedeći kod na Arduino i projekt je spreman. Nagnite senzor i možete vidjeti kako se labirint naginje u istom smjeru! Za rješavanje zagonetke potrebno je neko vrijeme jer je malo izazovno, ali s njim se zabavno igrati.

#include

#include

#include

Servo Servo1;

Servo Servo2;

Servo Servo3;

MPU6050 senzor;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t sjekira, ay, az;

int16_t gx, gy, gz;

void setup ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.attach (4);

Wire.begin ();

Serial.begin (9600);

}

void loop ()

{

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

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

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

Serial.print ("ax =");

Serijski.tisak (sjekira);

Serial.print ("ay =");

Serial.println (ay);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

if (sjekira 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);

}

}

Preporučuje se: