Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

:: VMUSIC ::

Here's some code that I put together in a Arduino workshop to control a VMUSIC 2 MP3 Module. It's very basic and waits for either of 3 buttons to be pressed that then corrospond with a particular track. I'll upload a diagram soon. But check the datasheet for the right connections.

http://www.ftdichip.com/Products/Modules/ApplicationModules.htm http://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_VMUSIC2.pdf


#include <SoftwareSerial.h>

// VMUSIC PIN 6 CTS goes to Arduino GND
// VMUSIC PIN 3 goes to Arduino 5v
// VMUSIC PIN 1 goes to Arduino GND

#define VMUSIC_RX 6
#define VMUSIC_TX 7
#define ledPin 13

int incomingByte = 0;	// for incoming serial data
int buttonA = 3;   // choose the input pin (for a pushbutton)
int buttonB = 4;   // choose the input pin (for a pushbutton)
int buttonC = 5;   // choose the input pin (for a pushbutton)
int buttonValA = 0;     // variable for reading the pin status
int buttonValB = 0;     // variable for reading the pin status
int buttonValC = 0;     // variable for reading the pin status
int i = 0;
int buttonValue = 0;

// set up a new serial port
SoftwareSerial mySerial =  SoftwareSerial(VMUSIC_RX, VMUSIC_TX);


void setup() {
  Serial.begin(9600);	// opens serial port, sets data rate to 9600 bps

  // define pin modes for tx, rx, led pins:
  pinMode(VMUSIC_RX, INPUT);
  pinMode(VMUSIC_TX, OUTPUT);

  pinMode(ledPin, OUTPUT);  // declare LED as output
  pinMode(buttonA, INPUT);    // declare pushbutton as input
  pinMode(buttonB, INPUT);    // declare pushbutton as input
  pinMode(buttonC, INPUT);    // declare pushbutton as input

  digitalWrite(buttonA, HIGH); 
  digitalWrite(buttonB, HIGH); 
  digitalWrite(buttonC, HIGH); 

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
}

void selectTrack (int trackNumber) {
  switch (trackNumber) {
      case 49:

        Serial.print("I received: ");
        Serial.println(trackNumber, DEC);
        mySerial.print("VPF 001.mp3");
        mySerial.print(0x0D,BYTE);
        //selectTrack(incomingByte);

       break;

      case 50:
        Serial.print("I received: ");
        Serial.println(trackNumber, DEC);
        mySerial.print("VPF 002.mp3");
        mySerial.print(0x0D,BYTE);
      break;

      case 51:
        Serial.print("I received: ");
        Serial.println(trackNumber, DEC);
        mySerial.print("VPF 003.mp3");
        mySerial.print(0x0D,BYTE);
      break; 

    //default: 
      // if nothing else matches, do the default
      // default is optional
    }

}

void checkbuttons (){

  for (int i=3; i <=5; i++){
    digitalRead(i);
    buttonValue = digitalRead(i);

    if (buttonValue == LOW){
    digitalWrite(ledPin, HIGH);  // turn LED ON
    selectTrack(i+46);
    Serial.print("hello");
    delay(200);
    }
    else {
    digitalWrite(ledPin, LOW);  // turn LED OFF
  }

}
}



void loop() {
  checkbuttons();

}