драйвер для гироскопа
- Войдите на сайт для отправки комментариев
Пнд, 13/07/2015 - 13:15
Возможно ли на arduino создать собственный джостик(на гироскопе) и управлять персонажем в играх или же моделями в симуляторах, то есть я вращаю рукой и к примеру самолёт в симуляторе наклоняется или поварачивает, можно это сделать через Serial соединение. Arduino с гироскопом готовы, программа на считывание данных с гироскопа тоже. Мне нужна помощь с программой для оптимизации показателей гироскопа в играх или каких либо программах(проще говоря драйвер).
А в чем собственно проблема? Отработку лучше сделать в ардуине, а на PC передавать уже любым доступным способом (не обязательно по сериал).
Вот именно в обработке и проблема, я не знаю как именно должны обрабатываться показания и как они должны подаваться на компьютер что-бы их понимали игры и программы.
Драйвера я не писал. Можете попробовать сделать эмуляцию любого джойстика. Возьмите джойстик, выясните его набор команд и укажите программе что используете тот джойстик. А дуина соответственно просто должна выдавать сигналы понятные драйверу.
То есть я просто беру любой пульт управления или джостик, устанавливаю его драйвер, замеряю сигналы когда дёргаю за что-нибудь на этьом джостике и пишу программу на arduino что-бы она преобразовывала показания с гировкопа в сигналы как на джостике? Только как мне узнать нужные сигналы, не вскрывать же джостик что-бы измерить сопративление на датчиках. И каким лучше способом подавать значения на порт в компе(я знаю только Serial)?
Или всё таки подскажите как написать свой типо драйвер или же можно без него управлять какими либо программами или играми(просто подавая значения на порт в компе)?
Существуют джойстики подключаемые к ком порту, их протоколы даже снифить не обязательно, наверняка есть уже описанный в инете.
Например первая же ссылка в яндексе выдала: http://habrahabr.ru/post/147356/
Посылать на компьютер показания я посылаю, но только драйверы писать не умею. Может подскажите как сделать не эмуляцию клавы как сказанно на сайте который предложил 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]); }