====== Fortune Teller 2.0 ====== * Porteuse du projet : Gaëlle Choquet * Date : 2019 * Contexte : [[wiki:projets:arduino-2019:accueil|Projet Arduino]] ---- ==== Description ==== À 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. {{:wiki:projets:arduino-gaellechoquet:voyage.gif|}} {{:wiki:projets:arduino-gaellechoquet:fortune_teller.jpg|}} * En vérité, 10 vidéos initialisées dans un tableau sur Processing, prédisant chacune un destin (cités ci-dessus), optimiste ou pessimiste. L'une d'elles est alors lue aléatoirement si le capteur détecte une présence à moins de 5 cm. Cela permet ainsi d'imiter les différents présages pouvant être lus par une boule de cristal. ---- ==== Capteur ==== * Capteur utilisé : [[http://wiki.seeedstudio.com/Grove-Ultrasonic_Ranger/|Grove - Ultrasonic ranger]] ---- ==== Schéma ==== {{:wiki:projets:arduino-gaellechoquet:schema.jpg|}} ---- ==== Programme Arduino ==== //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); } ==== Programme Processing ==== // 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(); } ---- ==== Références ==== [[https://forum.processing.org/two/discussion/23453/random-video|Charger une vidéo aléatoirement]] [[http://kare.com|Susan Kare]]