Serial communication between Arduino & Processing, with PIR Sensor

edited December 2013 in Arduino

HI,

Currently I am working on the project with PIR motion sensor.

sensor

Code process I want to make:

  1. Arduino get serial from PIR sensor
  2. Arduino send serial inform to Processing
  3. Processing play a MP3 file

Two code successfully tested. (*from web, edited a bit)

  • Arduino-Processing communication ; processing draw a graph, response to sensor
  • Play mp3 in Processing

I'm struggling to deal with two code above, try to combine "play mp3" code to "arduino-processing"code. but There're always too many errors!

Do you guyz have any idea to solve this code? Is there anyone who already tried a similar project ? :P

*code 1 (Graph)

// Graphing sketch


// This program takes ASCII-encoded strings
// from the serial port at 9600 baud and graphs them. It expects values in the
// range 0 to 1023, followed by a newline, or newline and carriage return

// Created 20 Apr 2005
// Updated 18 Jan 2008
// by Tom Igoe
// This example code is in the public domain.

import processing.serial.*;

Serial myPort;        // The serial port
int xPos = 1;         // horizontal position of the graph

void setup () {
  // set the window size:
  size(400, 300);        

  // List all the available serial ports
  println(Serial.list());
  // I know that the first port in the serial list on my mac
  // is always my  Arduino, so I open Serial.list()[0].
  // Open whatever port is the one you're using.
  myPort = new Serial(this, Serial.list()[0], 9600);
  // don't generate a serialEvent() unless you get a newline character:
  myPort.bufferUntil('\n');
  // set inital background:
  background(0);
}
void draw () {
  // everything happens in the serialEvent()
}

void serialEvent (Serial myPort) {
  // get the ASCII string:
  String inString = myPort.readStringUntil('\n');

  if (inString != null) {
    // trim off any whitespace:
    inString = trim(inString);
    // convert to an int and map to the screen height:
    float inByte = float(inString); 
    inByte = map(inByte, 0, 1023, 0, height);

    // draw the line:
    stroke(127, 34, 255);
    line(xPos, height, xPos, height - inByte);

    // at the edge of the screen, go back to the beginning:
    if (xPos >= width) {
      xPos = 0;
      background(0);
    } 
    else {
      // increment the horizontal position:
      xPos++;
    }
  }
}

*code2 (mp3)

 import ddf.minim.*;
Minim minim;
AudioPlayer sound;


int value;


void setup()
{
  size(400, 400);
  minim = new Minim(this);
}

void draw() {
  background(0);
}



void mousePressed() {

  if (mouseX < 0 && mouseY < 400 || mouseX < 400 && mouseY > 0) {
    sound = minim.loadFile("edith.mp3");
    sound.play();
    value = 0;
  }
}

Answers

  • Can you give a few examples of the errors you get? What exactly are you trying to do?

    Hint: if you do ctrl+t in Processing, it will automatically format the code for you, which makes it easier to read here.

Sign In or Register to comment.