//             ***** Processing code *****
//    Send scaled value of the mouseX to serial port
//  -Assumes Atmega168 is expecting values between 1-10
//   (Uncomment code re: camera if you have a webcam attached.)
// ----------------------------------------------------------

import processing.video.*;
Capture cam;
import processing.serial.*;
Serial myPort;              // Create instance of serial port:
int scaledOut;
// Capture cam;

void setup() {
size(1000, 550);
//----------------- Sorting the Serial connection -----------
 println(Serial.list());                             // Diagnostic: gives list of ports
 myPort = new Serial(this, Serial.list()[2], 9600);  // Open connection to USB port at 9600 bps
// cam = new Capture(this, 640, 480);                // (Use 320 x 240 if 640x480 stutters.)

//---------------- Ok for Serial, Now for the Camera --------
  String[] cameras = Capture.list();

  if (cameras == null) {
    println("Failed to retrieve the list of available cameras, will try the default...");
    cam = new Capture(this, 640, 480);
  } if (cameras.length == 0) {
    println("There are no cameras available for capture.");
    exit();
  } else {
    println("Available cameras:");
    for (int i = 0; i < cameras.length; i++) {
      println(cameras[i]);
    }
    // The camera can be initialized directly using an element
    // from the array returned by list():
    cam = new Capture(this, cameras[0]);
    // Or, the settings can be defined based on the text in the list
    //cam = new Capture(this, 640, 480, "Built-in iSight", 30);
    
    // Start capturing the images from the camera
    cam.start();
  }
//------------------- Now for the rest of setup ---------------------------------
background(0);
rectMode(CENTER);
  PFont fontA = loadFont("ArialMT-42.vlw");    // *** Create this with "Tools/Create Font..."
  textFont(fontA, 42);
  textAlign(CENTER);
fill(220,200,20,90);                           // Set the fill color of the letters 

  }
void draw(){
  scaledOut = (mouseX/99);
  text(scaledOut, 500, 530);
   myPort.write(scaledOut);                       // send scaled mouse x value
  background(0);
  if (cam.available() == true) {
    cam.read();
  }
image(cam, mouseX, 0);
delay(50);                 // wait a twentieth of a second
}