Índice:
- Etapa 1: Het Materiaal
- Etapa 2: De Bekabeling
- Etapa 3: Bibliotecas 1
- Etapa 4: Bibliotecas 2
- Etapa 5: De Code
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Een handschoen die je kan gebruiken als motion controller para atiradores on-rail. De gimmick van dit project é dat alles motion control is, inclusive het schieten. (Je schiet door te "finger bangen")
Etapa 1: Het Materiaal
Het materiaal dat je gaat nodig hebben is vrij simpel. 1x Arduino pro micro do giroscópio Arduino Leonardo1x MPU6050
4x kabels
Etapa 2: De Bekabeling
Zoals je in het schema in de afbeelding ziet is bekabeling super simpel. MPU VCC> Arduino VCCMPU ground> Arduino groundMPU SCL> Pino 3MPU SDA> Pino 2
Etapa 3: Bibliotecas 1
Veja o projeto heb je een paar bibliotecas personalizadas nodig van deze link:
Baixe o arquivo ZIP via "Clonar ou baixar" knop rechts bovenaan.
Etapa 4: Bibliotecas 2
Abra o arquivo Zip e clique no mapa "Arduino". En uit deze Arduino map wil je de mapjes "I2Cdev" en "MPU6050" pakken en in je Arduino library zetten (Program Files> Arduino> libraries)
Etapa 5: De Code
#incluir
#include #include #include #include
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int16_t accx, accy, accz; int vx, vy; ângulo de flutuação;
// código para suavização inputint readIndex = 0; const int numReadings = 20; int angleReadings [numReadings]; total int = 0; float averageAngle = 0,0;
int oldZ = 0;
int newZ = 0;
void setup () {Serial.begin (115200); Wire.begin (); Mouse.begin (); mpu.initialize (); if (! mpu.testConnection ()) {while (1); }
para (int thisReading = 0; thisReading <numReadings; thisReadings ++) {angleReadings [thisReading] = 0; }}
void loop () {
total = total - angleReadings [readIndex];
angleReadings [readIndex] = ângulo; total = total + ânguloReadings [índice de leitura]; readIndex = readIndex + 1; if (índice de leitura> = leituras numéricas) {índice de leitura = 0; }
if (gz> 30000) {Serial.println ("Bang"); Mouse.click (); // Atire movendo a arma para trás (batendo o dedo)}
// accx, accy, accz;
mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz); mpu.getAcceleration (& accx, & accy, & accz); //Serial.println(gy); // Serial.println (ângulo);
oldZ = newZ;
vx = (gx + 1000) / 150; vy = - (gz - 200) / 150; Mouse.move (vx, vy); atraso (20);
Este código stukje heeft een beetje uitleg nodig omdat je het waarschijnlijk een klein beetje moet aanpassen.
Wat er waarschijnlijk gaat gebeuren é dat je cursor uit zichzelf sobre je scherm gaat bewegen (links van rechts naar, van boven naar onder de diagonaal) en dit stukje code zorgt er voor dat je curor stil blijft staan als je geen input geeft. Je moet de values in in in "gx + 1000" en "gz - 200" aanpassen totdat je het resultaat krijgt dat je wil en ik denk dat de valores die wil nodig hebt afhankelijk zijn van je scherm resolutie. Als de cursor uit zichzelf van rechts naar links beweegd wil je "gx + x" aanpassen. Als de cursor uit zichzelf van boven naar onder beweegd wil je de "gz - x" aan passen. Als het diagonaal beweegd, dan kies je een van de twee valores om aan te passen totdat hij nog maar sobre een as beweegd en dan pas je de andere aan.
Serial.print ("gx =");
Serial.print (gx); Serial.print ("| gz ="); Serial.print (gz); Serial.print ("| gy ="); Serial.println (gy); if (gx> 32000) {Serial.println ("Movimente para a direita"); // Recarrega ao mover a arma para a direita Keyboard.write ('r'); atraso (250); } Serial.print ("accx ="); Serial.print (accx); Serial.print ("| accy ="); Serial.print (accy); Serial.print ("| accz ="); Serial.println (accz); // trabalhando // ângulo = atan2 ((float) (ay - 16384), (float) (ax - 16384)) * (180.0 / PI) * -1; ângulo = atan2 ((flutuante) ay, (flutuante) ~ ax) * (180,0 / PI); // ângulo de flutuação = atan2 ((flutuação) ay, (flutuação) -ax) * (180.0 / PI); //Serial.println(averageAngle); }
Recomendado:
Gimbal de controle de movimento: 12 etapas
Controle de movimento Gimbal: Olá a todos, Meu nome é Harji Nagi. Atualmente, sou um aluno do segundo ano estudando engenharia eletrônica e de comunicação do Pranveer Singh Institute Of Technology, Kanpur (UP). Tenho um grande interesse em robótica, arduino, inteligência artificial e
Controle de gestos simples - controle seus brinquedos RC com o movimento de seu braço: 4 etapas (com imagens)
Controle de gestos simples - controle seus brinquedos RC com o movimento de seu braço: Bem-vindo ao meu 'ible' # 45. Um tempo atrás eu fiz uma versão RC totalmente funcional do BB8 usando peças de Lego Star Wars … https://www.instructables.com/id/Whats-Inside-My-R…Quando vi como era legal a banda de força feita por Sphero, pensei: " Ok, eu c
Controle de movimento com Raspberry Pi e LIS3DHTR, acelerômetro de 3 eixos, usando Python: 6 etapas
Controle de movimento com Raspberry Pi e LIS3DHTR, acelerômetro de 3 eixos, usando Python: a beleza nos cerca, mas normalmente, precisamos estar caminhando em um jardim para conhecê-la. - RumiComo o grupo educado que parecemos ser, investimos a maior parte de nossa energia trabalhando antes de nossos PCs e telefones celulares. Portanto, frequentemente deixamos nosso bem
Controle deslizante de controle de movimento para trilho de lapso de tempo: 10 etapas (com imagens)
Controle deslizante de controle de movimento para trilho de lapso de tempo: Este instrutível explica como motorizar um trilho de lapso de tempo usando um motor de passo acionado por um Arduino. Vamos nos concentrar principalmente no Controlador de movimento que aciona o motor de passo, presumindo que você já tenha um trilho que deseja motorizar. Por exemplo, quando dis
Saída controlada por movimento - De uma luz com detecção de movimento: 6 etapas
Tomada controlada por movimento - a partir de uma luz com detecção de movimento: Imagine que você é um doce ou travessura indo para a casa mais assustadora do quarteirão. Depois de passar por todos os ghouls, fantasmas e cemitérios, você finalmente chega ao último caminho. Você pode ver o doce em uma tigela à sua frente! Mas de repente um gho