TeleEcran

On dessine sur Processing avec deux potentiomètres sur Arduino, pour mimer le fonctionnement d’un « Télécran »

Maryam MOHAMMADIPEY
Chaimaa EZZIOUANI
Philippe BUI

Le Fritzing (schéma de la mort) :

1379958_10200830770877344_889463450_n

Code avec ARDUINO:

int potValD = 0;
int potValG = 0;
int redValD = 0;
int redValG = 0;

void setup() {
// On démarre la communication série
Serial.begin(9600);
// on déclare la PIN 6 comme OUTPUT
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
}

void loop() {
//On lit la valeur du potentiomètreDroit
potValD = analogRead(5);
//On l’envoie à Processing
Serial.print(« D »); Serial.print(« , »);
Serial.print(potValD, DEC);
Serial.print(« , »);
Serial.println();
//On lit la valeur du potentiomètreGauch
potValG = analogRead(4);
//On l’envoie à Processing
Serial.print(« G »); Serial.print(« , »);
Serial.print(potValG, DEC);
Serial.print(« , »);
Serial.println();
// On l’affiche dans la console série
//Serial.println(potValD, DEC);
redValD = potValD / 4; // On normalise la valeur de 0 à 255
//Serial.println(potValG, DEC);
redValG = potValG / 4; // On normalise la valeur de 0 à 255

// on envoie la valeur de luminosité à la PIN 6
analogWrite(6, redValD);
// on envoie la valeur de luminosité à la PIN 5
analogWrite(5, redValG);
delay(50);
}

Code avec PROCESSING :

// On importe la librairie qui permet de communiquer en série
import processing.serial.*;
Serial myPort; // On créé une instance de la classe Serial
short LF = 10; // « Fin de ligne »

char HEADERPOTD = ‘D'; // C’est le caractère que l’on a inséré avant la valeur du potentiomètre
char HEADERPOTG = ‘G'; // C’est le caractère que l’on a inséré avant la valeur du potentiomètre
float potentiometreValueD; // Une variable pour stocker la valeur du potentiomètreDroite
float potentiometreValueG; // Une variable pour stocker la valeur du potentiomètreGauche
float expotentiometreValueD;
float expotentiometreValueG;
void setup()
{
size(400, 400);

// float value = 25;
// float m = map(value, 0, 100, 0, width);
//ellipse(m, 200, 10, 10);

background(255);
frameRate(20);
// A vous de trouver quel port série est utilisé à l’aide de println(Serial.list())
println(Serial.list());
String portName = Serial.list()[1];
// On initialise la communication série, à la même vitesse qu’Arduino
myPort = new Serial(this, portName, 9600);
fill(0);
}
// Un message est reçu depuis l’Arduino
void serialEvent(Serial p) {
String message = myPort.readStringUntil(LF); // On lit le message reçu, jusqu’au saut de ligne
if (message != null)
{
print(« Message » + message);
// On découpe le message à chaque virgule, on le stocke dans un tableau
String [] data = message.split(« , »);

//Message reçu du potentiomètre
if (data[0].charAt(0) == HEADERPOTD)
{
// On convertit la valeur (String -> Int)
int potRaw = Integer.parseInt(data[1]);
// On normalise la valeur de 0 à 255
potentiometreValueD = map( potRaw,0,1023,0,400);

//expotentiometreValueD = potentiometreValueD;
//println(potentiometreValueD);
}

if (data[0].charAt(0) == HEADERPOTG)
{
// On convertit la valeur (String -> Int)
int potRaw = Integer.parseInt(data[1]);
// On normalise la valeur de 0 à 255
potentiometreValueG = map( potRaw,0,1023,0,400);
// expotentiometreValueG = potentiometreValueG;
}
}
}

void draw() {

line(expotentiometreValueG,expotentiometreValueD,potentiometreValueG, potentiometreValueD);

expotentiometreValueG = potentiometreValueG;
expotentiometreValueD = potentiometreValueD;
}

Amusez_vous bien ;) Mouahahahahahahahahahah…

(Il faut parfois lancer processing 5 fois de suite pour que ça marche…sans rien changer au code…on appelle ça de la MAGIE !!!)

Laisser un commentaire

Votre e-mail ne sera jamais publié ni communiqué.

Vous pouvez utiliser ces balises et attributs HTML <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>