À l'aide du capteur d'ultrason et de Processing, ce projet vise à simuler une boule de cristal, actualisée, permettant de lire l'avenir. Ainsi, lorsque l'on passe notre main à moins de 10 cm de ce capteur, on voit s'afficher de quoi sera fait notre avenir à l'écran, à l'image d'une boule de cristal que l'on effleure des mains afin de faire apparaître notre prédiction.
//Fortune Teller 2.0 //librairies #include "Ultrasonic.h" // Ultrasonic ultrasonic(2); void setup() { Serial.begin(9600); } void loop() { long RangeInInches; long RangeInCentimeters; RangeInCentimeters = ultrasonic.MeasureInCentimeters(); // two measurements should keep an interval Serial.write(RangeInCentimeters);//0~400cm //Serial.println(" cm"); delay(250); }
// Fortune Teller 2.0 // librairies import processing.video.*; import processing.serial.*; String[]vid = {"alliance.mp4", "amour.mp4", "argent.mp4", "celebrite.mp4", "depart.mp4", "mort.mp4", "naissance.mp4", "rupture.mp4", "victoire.mp4", "voyage.mp4"}; // variables globales PImage bg; // image Movie movie; // vidéo //communication série Serial myPort; //création objet depuis Serial class float val; // donnée reçues depuis le Serial port // bouton video active ? boolean video_active = false; void setup() { size(700, 700); bg = loadImage("crystalball.jpg"); frameRate (24); movie = new Movie(this, vid[int(random(10))]); //initialisation du port série printArray(Serial.list()); //liste de tous les ports séries disponibles String portName = Serial.list()[0]; myPort = new Serial(this, portName, 9600); } void draw() { //lecture des données issues de la carte Arduino if (myPort.available() > 0) { //si les données sont disponible val = myPort.read(); // lire et stocker dans la valeur //affichage de la valeur lue sur le port println(val); } //gestion de la vidéo : si mouvement perçu par le capteur Arduino... if (val<5) { //debug println("présence détectée, lancer vidéo aléatoire"); //... alors chargement d'une vidéo au hasard int i =int(random(10)); movie = new Movie(this, vid[i]); //debug println("video:" + vid[i]); //lecture de la vidéo movie.play(); // vidéo activée video_active = true; } else { video_active = false; image(bg, 0, 0, 700, 700); } // affichage image et vidéos if (video_active) { image(movie, 0, 0, 700, 700); } else { image(bg, 0, 0, 700, 700); } } void movieEvent(Movie m) { m.read(); }