Pages: [1]   Go Down
Author Topic: Advice on Mp3 player shield interfaced with E18-D80NK IR sensor (FIXED/UPDATED)  (Read 597 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi everyone,

I am trying to trigger a single sample off the Sparkfun Mp3 player shield using a sensor as input. In this example I am talking about the E18-d80NK, as it returns just 0's and 1's as opposed to going through conditional statements or whatever using a rangefinder etc, but I have a number of other sensors so if you think it will work better with one of them I am open to suggestions. I have got the sample loaded and mp3 shield working with example patches, and the sensor working, but both in isolation of each other.

I have done similar things before, but always interfaced with maxuino and this time that is not an option. I have been going crazy trying to make it work for over a week but so far no luck, even using the various other very similar projects posted around the web.

This is where I have got to splicing various other pieces together, I tried to go step by step as simple as possible but it just wont work, I figured it was time to ask the experts!

Code:
// libraries
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <SFEMP3Shield.h>
 
// initialize MP3 card
SdFat sd;
SFEMP3Shield MP3player;
 
// constant variables  
    
    int inputPin = 5;                    // IR sensor input pin
    unsigned long pauseTime = 10000;     // how long the pause will be after music turned off
    int readingInterval = 10;            // interval to read the sensor
 
  
// changing variables  
 
    int trigger = 1;                     // variable for pin status
    byte result;                         // variable for mp3 player shield, can be used to debug

        
// setup    
    
    void setup() {
      pinMode(inputPin, INPUT);                        // make sensor an input
      digitalWrite(inputPin, HIGH);                    // activate internal pull-up resistor
      result = MP3player.begin();                      // start mp3 player shield
      MP3player.setVolume(10, 10);                     // set volume of the mp3 player
      

  
    }


// loop
    
    void loop(){
      
      trigger = digitalRead(inputPin);                 // read sensor
      if (trigger == 0) {                              // if sensed
          result = MP3player.playTrack(1);      // play track                          
          delay(pauseTime);                            // wait...  
          
          
        
    }
      delay(readingInterval);                          // wait with reading
   }  




  
  




Thanks in advance, too much sleep has already been lost.

Jack
« Last Edit: May 12, 2013, 05:48:49 am by Jmaculate » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi guys, managed to work it out with a fun all night coding experience.

Here is my updated and very messy code, I have it working with 3 sensors, two E18's on the digital inputs and a sharp distance on the analog.

Any additional advice to make it cleaner or anything would be greatly appreciated.

But  I did it! (patting myself on back)

Cheers

Code:

// libraries
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <SFEMP3Shield.h>
 
// initialize MP3 card
SdFat sd;
SFEMP3Shield MP3player;
 
// constant variables  
    
    int inputPin = 0;                    // IR sensor input pin
    unsigned long pauseTime = 5000;     // how long the pause will be after music turned off
    int readingInterval = 10;     // interval to read the sensor
    int SignalPin=5;
    int SignalPin2=4;
    #define SignalPin 5
    #define SignalPin2 4
    
  
  
  


        
// setup    
    
    void setup() {
      Serial.begin(9600);
      sd.begin(SD_SEL, SPI_HALF_SPEED);
      MP3player.begin();
      MP3player.setVolume(10, 10);                    
      pinMode(inputPin, INPUT);
      pinMode(SignalPin, INPUT);
      
      

  
    }


// loop
    
    void loop(){
      if (analogRead(inputPin) > 450)       {                            
          MP3player.playTrack(2);                          
          delay(pauseTime);    
                  
  
  
      }
      {
      {  
      int Signal = 1;

  Signal = digitalRead(SignalPin);
  
  if (Signal == 1){
    Serial.print (Signal);
    Serial.println("  no obstacle");
  }
  
  else {
    MP3player.playTrack(1);                          
          delay(pauseTime);
  }
  
      }
    
      {
    int Signal = 1;

  Signal = digitalRead(SignalPin2);
  
  if (Signal == 1){
    Serial.print (Signal);
    Serial.println("  no obstacle");
  }
  
  else {
    MP3player.playTrack(2);                          
          delay(pauseTime);
  }
    
  
      }
      }
    
      
      delay(readingInterval);                          // wait with reading
      
  
    
      }
  
   
    










  
  


Logged

Pages: [1]   Go Up
Jump to: