Bonjour,
Je suis actuellement étudiant en dsaa design graphique et j'ai eu la chance de pouvoir découvrir et suivre un certain nombre de cours sur arduino et processing suite à cette formation.
En ce moment, nous travaillons sur des projets mêlants les deux logiciels et mon projet consiste à récupérer les données d'un capteur de vibration piezo afin d'influer sur l'affichage de plusieurs images. En gros, une image de base est affiché pour le cas ou le capteur est proche de 0, j'ai ensuite déterminer 3 autres paliers qui une fois dépassé permette l'affichage d'une autre image. Pour réaliser le montage je me suis inspiré de ce montage là (http://www.flossmanualsfr.net/arduino/ch019_son-qui-provoque-lumiere)
Le problème est que sur arduino je relève des valeurs variant environ de 0 à 1000, j'exécute un map() dans arduino pour que ces valeurs coïncident avec me paliers créés dans processing mais une fois que je relèvent les valeurs dans processing elles varient entre 10 et 50 ce qui ne colle pas au map() que j'ai évoquer plus haut. J'ai essayer de changer les valeurs du map(), je me suis posé là question si la résistance du montage pouvait également influer sur mon problème et j'ai donc tester plusieurs résistances différentes mais rien y fait je retrouve toujours les mêmes valeurs variant entre 10 et 50.
Je suis un peu perdu pour le coup, je ne sais pas si c'est un problème de code ou alors de mon montage. ![]()
Voilà mon code arduino :
// Variable pour désigner quelle pin est utilisée pour le capteur
int capteurPiezo = A0; // pin Analog 0
// Variable pour contenir la valeur du capteur
int valeurPiezo ;
void setup()
{
// Établit la connextion sérielle à 9600 baud
Serial.begin(9600);
}
void loop()
{
// Lit la pin du capteur et l'assigne à la variable valeurPiezo
valeurPiezo = analogRead(capteurPiezo);
// Convertit la valeur du capteur en valeur pour la LED
valeurPiezo = map(valeurPiezo, 0, 1053, 0, 800);
// Affiche au moniteur sériel la valeur de valeurPiezo
Serial.println(valeurPiezo);
delay(300);
}
et voilà mon code processing :
import processing.serial.*;
//Détection de la carte Arduino
Serial port;
int val;
PImage photo;
PImage photo2;
PImage photo3;
PImage photo4;
void setup() {
String portName = "/dev/tty.usbmodem411"; //change the 0 to a 1 or 2 etc. to match your port
port = new Serial(this, portName, 9600);
size(1280,720);
background(0);
photo = loadImage("La_fenetre.jpg");
photo2 = loadImage("La_fenetre_2.jpg");
photo3 = loadImage("La_fenetre_3.jpg");
photo4 = loadImage("La_fenetre_4.jpg");
}
void draw() {
//Attente de 50 ms avant d'exécuter le programme, doit coincider
//avec le delay de la carte Arduino.
delay(300);
if (0 < port.available()) {
val = port.read();
}
image(photo, 0, 0);
if( val > 200) {
image(photo2, 0, 0);
}
if( val > 400) {
image(photo3, 0, 0);
}
if( val > 600) {
image(photo4, 0, 0);
}
println(val);
}
Merci d'avance pour votre aide ! ![]()