Показать сообщение отдельно
Старый 01.10.2013, 02:06   #180
xxoma
Пользователь
 
Регистрация: 13.05.2009
Возраст: 14
Город: Uzhgorod
Регион: Украина
Машина: Lancer 9
Сообщений: 58
xxoma is a glorious beacon of lightxxoma is a glorious beacon of lightxxoma is a glorious beacon of lightxxoma is a glorious beacon of lightxxoma is a glorious beacon of light
По умолчанию

Вот делаю прогу на основе https://github.com/ksksue/FTDriver/t...riverTutorial1 которая принимает данные с ик пульта с помощью ардуины по serial port и управляет Power Amp-ом и системной громкостью, пока что все недопиленое но работает. Так как это моя первая прога для Андроид то строго не судите, появиться время - доделаю.
Для работы нужно ардуину с подключеным инфракрасным приемником.
Заливаете в ардуину скетч типа этого
Код:
#include <IRremote.h>

int RECV_PIN = 13;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    digitalWrite(8,HIGH);
    
    
    if (results.value==0xFF906F) {//поменяйте на свой код
    //Serial.print(results.value, HEX);
    Serial.print(1);
    delay(100);
    }
     
    if (results.value==0xFFC23D) {//поменяйте на свой код
        Serial.print(2);
        delay(100);
    }
    if (results.value==0xFFA857) {//поменяйте на свой код
        Serial.print(3);
        delay(100);
    }
     
    if (results.value==0xFF02FD) {//поменяйте на свой код
      Serial.print(4);
        delay(100);
    }
    
    
      
    if (results.value==0xFF629D) {//ch+
        Serial.print(5);
        delay(100);
    }

    if (results.value==0xFF22DD) {//eq
        Serial.print(6);
        digitalWrite(A2,HIGH);
        delay(100);
        digitalWrite(A2,LOW);
    }
     if (results.value==0xFFE21D) {//ch-
        Serial.print(7);
        delay(100);
    }
     
    if (results.value==0xFFA25D) {//pause
        Serial.print(8);
        delay(100);
    }  
  irrecv.resume(); // Receive the next value
  digitalWrite(8,LOW);
  }
}
Меняете коды от пульта на свои. Прога принимает цифры от 1 до 8 делает соотвествующие действия.
VOL_UP_CODE = 2;
VOL_DOWN_CODE = 4;
PREV_CODE = 1;
NEXT_CODE = 3;
UP_CODE = 7;
DOWN_CODE = 5;
SHUFFLE ON/OFF= 6;
PLAY_PAUSE_CODE = 8;
Прога юзает Power Amp api поэтому с другими проигрывателями работать не будет, только громкость получиться регулировать. В планах сделать нормальный юзер интерфейс с возможностью самому выбирать нужное действие под конкретный код кнопки ик пульта. Прога запускает отдельный сервис после старта которого главное активити можно закрыть. Есть пока что не решенная проблема с запросом доступа к юсб девайсам, который даже после нажатия "больше не спрашивать" все равно после отключения/подключения otg спрашивает разрешения, поэтому кнопку Start Service надо нажимать несколько раз пока сервис не подконектиться к юсб сериал. Еще планирую в будущим прикрутить датчики температуры и выводить данные на виджет. Помощь разбирающихся людей приветсвуется. Если кому надо исходники то выложу, может совместными усилиями допилим
П.С. Тестировалось на нексус 7 с тимуровской прошивкой и Sams Galaxy S2.
Вложения
Тип файла: zip IRpowerAmp.zip (33.8 Кб, 373 просмотров)
xxoma вне форума   Ответить с цитированием