====== 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]]