Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#16 2010-02-03 00:04:00 Re : arduino bt + maxuino + piezo

kro
membre
Date d'inscription: 2008-05-23
Messages: 130
Site web

Re: arduino bt + maxuino + piezo



Staross a écrit:

Le problème est certainement l'absence de terre quelque part

peut-etre un appareil dans ma chambre alors, mais c'est pas de ce côté qu'il faut corriger le problème

Staross a écrit:

Si c'est un buzz à 50Hz ça vient certainement du réseau éléctrique. Comment est-ce que tu branche l'arduino à ton ordi pour enregistrer le signal que tu montre au dessus ?

arduino bt = bluetooth
ça me botte bien un truc wireless, je pensais pas que ça serait plus galère
mais arduino bt a l'air un peu sujet aux parasites ambiants on dirait (le buzz augmente quand j'approche mon bras genre - je dois être branché à la terre yikes)

Staross a écrit:

Le filtrage, tu peux le faire numériquement sur l'ordi, le signal au dessus est certainement utilisable tel quel.

en fait non, le débit serial est pas suffisant pour passer un signal audio hmm
si j'envoie toute les valeurs que je peux je loupe déjà 3 frappes sur 4, donc de là à traiter de l'audio
d'après ce que je comprends (faut me corriger sinon) arduino peut lire plus de valeurs si il est pas occupé à les envoyer à l'ordi, du coup le traitement doit plutôt se faire en interne et j'envoie seulement les valeurs qui m'intéresse à l'ordi (via serial - bluetooth)

Hors ligne

 

#17 2010-02-03 00:16:09 Re : arduino bt + maxuino + piezo

kro
membre
Date d'inscription: 2008-05-23
Messages: 130
Site web

Re: arduino bt + maxuino + piezo



Staross a écrit:

Si c'est un buzz à 50Hz ça vient certainement du réseau éléctrique. Comment est-ce que tu branche l'arduino à ton ordi pour enregistrer le signal que tu montre au dessus ?

j'avais pas bien lu ta question

avec des pince crocos j'ai branché le piezo à un jack en entrée micro en + de l'arduino
le buzz pourrait etre dû à la carte son mais en fait si je branche juste le piezo à la carte (en débranchant de l'arduino donc) le buzz et 10x plus faible cqfd

en plus que l'arduino soit alimenté ou pas ne change rien, c'est peut être l'antenne bluetooth qui pourrait être mal isolée ou un truc du genre

Hors ligne

 

#18 2010-02-03 11:12:46 Re : arduino bt + maxuino + piezo

Staross
membre
Date d'inscription: 2008-04-03
Messages: 322

Re: arduino bt + maxuino + piezo



Ok, merci des reponses, si je me lance dans un truc similaire je prendrai un arduino usb pour voir si ca va mieux...

Hors ligne

 

#19 2011-02-04 18:11:23 Re : arduino bt + maxuino + piezo

kro
membre
Date d'inscription: 2008-05-23
Messages: 130
Site web

Re: arduino bt + maxuino + piezo



j'ai à peu près terminé ce projet maintenant je colle des sons là dessus

mais j'ai laissé tomber le bluetooth (usb now)
si c'était à refaire j'essaierai avec des xbee


j'ai pas mal galéré pour fabriquer un preamp à knock qui marche (preamp + redressement + lissage)
voila ce que donne le schéma :
http://www.mindthepressure.org/uk/schema.gif
il faut adapter les resistance 1 et 2 en fonction de la sensibilité recherchée

un arduino shield pour 2 piezos
(attention le shield est à l'envers pour gain de place, composants en dessous, contre ceux du arduino)
http://www.mindthepressure.org/uk/shield.gif

le code donne un truc dans ce goût là
pas celui que j'utilise : l'évitement du crosstrigger est géré de manière assez tordues dans mon cas (vu que les piezos collés au même élément)
pour un piezo individuel c'est plus simple :

const int piezo_0 = 0; // analog input 0

const int trigger_threshold_0 = 2;  // difference with last value so it start to trig
const int delay_0 = 30; // pause to avoid multitriggers for one knock during 30ms

unsigned long now = 0;
unsigned long pause_0 = 0;

int triggerValue_0 = 0;
int previousValue_0 = 0;
int peakValue_0 = 0;
int maxValue_0 = 0;

void setup() {
  Serial.begin(9600);
}

void loop() { 
  now = millis();
  
  if (pause_0 < now - delay_0){ // pause off
    triggerValue_0 = analogRead(piezo_0);
    if (triggerValue_0 >= previousValue_0 + trigger_threshold_0) {
      delayMicroseconds(230); // wait 0.23 ms for peak
      peakValue_0 = analogRead(piezo_0);
      if (peakValue_0 > triggerValue_0){ // be sure peak value is higher
        maxValue_0 = peakValue_0;
      }
      else {
        maxValue_0 = triggerValue_0;
      }
      Serial.print("/piezo_0 ");
      Serial.println(maxValue_0); // send osc message
      previousValue_0 = maxValue_0;
      pause_0 = millis();
    }
    else {
      previousValue_0 = triggerValue_0;
    }
  }
}

Dernière modification par kro (2011-02-05 09:11:27)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024