HELP - Projet Capteur de Pression.

Bonjour a tous, après plusieurs semaines de galère et pas de réponse venant des parties Anglophone du forum , je me tourne vers vous camarades français !

Il y a trois semaine de ça, grâce a un excursion en Fablab avec ma classe de Design, j’ai décidé de me lancer dans l’Arduino.

Mon projet était de créer un synthétiseur, un peu particulier avec des touches en mousse a mémoire de forme. L’idée était qu’une fois la mousse pressée un son se ferait entendre, plus la mousse etait comprimée plus la note évoluait, augmentait, etc…

Jusque la tout s’est relativement bien passé, j’ai suivi un bon nombre de tutoriels arduino de base, sans trop d’encombre. Seulement voila aujourd’hui je me retrouve bloqué, stagnant. C’est avant tout l’écriture de code qui m’empêche de poursuivre mon projet et je ne sais pas par ou commencer, surtout vu le peu de temps qu’il me reste (6 jours) avant de rendre un prototype relativement fonctionnel de mon objet.

Aujourd’hui j’ai ca :

En gros j’appuie sur le capteur de pression placé sous la mousse et un note (aigue et franchement peu melodieuse) sors d’un buzzer piezo. Plus j’appuie, plus la note est forte. C’est assez loin du resultat que je recherche…

Alors j’ai acheté un Shield Adafruit mp3, qui si je comprend bien, devrait me permettre de de remplacer le piezo, par des sons mp3 customs un peu plus harmonieux, en reliant le bazar a des enceintes.
Seulement voila je suis complètement perdu dans la masse de tutos arduino, et je n’arrive pas a écrire une seule ligne de code qui ai du sens.

Si une âme généreuse se sent de me donner un coup de main, comprends un peu le truc et a une idée de la façon réaliser le tout, je serai plus que reconnaissant. J’aime vraiment la pratique de Arduino, mais ca me frustre de ne pas comprendre et pouvoir passer le cap des tutos basiques.

bonjour, sans code de ta part on ne pourra rien faire pour toi. il y a des exemples dans la lib du shield.

le capteur de pression n'est ni plus ni moins qu'un bouton poussoir donc la valeur varie. donc à toi de créer les fourchettes en fonction de la pression et déterminer quel son sera produit.

Pour sortir un son plus musical qu'avec le buzzer, l'idéal serait de piloter un vrai synthé en MIDI depuis ton clavier en mousse tactile.

Ce sera plus simple et rapide que de lire des échantillons en MP3, en 10 lignes de code : http://arduino.cc/en/Tutorial/Midi

Bonjour a tous, après plusieurs semaines de galère et pas de réponse venant des parties Anglophone du forum , je me tourne vers vous camarades français !

Lire ceci donne envie de répondre .........

Pas de réponse de la partie anglophone peut-être mais pas aprés des semaines de galère : Inscription sur le forum 28 janvier 2015 Premier post chez les anglais le 28 janvier 2015 Deuxième et dernier message chez les anglais : 4 février 2015 Traduction et copie de ce dernier post anglais sur la partie francophone le 6 Février 2015.

Tu sais que les gens sont des bénévoles et qu'ils ont d'autres occupations.

+1

Oui alors je m'explique : quand je dis après des semaines de galère, c'est bien parceque j'ai commencé le projet il y a 5 semaines de ça, je ne me suis inscrit sur le forum qu'a partir du moment ou j'ai commencé a bloquer. Je comprends bien que l'on viens pas comme ça pour demander au gens de faire le boulot a notre place ;)

Merci en tout cas pour les premières pistes !

Pour ce qui est du code, jusque la j'ai expérimenté avec ca :

int fsrAnalogPin = 0; int Amp = 11; int fsrReading; int AmpInt;

void setup(void) { Serial.begin(9600); pinMode(Amp, OUTPUT); }

void loop(void) { fsrReading = analogRead(fsrAnalogPin); Serial.print("Analog reading = "); Serial.println(fsrReading);

AmpInt = map(fsrReading, 0, 2000, 0, 2000);

analogWrite(Amp, AmpInt);

delay(0); }

Amp correspondant au buzzer piezo. A la limite, il me faudrait trouver comment l'editer pour que telle intensité de pression corresponde a telle note du piezo. Apres sur un prototype plus complet ca serait plutot : telle intensité de pression fait jouer tel mp3.

Le MIDI est une piste intéressante mais je ne possède pas le matériel requis malheureusement.

Nouvelle ligne de code :

int fsrAnalogPin = 0; int Amp = 11; int fsrReading; int AmpInt; int Mytone; void setup(void) { Serial.begin(9600); pinMode(Amp, OUTPUT); }

void loop(void) { Mytone = 0; fsrReading = analogRead(fsrAnalogPin); Serial.print(" william Analog reading = "); Serial.println(fsrReading);

AmpInt = map(fsrReading, 0, 2000, 0, 2000); Serial.print("AmpImt="); Serial.println(AmpInt);

if (AmpInt > 20) { Mytone = 370 ; }

else if (AmpInt > 30 ) { Mytone = 392 ; }

Serial.print("mytone="); Serial.println(Mytone); analogWrite(Amp, Mytone);

delay(10); }

Le "else if" ne semble pas fonctionner, pourtant je ne recoit pas d'erreur, jusque la je n'obtiens que le premier Tone soit 370 (un sol) si la valeur renvoyée par mon capteur est superieur a 20, le tone 392 (g#) ne se fait pas entendre... Enfin en tout cas aucune modulation ne se fait entendre dans le son.

Je m'interroge aussi sur l'utilité de "map" vu que je laisse les valeurs tel quel ?

Le "else if" ne fonctionne pas car > 30 est donc > 20, donc tout va dans le "if". Revois tes conditions, par exemple en changeant leur ordre ou définissant des bornes min et max.

Ok, question probablement stupide, mais bon : quand tu parles de definir des bornes min et max, tu parles de Constants HIGH et LOW ?

Sinon en attendant j'ai modifié mon code comme cela, mais la c'est carrément aucun son, encore un probleme avec le else if ?

AmpInt = map(fsrReading, 0, 2000, 0, 2000); Serial.print("AmpImt="); Serial.println(AmpInt);

if (AmpInt =0) { Mytone=0; }

else if (AmpInt >10) { Mytone=415; }

Serial.print("mytone="); Serial.println(Mytone); analogWrite(Amp, Mytone);

delay(10); }

EDIT : ok j'ai vu qu'il me manquait un "=" sur la ligne "if (Ampint = 0)"