Souflerino

Dans le cadre de ce PFE, utilisez la bibliothèque NyArtoolkit (utilisez Google translate!) (tuto) pour commander 4 ventilateurs. Le principe serait que les coordonnées 3D fournies par l’inclinaison du marqueur soient transmises aux ventilateurs. Ainsi un objet léger situé entre les ventilateurs se déplacerait comme s’il était présent sur le marqueur que l’on bascule.

V1 : Les ventilateurs agissent en fonction d’une interface graphique généré par processing

Schéma électronique de la V1

 

schéma généré avec Fritzing


 

Étudiants : Camille Henriot

 

code Arduino :
char val; //l’info reçue depuis Processing
int ledPin = 6; // la PIN de la LED…

void setup() {
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
//pinMode(ledPin, OUTPUT); // … que l’on définit en OUTPUT
Serial.begin(9600); // On lance la communication
}

void loop() {
if (Serial.available()) { // Si les données sont pr^tes à etre lues,
val = Serial.read(); // on les stocke
}
if (val == ‘R’) { // Si c’est un ‘H’ qui est reçu
//digitalWrite(ledPin, HIGH); // On allume la LED
digitalWrite(11, HIGH); // on allume le moteur 1
digitalWrite(12, LOW); // on éteint le moteur 2
}
else if(val == ‘L’) {//Si c’est un ‘L’ qui est reçu
digitalWrite(11, LOW); // on éteint le moteur 1
digitalWrite(12, HIGH); // on allume le moteur 2
}
else if(val == ‘M’) {
//digitalWrite(ledPin, LOW); //Si ni l’un ni l’autre
digitalWrite(11, HIGH); // on allume le moteur 1
digitalWrite(12, HIGH); // on allume le moteur 2
}
delay(5); // On attends la prochaine lecture
}

 

 

Code Processing :

import processing.serial.*;

Serial myPort;
int val;

void setup()
{
size(1600, 800);
String portName = Serial.list()[1];
myPort = new Serial(this, portName, 9600);
}

void draw() {
background(255);
if (mouseOverRectRight() == true) { // Si la souris est sur le rectangle de droite
rect(1100, 0, 1600, 800);
myPort.write(‘R’); // et on envoie un H à l’arduino
}
else if (mouseOverRectLeft() == true) { // Sinon,
myPort.write(‘L’); // on envoie un L à la place
rect(0, 0, 500, 800);
}
else {
myPort.write(‘M’); // on envoie un M à la place
rect(500, 0, 600, 800);
}
fill(200);
}

boolean mouseOverRectRight() { // Teste si la souris est sur le rectangle
//return ((mouseX >= 50) && (mouseX <= 150) && (mouseY >= 50) && (mouseY <= 150));
return (mouseX >= 1100) && (mouseX <= 1600);
}
boolean mouseOverRectLeft() { // Teste si la souris est sur le rectangle
//return ((mouseX >= 50) && (mouseX <= 150) && (mouseY >= 50) && (mouseY <= 150));
return (mouseX >= 00) && (mouseX <= 500);
}