Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 22
  1. #1
    Продвинутый
    Регистрация
    08.09.2009
    Возраст
    42
    Сообщений
    236
    Вес репутации
    235

    По умолчанию Управление магнитолой Alpine с помощью arduino

    Думаю будет полезно кому нибудь. http://www.mp3car.com/vbulletin/inpu...ol-pinout.html

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,382
    Вес репутации
    10

    По умолчанию Re: Управление магнитолой Alpine с помощью Carduino

    Перенес код для Arduino сюда
    PHP код:
    #define CHECK_MS 5
    #define DOUBLE_MS 400
    #define HOLD_MS 1200

    #define NO_B 839 //nothing pressed
    #define MODE_B 662 // MODE
    #define NXTU_B 509 // NEXT UP
    #define NXTD_B 380 // NEXT DOWN
    #define MUTE_B 273 // MUTE
    #define VOLU_B 180 // VOLUME UP
    #define VOLD_B 105 // VOLUME DOWN

    #define alpPin 7

    boolean volUp[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,11,1,0,1,1,0,1,11,1,0,1,0,1,1,01,1,0,1,0,1,0,1};
    boolean volDn[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,10,1,1,0,1,1,0,11,1,1,1,0,1,1,01,1,0,1,0,1,0,1};
    boolean mute[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,11,0,1,0,1,1,0,11,1,1,0,1,1,1,01,1,0,1,0,1,0,1};
    boolean pstUp[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,11,0,1,0,1,0,1,11,1,1,0,1,1,1,10,1,0,1,0,1,0,1};
    boolean pstDn[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,10,1,0,1,0,1,0,11,1,1,1,1,1,1,10,1,0,1,0,1,0,1};
    boolean source[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,11,0,1,1,0,1,1,11,1,0,1,1,0,1,10,1,0,1,0,1,0,1};
    boolean trkUp[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,11,0,1,1,1,0,1,11,1,0,1,1,0,1,01,1,0,1,0,1,0,1};
    boolean trkDn[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,10,1,0,1,1,1,0,11,1,1,1,1,0,1,01,1,0,1,0,1,0,1};
    boolean power[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,10,1,1,1,0,1,1,11,1,1,0,1,0,1,10,1,0,1,0,1,0,1};
    boolean entPlay[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,10,1,0,1,0,1,1,11,1,1,1,1,1,0,10,1,0,1,0,1,0,1};
    boolean bandProg[48] = {1,1,0,1,0,1,1,11,1,0,1,1,0,1,11,0,1,0,1,0,1,10,1,1,0,1,0,1,11,1,1,1,0,1,1,10,1,0,1,0,1,0,1};

    boolean spFlag 0;
    boolean dpFlag 0;
    boolean hpFlag 0;

    int button 0
    int spbutton 0;
    /*
    0-none
    1-mode
    2-track +
    3-track -
    4-mute
    5-vol+
    6-vol-
    */

    void setup() {
    Serial.begin(9600);
    pinMode(7OUTPUT);

    }

    void loop() {
    static 
    unsigned long oldTime 0;
    int switchStatus 0;
    if (
    millis() >= oldTime CHECK_MS) {
    oldTime millis();
    switchStatus CheckSwitch();

    if (
    switchStatus == 0) {
    //no button press

    } else if (switchStatus == 1) {
    // single press
    switch (spbutton) {
    case 
    0// no butto, why are wh here
    break;
    case 
    1// mode
    modeSend();
    break;
    case 
    2// next up
    trkUpSend();
    break;
    case 
    3// next down
    trkDnSend();
    break;
    case 
    4// mute
    muteSend();
    break;
    case 
    5// vol up
    volUpSend();
    break;
    case 
    6// vol down
    volDnSend();
    break;

    } else if (
    switchStatus == 2) {
    //double press
    switch (spbutton) {
    case 
    0// no butto, why are wh here
    break;
    case 
    1// mode
    sourceSend();
    break;
    case 
    2// next up
    trkUpSend();
    break;
    case 
    3// next down
    trkDnSend();
    break;
    case 
    4// mute
    muteSend();
    break;
    case 
    5// vol up
    volUpSend();
    break;
    case 
    6// vol down
    volDnSend();
    break;

    } else if (
    switchStatus == 3) {
    //hold
    switch (spbutton) {
    case 
    0// no butto, why are wh here
    break;
    case 
    1// mode
    modeSend();
    break;
    case 
    2// next up
    trkUpSend();
    break;
    case 
    3// next down
    trkDnSend();
    break;
    case 
    4// mute
    muteSend();
    break;
    case 
    5// vol up
    volUpSend();
    break;
    case 
    6// vol down
    volDnSend();
    break;



    }
    }

    // Service routine called by a timer interrupt
    int CheckSwitch() {
    static 
    uint16_t State 0// Current debounce status
    static int curTime 0;

    State=(State<<1) | !RawKeyPressed() | 0xe000;
    if (!
    spFlag) {
    if (
    hpFlag) {
    if (
    State == 0xe000) {
    return 
    3;
    } else {
    hpFlag 0;
    }
    }
    if (
    State==0xf000) {
    spFlag 1;
    hpFlag 1;
    dpFlag 1;
    curTime 0;
    spbutton button;
    return 
    0;
    }

    if (
    hpFlag && State != 0xe000) {
    hpFlag 0;
    }
    if (
    spFlag && hpFlag && curTime HOLD_MS/CHECK_MS) {
    spFlag 0;
    dpFlag 0;
    return 
    3;
    } else if (
    spFlag && dpFlag && State == 0xf000 && curTime DOUBLE_MS) {
    spFlag 0;
    hpFlag 0;
    dpFlag 0;
    return 
    2;
    } else if (
    spFlag && !hpFlag && curTime DOUBLE_MS) {
    spFlag 0;
    hpFlag 0;
    dpFlag 0;
    return 
    1;
    } else {
    curTime curTime CHECK_MS;
    return 
    0;
    }
    }

    boolean RawKeyPressed() {
    int anaPin 0;
    anaPin analogRead(0);
    if (
    anaPin NO_B 20) {
    button 0;
    return 
    0;
    } else if (
    anaPin MODE_B 20 && anaPin MODE_B 20 ) {
    button 1;
    return 
    1;
    } else if (
    anaPin NXTU_B 20 && anaPin NXTU_B 20 ) {
    button 2;
    return 
    1;
    } else if (
    anaPin NXTD_B 20 && anaPin NXTD_B 20 ) {
    button 3;
    return 
    1;
    } else if (
    anaPin MUTE_B 20 && anaPin MUTE_B 20 ) {
    button 4;
    return 
    1;
    } else if (
    anaPin VOLU_B 20 && anaPin VOLU_B 20 ) {
    button 5;
    return 
    1;
    } else if (
    anaPin VOLD_B 20 ) {
    button 6;
    return 
    1;
    } else {
    button 0;
    return 
    0;
    }
    }

    //-----------SOURCE------------------
    void sourceSend() {
    //first send 8ms high
    digitalWrite(alpPinHIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPinLOW);
    delayMicroseconds(4500);

    for (
    int i 0<= 47i++) {
    //send bit for 0.5ms
    if (source[i] == ) {
    digitalWrite(alpPinHIGH);
    } else {
    digitalWrite(alpPinLOW);

    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPinLOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPinLOW);
    delay(41); 
    }


    //---------MODE-----------------------------------------------
    void modeSend() {
    //first send 8ms high
    digitalWrite(alpPinHIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPinLOW);
    delayMicroseconds(4500);

    for (
    int i 0<= 47i++) {
    //send bit for 0.5ms
    if (entPlay[i] == ) {
    digitalWrite(alpPinHIGH);
    } else {
    digitalWrite(alpPinLOW);

    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPinLOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPinLOW);
    delay(41); 
    }


    //---------NEXT UP-----------------------------------------------
    void trkUpSend() {
    //first send 8ms high
    digitalWrite(alpPinHIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPinLOW);
    delayMicroseconds(4500);

    for (
    int i 0<= 47i++) {
    //send bit for 0.5ms
    if (trkUp[i] == ) {
    digitalWrite(alpPinHIGH);
    } else {
    digitalWrite(alpPinLOW);

    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPinLOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPinLOW);
    delay(41); 
    }

    //---------NEXT DOWN----------------------------------------------
    void trkDnSend() {
    //first send 8ms high
    digitalWrite(alpPinHIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPinLOW);
    delayMicroseconds(4500);

    for (
    int i 0<= 47i++) {
    //send bit for 0.5ms
    if (trkDn[i] == ) {
    digitalWrite(alpPinHIGH);
    } else {
    digitalWrite(alpPinLOW);

    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPinLOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPinLOW);
    delay(41); 
    }


    //---------MUTE---------------------------------------------------
    void muteSend() {
    //first send 8ms high
    digitalWrite(alpPinHIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPinLOW);
    delayMicroseconds(4500);

    for (
    int i 0<= 47i++) {
    //send bit for 0.5ms
    if (mute[i] == ) {
    digitalWrite(alpPinHIGH);
    } else {
    digitalWrite(alpPinLOW);

    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPinLOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPinLOW);
    delay(41); 
    }

    //---------VOL UP-----------------------------------------------
    void volUpSend() {
    //first send 8ms high
    digitalWrite(alpPinHIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPinLOW);
    delayMicroseconds(4500);

    for (
    int i 0<= 47i++) {
    //send bit for 0.5ms
    if (volUp[i] == ) {
    digitalWrite(alpPinHIGH);
    } else {
    digitalWrite(alpPinLOW);

    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPinLOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPinLOW);
    delay(41); 
    }


    //---------VOL DOWN-----------------------------------------------
    void volDnSend() {
    //first send 8ms high
    digitalWrite(alpPinHIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPinLOW);
    delayMicroseconds(4500);

    for (
    int i 0<= 47i++) {
    //send bit for 0.5ms
    if (volDn[i] == ) {
    digitalWrite(alpPinHIGH);
    } else {
    digitalWrite(alpPinLOW);

    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPinLOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPinLOW);
    delay(41); 

    Подключить вывод разьема Signal нужно к выводу D7 Arduino Nano
    Нажмите на изображение для увеличения. 

Название:	alpine.jpg 
Просмотров:	2966 
Размер:	71.7 Кб 
ID:	12737
    Последний раз редактировалось Chip; 21.03.2017 в 03:39.

  3. #3
    Продвинутый
    Регистрация
    19.02.2010
    Возраст
    46
    Сообщений
    244
    Вес репутации
    230

    По умолчанию Re: Управление магнитолой Alpine с помощью Carduino

    кто бы еще кларионовский протокол вскрыл бы

  4. #4
    Пользователь
    Регистрация
    12.02.2008
    Сообщений
    52
    Вес репутации
    217

    Радость Re: Управление магнитолой Alpine с помощью Carduino

    и тач алпайновского монитора.

  5. #5
    Гуру Аватар для (vS)
    Регистрация
    18.06.2007
    Возраст
    46
    Сообщений
    1,981
    Вес репутации
    692

    По умолчанию Re: Управление магнитолой Alpine с помощью Carduino

    делайте заказы
    автоMOBILEвый моDDEр
    мой карпутер второй очередной

  6. #6
    Пользователь
    Регистрация
    13.06.2009
    Сообщений
    38
    Вес репутации
    198

    По умолчанию Re: Управление магнитолой Alpine с помощью Carduino

    Цитата Сообщение от (vS) Посмотреть сообщение
    делайте заказы
    а усилками алпайновскими тоже можно управлять?такими типа MRD-M605 и проц алпайновский есть с Ai-net как сделать управление им?что для этого нужно?
    Последний раз редактировалось ewgen1; 25.06.2010 в 12:34.

  7. #7
    Гуру Аватар для (vS)
    Регистрация
    18.06.2007
    Возраст
    46
    Сообщений
    1,981
    Вес репутации
    692

    По умолчанию Re: Управление магнитолой Alpine с помощью Carduino

    теоретически можно всё

    заказы на изготовление а не на покупку
    автоMOBILEвый моDDEр
    мой карпутер второй очередной

  8. #8
    Новичок Аватар для nebo20031
    Регистрация
    21.04.2010
    Возраст
    42
    Сообщений
    17
    Вес репутации
    183

    По умолчанию Re: Управление магнитолой Alpine с помощью Carduino

    А магнитолой mitsubishi lancer X возможно?

  9. #9
    Пользователь
    Регистрация
    13.06.2009
    Сообщений
    38
    Вес репутации
    198

    По умолчанию Re: Управление магнитолой Alpine с помощью Carduino

    а усилками алпайновскими тоже можно управлять?такими типа MRD-M605 и проц алпайновский есть с Ai-net как сделать управление им?что для этого нужно?

  10. #10
    Гуру Аватар для (vS)
    Регистрация
    18.06.2007
    Возраст
    46
    Сообщений
    1,981
    Вес репутации
    692

    По умолчанию Re: Управление магнитолой Alpine с помощью Carduino

    вам же уже ответили выше?
    автоMOBILEвый моDDEр
    мой карпутер второй очередной

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •