драйвер для гироскопа

bkmz
Offline
Зарегистрирован: 11.07.2015

Возможно ли на arduino создать собственный джостик(на гироскопе) и управлять персонажем в играх или же моделями в симуляторах, то есть я вращаю рукой и к примеру самолёт в симуляторе наклоняется или поварачивает, можно это сделать через Serial соединение. Arduino с гироскопом готовы, программа на считывание данных с гироскопа тоже. Мне нужна помощь с программой для оптимизации показателей гироскопа в играх или каких либо программах(проще говоря драйвер). 

nevkon
Offline
Зарегистрирован: 20.01.2015

А в чем собственно проблема? Отработку лучше сделать в ардуине, а на PC передавать уже любым доступным способом (не обязательно по сериал).

bkmz
Offline
Зарегистрирован: 11.07.2015

Вот именно в обработке и проблема, я не знаю как именно должны обрабатываться показания и как они должны подаваться на компьютер что-бы их понимали игры и программы.

nevkon
Offline
Зарегистрирован: 20.01.2015

Драйвера я не писал. Можете попробовать сделать эмуляцию любого джойстика. Возьмите джойстик, выясните его набор команд и укажите программе что используете тот джойстик. А дуина соответственно просто должна выдавать сигналы понятные драйверу.

bkmz
Offline
Зарегистрирован: 11.07.2015

То есть я просто беру любой пульт управления или джостик, устанавливаю его драйвер,  замеряю сигналы когда дёргаю за что-нибудь на этьом джостике и пишу программу на arduino что-бы она преобразовывала показания с гировкопа в сигналы как на джостике? Только как мне узнать нужные сигналы, не вскрывать же джостик что-бы измерить сопративление на датчиках. И каким лучше способом подавать значения на порт в компе(я знаю только Serial)?

bkmz
Offline
Зарегистрирован: 11.07.2015

Или всё таки подскажите как написать свой типо драйвер или же можно без него управлять какими либо программами или играми(просто подавая значения на порт в компе)?

nevkon
Offline
Зарегистрирован: 20.01.2015

Существуют джойстики подключаемые к ком порту, их протоколы даже снифить не обязательно, наверняка есть уже описанный в инете.

Например первая же ссылка в яндексе выдала: http://habrahabr.ru/post/147356/

bkmz
Offline
Зарегистрирован: 11.07.2015

Посылать на компьютер показания я посылаю, но только драйверы писать не умею. Может подскажите как сделать не эмуляцию клавы как сказанно на сайте который предложил nevkon, а именно как стики на пульте управления того же Futaba(я поварачиваю гироскоп, а компьютер думает что я врощаю джостиком на пульте).

 

 

вот код если что.

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
 #include <Wire.h>
#include "Wire.h"
 #include "I2Cdev.h"
 #include "MPU6050.h"
 const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба"
 
RF24 radio(9, 10); // CE, CSN
 MPU6050 accelgyro;
 
 int16_t ax, ay, az;
 int16_t gx, gy, gz;
 void setup() 
{ 
 Wire.begin();
 accelgyro.initialize();
Serial.begin(9600);
  
  radio.begin();
  delay(2);
  radio.setChannel(9); // канал (0-127)
    
    // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS
    // RF24_250KBPS на nRF24L01 (без +) неработает.
    // меньше скорость, выше чувствительность приемника.
  radio.setDataRate(RF24_1MBPS); 
   
    // мощьность передатчика, RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM,
  radio.setPALevel(RF24_PA_HIGH);   

  radio.openWritingPipe(pipe); // открываем трубу на передачу.
  delay(1000);
 } 
 
 void loop()        
 {    
  accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);       
  

 //Вывод всего
/* Serial.print("a/g:\t");
 Serial.print(ax); Serial.print("\t");
 Serial.print(ay); Serial.print("\t");
 Serial.print(az); Serial.print("\t");
 Serial.print(gx); Serial.print("\t");
 Serial.print(gy); Serial.print("\t");
*/    
int data[2];
data[0] = ax;
data[1] = ay;

  radio.write(&data, sizeof(data)); // отправляем данные и указываем сколько байт пакет
  Serial.println(data[1]);

  Serial.println(data[0]);
  
 }