Índice:

Plataforma controlada por giroscópio para quebra-cabeça de labirinto: 3 etapas
Plataforma controlada por giroscópio para quebra-cabeça de labirinto: 3 etapas

Vídeo: Plataforma controlada por giroscópio para quebra-cabeça de labirinto: 3 etapas

Vídeo: Plataforma controlada por giroscópio para quebra-cabeça de labirinto: 3 etapas
Vídeo: PATO DIABÓLICO! LABIRINTO DO TERROR *dark deception* 2024, Julho
Anonim
Plataforma controlada por giroscópio para quebra-cabeça de labirinto
Plataforma controlada por giroscópio para quebra-cabeça de labirinto

Este instrutível foi criado em cumprimento ao requisito do projeto do curso Make na University of South Florida (www.makecourse.com)"

Este projeto simples é inspirado em uma plataforma de autobalanceamento que recebe feedback do sensor do acelerômetro. Verifique se você ainda não o fez.

O projeto usa o Arduino UNO - um microcontrolador fácil de usar que você pode obter em sites de compras online! Neste instrutível, mostrarei como você pode fazer sua própria plataforma de inclinação programável - desde o processo de design até o fornecimento de peças, arquivos de impressão 3D, montagem e programação. Continue e vamos seguir em frente!

Etapa 1: Componentes necessários e peças impressas em 3D

Componentes necessários e peças impressas em 3D
Componentes necessários e peças impressas em 3D
Componentes necessários e peças impressas em 3D
Componentes necessários e peças impressas em 3D
Componentes necessários e peças impressas em 3D
Componentes necessários e peças impressas em 3D

A lista dos componentes usados para o projeto:

1. Microcontrolador Arduino UNO.

2. Prancha com fios de jumper.

3. Uma caixa.

4. Plataforma circular

5. Labirinto.

6. Ligações - 3 não

7. A Base para montagem de três servos.

8. Sensor giroscópico / acelerômetro. (MPU6050)

Fios de 9,1sq mm (500 cm) - 4 n ° s

10. Esferas de aço de 3 mm de diâmetro.

A maioria das peças usadas para o projeto são impressas em 3D e anexei o stl. arquivos prontos para impressão.

Monte todas as peças conforme mostrado nas figuras. O labirinto é colado a quente à plataforma circular para ter a aparência da foto. Os três servos devem ser colados a quente na base impressa em 3D que está montada na tampa da caixa. A caixa contém o Arduino UNO e o breadboard montados conforme mostrado na figura. A configuração da placa de ensaio será discutida na próxima etapa.

Após a montagem, o protótipo final deve ter a aparência da última foto.

Etapa 2: configuração da placa de ensaio

Configuração da placa de ensaio
Configuração da placa de ensaio
Configuração da placa de ensaio
Configuração da placa de ensaio
Configuração da placa de ensaio
Configuração da placa de ensaio

Após a montagem, o Arduino, o sensor do acelerômetro e os servos são conectados conforme descrito a seguir.

Os trilhos positivo e negativo na placa de ensaio são conectados a 5V e GND do Arduino, respectivamente. O sensor é conectado ao Arduino usando os fios de meio metro que devem ser soldados ao sensor de forma que os pinos VCC e GND do sensor sejam conectados aos trilhos + ve e -ve na placa de ensaio, respectivamente. Os pinos SCL e SDA do sensor devem ser conectados aos pinos analógicos A5 e A4 do Arduino. Os pinos PWM dos três servos são conectados a 2, 3, 4 pinos do Arduino respectivamente e os pinos + ve e -ve de todos os servos são conectados aos trilhos + ve e -ve da placa de ensaio. com isso, nossas conexões são feitas.

Etapa 3: Código para o projeto

você pode baixar as bibliotecas MPU6050 e Servo da internet e usá-las para o projeto. Compile e carregue o seguinte código para o Arduino e o projeto está pronto. Incline o sensor e você verá o labirinto se inclinando na mesma direção! Leva algum tempo para resolver o quebra-cabeça, pois é um pouco desafiador, mas é divertido de jogar.

#incluir

#incluir

#incluir

Servo Servo1;

Servo Servo2;

Servo Servo3;

Sensor MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t ax, 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);

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

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

Serial.print ("ax =");

Serial.print (ax);

Serial.print ("ay =");

Serial.println (ay);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

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

}

}

Recomendado: