Click the link below and....Get Sparked!

Showing posts with label Videos. Show all posts
Showing posts with label Videos. Show all posts

Thursday, November 4, 2010

The DSI Project - Part 2

The DSI Project - Demo Reel from Paul D'Intino on Vimeo.


Hello Again! It's been a long time between posts I know, but I have finally had some time to record the performance of my latest multi-touch table 'The DSI Project' - still haven't come up with a better name =)

This is a Demo Reel of a 32" Multi-touch table showcasing some of the applications used in DIY setups.

Music is by 'The XX's' (website: http://thexx.info/)

This video is also available on YouTube: http://www.youtube.com/watch?v=6vqCVj42y9c

I have also included a diagram explaining the order of the LCD & Touch 'Layers'.
NOTE: The 3 Diffuser Layers are the factory sheets included with the LCD. I had tried variations of using only one or 2, but the result was better with 3 in the end.



As always, stay tuned for more!

Friday, April 9, 2010

Concept Apploader Multitouch AS3 Flash Menu



This is the first trial of a Concept Apploader AS3 Flash Menu that uses an XML dynamic background and Icon/Background images. At this stage the applications are hard coded into the AS3 file, however the aim will be to also have those dynamically load from an XML file.

Screenshots and more details will be added soon...

Comments are welcomed =)

Stay tuned...

Thursday, February 11, 2010

Arduino Simple Moisture Tester



This is a simple Moisture Tester that I made using an Arduino MEGA, a 10 Element Bar Graph LED Array (Part Number: HDSP-4832), and some Galvanized Nails as sensor probes.

Essentially, the Arduino measures the resistance between the nails and sends that data to the code which determines how many LED's to light up. The higher the number, the more LED's light up. Simple!

Here's a picture of the circuit.



And a screenshot of the Serial Monitor output from the Arduino Code:



And here's the code:
------------------------------



// Arduino Simple Moisture Tester
// By Paul D'Intino
// Feb 11 2010

//initialize values
int moistureSensor = 0;
int moisture_val;
int lightSwitch1 = 35;
int lightSwitch2 = 37;
int lightSwitch3 = 39;
int lightSwitch4 = 41;
int lightSwitch5 = 43;
int lightSwitch6 = 45;
int lightSwitch7 = 47;
int lightSwitch8 = 49;
int lightSwitch9 = 51;
int lightSwitch10 = 53;


void setup() {
Serial.begin(9600); //open serial port

//setup Digital pins as Outputs
pinMode (lightSwitch1, OUTPUT);
pinMode (lightSwitch2, OUTPUT);
pinMode (lightSwitch3, OUTPUT);
pinMode (lightSwitch4, OUTPUT);
pinMode (lightSwitch5, OUTPUT);
pinMode (lightSwitch6, OUTPUT);
pinMode (lightSwitch7, OUTPUT);
pinMode (lightSwitch8, OUTPUT);
pinMode (lightSwitch9, OUTPUT);
pinMode (lightSwitch10, OUTPUT);

//set all the LEDS to OFF on startup

digitalWrite (lightSwitch1, LOW);
digitalWrite (lightSwitch2, LOW);
digitalWrite (lightSwitch3, LOW);
digitalWrite (lightSwitch4, LOW);
digitalWrite (lightSwitch5, LOW);
digitalWrite (lightSwitch6, LOW);
digitalWrite (lightSwitch7, LOW);
digitalWrite (lightSwitch8, LOW);
digitalWrite (lightSwitch9, LOW);
digitalWrite (lightSwitch10, LOW);
}

void loop() {
moisture_val = analogRead(moistureSensor); // read the value from the moisture-sensing probes
Serial.print("moisture sensor reads "); //output the value from the sensors
Serial.println( moisture_val );

//Step 1 - setup the maximum value with all LEDS on
if (moisture_val >= 1000 )
{
digitalWrite(lightSwitch1, HIGH);
digitalWrite(lightSwitch2, HIGH);
digitalWrite(lightSwitch3, HIGH);
digitalWrite(lightSwitch4, HIGH);
digitalWrite(lightSwitch5, HIGH);
digitalWrite(lightSwitch6, HIGH);
digitalWrite(lightSwitch7, HIGH);
digitalWrite(lightSwitch8, HIGH);
digitalWrite(lightSwitch9, HIGH);
digitalWrite(lightSwitch10, HIGH);
delay(10);
}

//Step 2
else if (moisture_val >= 800 && moisture_val <= 900 )
{
digitalWrite(lightSwitch1, HIGH);
digitalWrite(lightSwitch2, HIGH);
digitalWrite(lightSwitch3, HIGH);
digitalWrite(lightSwitch4, HIGH);
digitalWrite(lightSwitch5, HIGH);
digitalWrite(lightSwitch6, HIGH);
digitalWrite(lightSwitch7, HIGH);
digitalWrite(lightSwitch8, HIGH);
digitalWrite(lightSwitch9, HIGH);
digitalWrite(lightSwitch10, LOW);
delay(10);
}

//Step 3
else if (moisture_val >= 700 && moisture_val <= 800 )
{
digitalWrite(lightSwitch1, HIGH);
digitalWrite(lightSwitch2, HIGH);
digitalWrite(lightSwitch3, HIGH);
digitalWrite(lightSwitch4, HIGH);
digitalWrite(lightSwitch5, HIGH);
digitalWrite(lightSwitch6, HIGH);
digitalWrite(lightSwitch7, HIGH);
digitalWrite(lightSwitch8, HIGH);
digitalWrite(lightSwitch9, LOW);
digitalWrite(lightSwitch10, LOW);
delay(10);
}


//Step 4
else if (moisture_val >= 600 && moisture_val <= 700 )
{
digitalWrite(lightSwitch1, HIGH);
digitalWrite(lightSwitch2, HIGH);
digitalWrite(lightSwitch3, HIGH);
digitalWrite(lightSwitch4, HIGH);
digitalWrite(lightSwitch5, HIGH);
digitalWrite(lightSwitch6, HIGH);
digitalWrite(lightSwitch7, HIGH);
digitalWrite(lightSwitch8, LOW);
digitalWrite(lightSwitch9, LOW);
digitalWrite(lightSwitch10, LOW);
delay(10);
}


//Step 5
else if (moisture_val >= 500 && moisture_val <= 600 )
{
digitalWrite(lightSwitch1, HIGH);
digitalWrite(lightSwitch2, HIGH);
digitalWrite(lightSwitch3, HIGH);
digitalWrite(lightSwitch4, HIGH);
digitalWrite(lightSwitch5, HIGH);
digitalWrite(lightSwitch6, HIGH);
digitalWrite(lightSwitch7, LOW);
digitalWrite(lightSwitch8, LOW);
digitalWrite(lightSwitch9, LOW);
digitalWrite(lightSwitch10, LOW);
delay(10);
}


//Step 6
else if (moisture_val >= 400 && moisture_val <= 500 )
{
digitalWrite(lightSwitch1, HIGH);
digitalWrite(lightSwitch2, HIGH);
digitalWrite(lightSwitch3, HIGH);
digitalWrite(lightSwitch4, HIGH);
digitalWrite(lightSwitch5, HIGH);
digitalWrite(lightSwitch6, LOW);
digitalWrite(lightSwitch7, LOW);
digitalWrite(lightSwitch8, LOW);
digitalWrite(lightSwitch9, LOW);
digitalWrite(lightSwitch10, LOW);
delay(10);
}

//Step 7
else if (moisture_val >= 300 && moisture_val <= 400 )
{
digitalWrite(lightSwitch1, HIGH);
digitalWrite(lightSwitch2, HIGH);
digitalWrite(lightSwitch3, HIGH);
digitalWrite(lightSwitch4, HIGH);
digitalWrite(lightSwitch5, LOW);
digitalWrite(lightSwitch6, LOW);
digitalWrite(lightSwitch7, LOW);
digitalWrite(lightSwitch8, LOW);
digitalWrite(lightSwitch9, LOW);
digitalWrite(lightSwitch10, LOW);
delay(10);
}

//Step 8
else if (moisture_val >= 200 && moisture_val <= 300 )
{
digitalWrite(lightSwitch1, HIGH);
digitalWrite(lightSwitch2, HIGH);
digitalWrite(lightSwitch3, HIGH);
digitalWrite(lightSwitch4, LOW);
digitalWrite(lightSwitch5, LOW);
digitalWrite(lightSwitch6, LOW);
digitalWrite(lightSwitch7, LOW);
digitalWrite(lightSwitch8, LOW);
digitalWrite(lightSwitch9, LOW);
digitalWrite(lightSwitch10, LOW);
delay(10);
}

//Step 9
else if (moisture_val >= 100 && moisture_val <= 200 )
{
digitalWrite(lightSwitch1, HIGH);
digitalWrite(lightSwitch2, HIGH);
digitalWrite(lightSwitch3, LOW);
digitalWrite(lightSwitch4, LOW);
digitalWrite(lightSwitch5, LOW);
digitalWrite(lightSwitch6, LOW);
digitalWrite(lightSwitch7, LOW);
digitalWrite(lightSwitch8, LOW);
digitalWrite(lightSwitch9, LOW);
digitalWrite(lightSwitch10, LOW);
delay(10);
}

//Step10 - setup the minimum value with all LEDS off but one Red LED.


else
{
digitalWrite(lightSwitch1, HIGH);
digitalWrite(lightSwitch2, LOW);
digitalWrite(lightSwitch3, LOW);
digitalWrite(lightSwitch4, LOW);
digitalWrite(lightSwitch5, LOW);
digitalWrite(lightSwitch6, LOW);
digitalWrite(lightSwitch7, LOW);
digitalWrite(lightSwitch8, LOW);
digitalWrite(lightSwitch9, LOW);
digitalWrite(lightSwitch10, LOW);
delay(10);
}

}


Wednesday, February 3, 2010

MultiTouch using IR Pen & WorldWind JAVA - Concept Test 1



This is the first Concept Test of a Multi-touch device using only 1 IR Pen.

Ordinary 'single' touch controls are possible when the IR Pen is touching the screen, and also Multi-touch 'pinch' gestures for zooming by brining the IR Pen closer or further away from the screen.


.

Monday, January 4, 2010

UPDATED PLANS - Heart Locket 'The Illusionist'



Even though it is not Multi-Touch related, many people have been asking about the construction of these lockets, so I'll try and explain it. I didn't have time to sit down and actually draw up some plans so I thought I’d better put something on paper before I forgot how I made it!


I made this locket after watching the movie 'The Illusionist'. No-one had successfully made a fully functioning locket, and after searching some forums I found that many people wanted them.

Modifying some plans I found on the forum, I set out to make one and completed it on April 7th 2007 in time for my girlfriend Lisa's birthday.

The following document consists of early diagrams and photos of the finished product (before I glued it into place).

Enjoy!

Download

Heart_Locket_Plans.pdf (File Size: 419KB - Downloads: )



.

Thursday, December 17, 2009

Interactive LED Test 2 - First Of The Modules

Ok so it's been a few months since the post on Interactive LED's. Even though I had already made a module and recorded a video, I had not had the time to upload the video or explain the circuit.



So below is a picture of the circuit in its most basic form. No LED protection for this simple circuit, however building more modules would require a far better design than the one shown...

Circuit Explination:

InfraRed light emmitting from the IR LED transmitter is beamed onto an obstacle (your hand/finger etc.) and reflected onto the IR Receiver (a reverse biased IR LED) which triggers the amplifier to turn on the green LED's.

In the circuit I am using an LM324 - Low Power Quad Operational Amplifier. This is due to the fact that the reflected IR creates a small voltage on the receiver (depends on variables however one test I did was around 150-200mV) and approx 16x gain so 2.4-2.6V on the output.



Being a Quad OP Amp, I had 1 Green LED per output.

Because I only made this module as a "Proof of concept" I have not gone any further with it... Hopefully when I get some time I might come back to this...

Sunday, November 22, 2009

Arduino & Servo Control Using The Mouse



After the iPhone & Arduino project, I wanted to try some mechanical objects with the Arduino MEGA. This is the first test of controlling a Servo connected to the Arduino MEGA by moving the mouse.

The mouse X axis is read by a Processing Sketch and then sent to the arduino to tell the servo to rotate.

I have updated the code to include Y axis, however I only have 1 servo at the moment =P

I will post a new video once I have received more servos...

UPDATE: Here are the Processing and Arduino source codes for this project:


Arduino
ServoAppArduino.pde(File Size: 755 Bytes - Downloads:



Processing
ServoAppTest1.pde(File Size: 1.31KB - Downloads:


Enjoy!

Saturday, November 21, 2009

iPhone & Arduino: Controlling 2 LED's Using WiFi



Ok so it's been quite a while between posts.

I've been working on some projects using the Arduino MEGA.

In this example I've used the iPhone connected to Arduino via WiFi using a custom layout from TouchOSC to control the Green and Red LED's. The application sending information to the Arduino is Processing.

Sunday, August 2, 2009

Arduino TouchScreen Test 1

This is a simple test of a 4-Wire resistive touchscreen connected to an Arduino MEGA running a simple Paint application that I wrote in Processing.



The Arduino code was based on the code from this website:

http://mnicolato.altervista.org/arduino/ardtouch.htm


(The website will need translation, however, the video and code are there)


Below is the Processing code for the Arduino Touch Screen Paint application I wrote for the above video...

Enjoy!




// Touch Screen Paint v1.1

// This example takes in a serial string of comma-separated values
// from a 4-Wire Resistive touch screen (0 to 1023), maps them to the range
// 0 to 480 or 0 to 800 of x,y values, and uses them to draw a line on the screen.

// By
// Paul D'Intino


import processing.serial.*;

float xPos = 0; // touch screen x value
float yPos = 0; // touch screen y value


Serial myPort;

void setup() {
size(800, 480); //define the size of the Paint window
background(0); //set the background to black
// List all the available serial ports
println(Serial.list());
// Open whatever port is the one you're using.
myPort = new Serial(this, Serial.list()[2], 9600);
// don't generate a serialEvent() unless you get a new line character:
myPort.bufferUntil('\n');
}

void draw() {


}

void serialEvent(Serial myPort) {
// get the ASCII string:
String inString = myPort.readStringUntil('\n');
//background(0);
if (inString != null) {
// trim off any whitespace:
inString = trim(inString);
// split the string on the commas and convert the
// resulting substrings into an integer array:
float[] sensor = float(split(inString, ","));
// if the array has at least three elements, you know
// you got the whole thing. Put the numbers in the
// color variables:
if (sensor.length >=2) {
// map them to the range 0-255:
xPos = map(sensor[0], 0, 1023, 0, 480);
yPos = map(sensor[1], 0, 1023, 0, 800);
//define the stroke and fill color of the circle
stroke(0,255,0); //green (R,G,B)
fill(0,255,0); //green (R,G,B)
//draw the circle at the touch screen sensor x and y position
ellipse(yPos,xPos,10,10);
//print the serial x,y data for debugging purposes only
println(inString);
}
}
}






The processing app I wrote is a derivative of the Virtual Color Mixer code found here:

http://www.arduino.cc/en/Tutorial/VirtualColorMixer

Stay tuned for more shortly....

Sunday, July 26, 2009

Interactive LED Test 1 - More than just a table!

A while ago I saw some Interactive LED table videos that kinda got me thinking "I should build one of these..." so I did some research and started playing around with IR LED's as sensors. The idea being that the table we use to play cards on could do with some spicing up...

This video shows the first test of a reverse biased IR led used as an IR sensor to power some green LED's. This is the first step to making an interactive LED table using a fairly simple circuit.



(Oh and sorry about the portrait video, I filmed it with my iPhone)

More tests to come...

Friday, April 17, 2009

LED-LP 19" Widescreen Multi-touch LCD - First Tests

So, I've been to Japan and back, but now I've finally found the time to get back into some multi-touch projects I started some months ago. This is my first video of the LED-LP (LED-Light Plane) 19" Widescreen multi-touch LCD prototype I am building.

There are a total of 40 IR LED's around the LCD panel, a PS3 Eye Webcam mounted behind the LCD module, and tbeta running for the blob detection.

This video is of the tbeta main screen where the raw camera feed and applied filters can be seen.

(NOTE: There are some glitches/false inputs being detected and that is due to reflection of IR from the back acrylic onto the LCD's PCB. This can be fixed easily by covering the PCB with non-reflective material.)

Friday, November 7, 2008

CHALKmt - A Multi-Touch Chalk Board Application

CHALKmt is a multi-touch chalk board application that I made using AS3. CHALKmt allows multi-user/multi-touch interaction of Chalk Boards that can be scaled/rotated/moved and even wiped clean!



There are 2 versions available for download (Wall & Table). The difference between the 2 is the number and position of the '+' buttons that add the Chalk Boards to the screen. The Wall version (ChalkMTWall_Beta 1.0.rar) has 2 top left & top right, while the table version (ChalkMT_Beta 1.0.rar) has 4 on each corner.

This just makes the layout easier for the different Multi-touch setups people are using.



I hope you like it, and as always your feedback is welcome!

Download:

Wall Version: ChalkMTWall_Beta 1.0.rar (1.08Mb)
Table Version: ChalkMT_Beta 1.0.rar (1.08Mb)
MAC Test Version: ChalkMT_Beta 1.0_MAC.zip (4.4Mb)

Thursday, November 6, 2008

touchWorldWind Beta is Available Now!

As we have been promising, there is now a version available for download of touchWorldWind. Please note that touchWorldWind is still a beta version and has only been released due to popular demand.
There are still some ironing out to do with some of the gestures etc, that Taha and I are working on…

Having said that, enjoy the download!

Download: touchWorldWind (2.63Mb)

The download includes a readme file explaining the features/requirements...

Friday, July 4, 2008

ORION V2 Laser Test 1

This is my first attempt at implementing a cheap IR laser into the ORION V2.

Essentially the laser creates a horizontal beam of InfraRed light approx 1mm off the glass, which is broken when fingers make contact with the surface of the glass.

This results in the IR camera seeing a bright 'Blob' where the finger has touched the glass.

A great solution to the limitation of using the Multi-touch screens during the day or under a lot of ambient lighting. A big thankyou to AlexP for the Laser idea!

And don't forget to visit the post at the NuiGroup forum here

Wednesday, April 30, 2008

DI Multi-touch Test 1 - ORION v2

This blog has been designed for a Multi-touch DI setup I made called ORION mt. Here are some apps to show the performance of the Multi-Touch interface. Please see the original post on Nui Group forums here: