Go Down

Topic: Info Clapper (Read 5721 times) previous topic - next topic

gpb01


..... me serve un filtro per analizzare il picco del battito di mani in modo da poter verificare e quindi attivare i led quindi mi serve per forza l'analogico


Scusa, se capisco bene ... tu vorresti fare un "analisi" del segnale analogico e discriminare un battito di mani da un altro rumore di pari intensità e durata (es. una porta che in lontananza sbatte) ?

... la vedo dura  :~

Guglielmo
Search is Your friend ... or I am Your enemy !

Testato

Se vuoi discriminare a parità di volume non ne esci. Ti devo accontentare del solo volume, quindi o un battito di mani o un clacson farà attivare. Puoi appunto creare un codice battendo in un certo modo, battito pausa 2sec battito

X leo: yes, mio gruppo preferito insieme a Nirvana, guns, litfiba, roba anni 90  :P
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

nid69ita

Scusate l'intromissione, un eventuale prodotto alternativo come questo su robot-italy?
http://www.robot-italy.com/it/breakout-board-for-electret-microphone-1.html
Può essere utile per sentire il rumore del battimani? (logicamente non per discriminare i suoni)

my name is IGOR, not AIGOR

leo72


X leo: yes, mio gruppo preferito insieme a Nirvana, guns, litfiba, roba anni 90  :P

Bravo bravo... sono un metallaro di vecchia data, cresciuto con AC/DC, Irons, Sabbath e poi passato all'epic metal in tempi recenti  ;)

FINE OT, promesso   :smiley-sweat:

Testato

fine OT, abbiamo appena iniziato  :)
devi assolutamente ascoltare i miei due studio album, e darmi un parere  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Testato


Scusate l'intromissione, un eventuale prodotto alternativo come questo su robot-italy?
http://www.robot-italy.com/it/breakout-board-for-electret-microphone-1.html
Può essere utile per sentire il rumore del battimani? (logicamente non per discriminare i suoni)

e' lo stesso discorso di quello postato prima, questo in meno non ha nessun uscita digitale con seoglia regolabile, quindi lo fai entrare in un analog pin e ti gestisci una attivazione in base ad un determinato livello di suono. Se vuoi creare un codice da riconoscere lo definisci (tipo batti una volta le mani, poi ti fermi 2 secondi, e poi batti altre 3 volte) in questo modo puoi discriminare rumori non voluti
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72


fine OT, abbiamo appena iniziato  :)
devi assolutamente ascoltare i miei due studio album, e darmi un parere  :)

Che album? Non dirmi che suoni!  ]:D

Testato



fine OT, abbiamo appena iniziato  :)
devi assolutamente ascoltare i miei due studio album, e darmi un parere  :)

Che album? Non dirmi che suoni!  ]:D

yes, strumento a tema con l'elettronica, la batteria, tu suoni ? si fa una band ?  :)
il mio primo album e' stato un progetto solo strumentale, genere prog rock
il secondo, classico rock album con testi in italiano
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72


tu suoni ?

No, io ascolto. Il mio orecchio è tutto fuorché musicale  :smiley-yell:

waterseven

Scusate l'assenza ma non ho avuto tempo neanche per respirare. Tornando a noi , dato che dall'ingresso analogico non ho un valore significativo come posso creare un amplificatore di segnale da mettere all'uscita dell'analogico ?

astrobeed


yes, strumento a tema con l'elettronica, la batteria, tu suoni ? si fa una band ?  :)


Ecco testato all'opera  :D :smiley-mr-green: :D

http://www.youtube.com/watch?v=3iUrcS5tvNA

waterseven

#41
Mar 20, 2013, 10:13 pm Last Edit: Mar 20, 2013, 11:26 pm by waterseven Reason: 1
Scusate ok il primo ot va bene ma ora siam passati a tutto all'infuori dell'argomento da me iniziato... Perfavore parlatene via messaggi personali. Grazie

Per quanto riguarda il calpper sono riuscito a far funzionare quello blu , da 28 di base con un rumore acuto passa a 1023. Come mai non mi legge i valori intermedi ? Io vorrei che fosse piu' sensibile.... Se invece di maggiore di 1000 mettessi ad esempio maggiore di 700 avrei piu' sensibilità tagliando le letture al di sotto

Testato

Scusa per gli OT, siamo stasi travolti  :) (x astro, notata la robot sul palo lapdance ?)

Per il tuo problema purtroppo non ci aiuti a rispondere, serve foto dei collegamenti e codice usato.
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

waterseven

I collegamenti ora sono diretti , ossia modulo connesso con analog ad A0 su arduino e vcc e gnd sempre sulla mega.
Il codice che ho usato è il seguente :

Code: [Select]
const int tocPin = A0; // Pin A0: modulo audio
const int ledPin = 8; // Pin 13: LED di controllo.
const int soglia = 1000; // soglia: valore oltre al quale considerare l'impulso sonoro
double elenco[2]; // Sette battiti sono la sequenza che attiva il LED (0-2)
double lastSound; // Dopo alcuni secondi di silenzio, cancella la sequenza


void setup()
{
  Serial.begin(9600);      // Imposto la connessione seriale
  pinMode(ledPin, OUTPUT); // Dichiaro ledPin come OUTPUT
}


void loop()
{
  // Leggo il valore analogico (da 0 a 1023) del sensore
  float valoreSensore = analogRead(tocPin);   
 
  // Se il valore supera la soglia
  if (valoreSensore >= soglia)
  {
    Serial.println(valoreSensore); // Stampo la scritta
    Serial.println("Toc! Toc!"); // Stampo la scritta
    registraBattito(); // Registro in elenco il momento in cui viene avvertito il battito
    valutaSequenza(); // Controllo se la sequenza e' completa
    delay(100);  // Aspetto per non sovraccaricare il buffer della porta seriale
  }

 
  // Sequenza cominciata ma oltre 2 secondi di silenzio: resetto
  if ( elenco[0] && millis()-lastSound > 2000 ) { resetta(); }
}

// Registro il momento in cui viene avvertito il colpo
void registraBattito()
{
  double time = millis();
  lastSound = millis();
  if ( elenco[0]==0 ) { elenco[0] = time; return; }
  if ( elenco[1]==0 ) { elenco[1] = time; return; }

}

void valutaSequenza()
{
  // Se c'e' il numero corretto di battiti registrati
  if ( elenco[1] > 0 )
  {
    // Stampa delta, ovvero il tempo trascorso tra un battito e il precedente
    stampaDelta();
   
    // Verifica il "ritmo" della sequenza di battiTO
    if ( elenco[1]-elenco[0] >= 200 && elenco[1]-elenco[0] <= 450 ) // 250
      success();

    // Resetto l'elenco ogni volta che ha registrato 2 battiti
    resetta();
  }
}


void resetta()
{
  Serial.println("Resetto.");
  for ( int n=0; n<=1; n++ ) { elenco[n] = 0; }
}


void stampaDelta()
{
  // Mostra il tempo trascorso tra un battito e il precedente
  for ( int n=0; n<=1; n++ )
  {
    Serial.print("Delta: ");
    Serial.print(elenco[n]);
    Serial.print("-");
    Serial.print(elenco[n-1]);
    Serial.print("=");
    Serial.println(elenco[n]-elenco[n-1]);
  }
}


// Sequenza corretta: il LED si accende
void success()
{
  Serial.println("SEQUENZA CORRETTA!!");
  if (digitalRead(ledPin)== HIGH){
    digitalWrite(ledPin,LOW);
    }
    else{
    digitalWrite(ledPin,HIGH);
}
 
}


Funziona perfettamente e va su una determinata frequenza non so come ma se fischio non funziona se do una botta al tavolo neanche se faccio vocalmente ooo ooo imitando il suono delle mani funziona e logicamente anche con le mani per un raggio di 6 mq.... Solo che il battito deve essere leggermente forte quindi volevo sapere se c'è un modo per ricevere dei valori intermedi tra 28 e 1023.

Madwriter

come si imita vocalmente il rumore delle mani? :smiley-eek-blue:
comunquue di basta abbassare il valore della solgia con cui fai l'if:
const int soglia = 1000;
a
const int soglia = 800;

è un modulo analogico non è che puoi impostarci qualcos'altro  :smiley-mr-green:

ps gli AC/DC Spaccano  :smiley-yell:
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Go Up