Page 2 of 4 FirstFirst 1234 LastLast
Results 11 to 20 of 32

Thread: Need Alpine wired remote control pinout.

  1. #11
    Newbie
    Join Date
    Jul 2009
    Posts
    3
    Wow thank you so much for that information!

    Any chance you would share your source code?

  2. #12
    Newbie
    Join Date
    Apr 2009
    Posts
    4
    FordNoMore thanks heaps for the alpine codes and the guide.

    i ended up programing an arduino to take the input signal from my commodore steering wheel buttons and sending them through to the alpine head unit. it all works a charm but there are a few commands that i wish i knew the alpine codes for.

    at the moment all the buttons do what they say but a double press on mode is source on the alpine.

    i will attach my arduino code soon.

  3. #13
    Newbie
    Join Date
    Jul 2009
    Posts
    3
    Quote Originally Posted by JC_JC View Post
    FordNoMore thanks heaps for the alpine codes and the guide.

    i ended up programing an arduino to take the input signal from my commodore steering wheel buttons and sending them through to the alpine head unit. it all works a charm but there are a few commands that i wish i knew the alpine codes for.

    at the moment all the buttons do what they say but a double press on mode is source on the alpine.

    i will attach my arduino code soon.
    I would love to see your code and how you got this to work.

  4. #14
    Newbie
    Join Date
    Apr 2009
    Posts
    4
    //please excuse the lack of comments
    // this works with a simgle button and has the correct timings
    // adding the send of signals to stereo.. simulating by sending to serial
    #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,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 1,1,0,1,1,0,1,1, 1,1,0,1,0,1,1,0, 1,1,0,1,0,1,0,1};
    boolean volDn[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,1,0,1,1,0,1, 1,1,1,1,0,1,1,0, 1,1,0,1,0,1,0,1};
    boolean mute[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 1,0,1,0,1,1,0,1, 1,1,1,0,1,1,1,0, 1,1,0,1,0,1,0,1};
    boolean pstUp[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 1,0,1,0,1,0,1,1, 1,1,1,0,1,1,1,1, 0,1,0,1,0,1,0,1};
    boolean pstDn[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,0,1,0,1,0,1, 1,1,1,1,1,1,1,1, 0,1,0,1,0,1,0,1};
    boolean source[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 1,0,1,1,0,1,1,1, 1,1,0,1,1,0,1,1, 0,1,0,1,0,1,0,1};
    boolean trkUp[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 1,0,1,1,1,0,1,1, 1,1,0,1,1,0,1,0, 1,1,0,1,0,1,0,1};
    boolean trkDn[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,0,1,1,1,0,1, 1,1,1,1,1,0,1,0, 1,1,0,1,0,1,0,1};
    boolean power[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,1,1,0,1,1,1, 1,1,1,0,1,0,1,1, 0,1,0,1,0,1,0,1};
    boolean entPlay[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,0,1,0,1,1,1, 1,1,1,1,1,1,0,1, 0,1,0,1,0,1,0,1};
    boolean bandProg[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,1,0,1,0,1,1, 1,1,1,1,0,1,1,1, 0,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(7, OUTPUT);

    }

    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(alpPin, HIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPin, LOW);
    delayMicroseconds(4500);

    for (int i = 0; i <= 47; i++) {
    //send bit for 0.5ms
    if (source[i] == 1 ) {
    digitalWrite(alpPin, HIGH);
    } else {
    digitalWrite(alpPin, LOW);
    }
    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPin, LOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPin, LOW);
    delay(41);
    }


    //---------MODE-----------------------------------------------
    void modeSend() {
    //first send 8ms high
    digitalWrite(alpPin, HIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPin, LOW);
    delayMicroseconds(4500);

    for (int i = 0; i <= 47; i++) {
    //send bit for 0.5ms
    if (entPlay[i] == 1 ) {
    digitalWrite(alpPin, HIGH);
    } else {
    digitalWrite(alpPin, LOW);
    }
    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPin, LOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPin, LOW);
    delay(41);
    }


    //---------NEXT UP-----------------------------------------------
    void trkUpSend() {
    //first send 8ms high
    digitalWrite(alpPin, HIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPin, LOW);
    delayMicroseconds(4500);

    for (int i = 0; i <= 47; i++) {
    //send bit for 0.5ms
    if (trkUp[i] == 1 ) {
    digitalWrite(alpPin, HIGH);
    } else {
    digitalWrite(alpPin, LOW);
    }
    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPin, LOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPin, LOW);
    delay(41);
    }

    //---------NEXT DOWN----------------------------------------------
    void trkDnSend() {
    //first send 8ms high
    digitalWrite(alpPin, HIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPin, LOW);
    delayMicroseconds(4500);

    for (int i = 0; i <= 47; i++) {
    //send bit for 0.5ms
    if (trkDn[i] == 1 ) {
    digitalWrite(alpPin, HIGH);
    } else {
    digitalWrite(alpPin, LOW);
    }
    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPin, LOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPin, LOW);
    delay(41);
    }


    //---------MUTE---------------------------------------------------
    void muteSend() {
    //first send 8ms high
    digitalWrite(alpPin, HIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPin, LOW);
    delayMicroseconds(4500);

    for (int i = 0; i <= 47; i++) {
    //send bit for 0.5ms
    if (mute[i] == 1 ) {
    digitalWrite(alpPin, HIGH);
    } else {
    digitalWrite(alpPin, LOW);
    }
    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPin, LOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPin, LOW);
    delay(41);
    }

    //---------VOL UP-----------------------------------------------
    void volUpSend() {
    //first send 8ms high
    digitalWrite(alpPin, HIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPin, LOW);
    delayMicroseconds(4500);

    for (int i = 0; i <= 47; i++) {
    //send bit for 0.5ms
    if (volUp[i] == 1 ) {
    digitalWrite(alpPin, HIGH);
    } else {
    digitalWrite(alpPin, LOW);
    }
    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPin, LOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPin, LOW);
    delay(41);
    }


    //---------VOL DOWN-----------------------------------------------
    void volDnSend() {
    //first send 8ms high
    digitalWrite(alpPin, HIGH);
    delay(8);
    // send 4.5ms low
    digitalWrite(alpPin, LOW);
    delayMicroseconds(4500);

    for (int i = 0; i <= 47; i++) {
    //send bit for 0.5ms
    if (volDn[i] == 1 ) {
    digitalWrite(alpPin, HIGH);
    } else {
    digitalWrite(alpPin, LOW);
    }
    delayMicroseconds(500);
    // wait 0.5ms
    digitalWrite(alpPin, LOW);
    delayMicroseconds(500);
    }
    // send 41ms low
    digitalWrite(alpPin, LOW);
    delay(41);
    }
    Attached Images Attached Images  

  5. #15
    Newbie
    Join Date
    Apr 2009
    Posts
    4
    if you have questions just ask.

  6. #16
    Newbie
    Join Date
    Oct 2009
    Posts
    2
    FordNoMore and JC_JC nice work. You guys rock! I installed a JVC KD-AVX77 in my Porsche 911 (993) a few months ago that had a Sony radio with a converted tiptronic steering wheel that I had modified to the Sony wired remote frequencies for volume and tracks.
    I want to change the steering wheel over for the new JVC stereo and realize after seeing this that I’ll need to create an interface like discussed in this thread. From what I understand is that the new remote jacks for JVC, Alpine, and Kenwood are now sending digital signals instead of interpreting frequencies.
    The first thing I’ll have to find out is if the signals are the same between JVC, Alpine, and Kenwood. The second thing I’ll need to find is someone to code a PIC as I don’t have anything to do this although it doesn’t look that expensive to get a programmer. I’m guessing this is a PIC16F84. This would also be a first for me so I was wondering if anyone here could help me out on this venture.

  7. #17
    Newbie
    Join Date
    Dec 2005
    Location
    Sweden
    Posts
    10
    Hi all.

    I know that this is a kind of bump of the old thread but I have searched for codes for my Alpine CDE-9880R and have founded this thread.

    The idea is to do interface between Peugeot 406 steering wheel controls and Alpine but these codes from FordNoMore have worked a bit, not all of them, but I got idea to build Arduino code scanner for Alpine.

    I'm sure it can be used for other HU's as well.

    Here is a link
    with pictures, sketch (source code) file, codes that I have founded and description for everything.

    If you have any questions I will be happy to help.

  8. #18
    Low Bitrate pulsarsimon's Avatar
    Join Date
    Nov 2009
    Location
    Melbourne Australia
    Posts
    63
    The Wired input is exactly the same signal that comes from the IR remote.

    I made a wired interface for a guy a while ago by butchering a remote, and connecting the wires from the remote's LED to the ring and tip of the plug to the unit.

    details in here -->http://www.mobileelectronics.com.au/...howtopic=69181
    MacMini in an Alfa? - Why not!

  9. #19
    Newbie
    Join Date
    Oct 2009
    Posts
    2
    In other words use the remote as the interface. Makes total sense and simple too. I'll give it a go.

  10. #20
    Newbie
    Join Date
    Dec 2005
    Location
    Sweden
    Posts
    10
    Quote Originally Posted by pulsarsimon View Post
    The Wired input is exactly the same signal that comes from the IR remote.

    I made a wired interface for a guy a while ago by butchering a remote, and connecting the wires from the remote's LED to the ring and tip of the plug to the unit.

    details in here -->http://www.mobileelectronics.com.au/...howtopic=69181
    Hmm, that might be true, but I think it's a bit more complicated than that because I have found several combinations for same function as well as some functions that doesn't exist on IR remote.

Page 2 of 4 FirstFirst 1234 LastLast

Similar Threads

  1. Remote control laptop start up
    By vqstatesman in forum Laptops, Netbooks, Tablets, UMPCs, etc.
    Replies: 1
    Last Post: 09-20-2009, 08:57 AM
  2. Replies: 17
    Last Post: 01-16-2009, 09:48 AM
  3. ...
    By Jantsa in forum Input Devices
    Replies: 0
    Last Post: 08-21-2008, 09:23 AM
  4. Question about XM & Girder & Remote Control
    By juve021 in forum Road Runner
    Replies: 2
    Last Post: 04-27-2005, 08:38 PM
  5. Great ir remote to control mp3car
    By rcpirate in forum General Hardware Discussion
    Replies: 5
    Last Post: 10-16-2002, 12:01 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •