Fortune Teller 2.0

Porteuse du projet : Gaëlle Choquet

Date : 2019

Contexte : 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.

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é : Grove - Ultrasonic ranger

Schéma

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

Charger une vidéo aléatoirement

Susan Kare