Pages: 1 ... 3 4 [5] 6 7   Go Down
Author Topic: [RISOLTO]Creare interruttore battimani  (Read 12490 times)
0 Members and 1 Guest are viewing this topic.
Napoli
Offline Offline
Full Member
***
Karma: 0
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quando batto le mani non da segni di vita
Logged

Torino
Offline Offline
God Member
*****
Karma: 3
Posts: 766
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

prova prima con il pot tutto in un senso e poi riprova con il pot ruotato tutto nell'altro....Hai collegato i pin del pot in maniera giusta senza confondere il pin centrale con uno dei due laterali ?
Logged

Napoli
Offline Offline
Full Member
***
Karma: 0
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

una domanda ma il microf. devo collegare vcc, gnd, aud normalmente?
Logged

Torino
Offline Offline
God Member
*****
Karma: 3
Posts: 766
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non so se ho capito bene la domanda.....Il microfono deve essere alimentato come facevi prima ,altrimenti non funziona niente..

edit.  aud devi collegarlo al potenziometro come ti ha fatto vedere brunello
« Last Edit: September 01, 2012, 09:44:20 am by tonid » Logged

Napoli
Offline Offline
Full Member
***
Karma: 0
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dimmi una cosa come posso aggiungere il codice per farlo vedere a tutti voi? forse sbaglio a regolare A0.
Logged

Napoli
Offline Offline
Full Member
***
Karma: 0
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

QUESTO  E IL CODICE:

Code:
/*
*
* Clapper project
* author: Manoj Kunthu
* last update: 6/5/11
*/


int clap = 1;
boolean enabled = true;
int sensorValue = 0;


int SIZE = 25;
int buffer[25];


int now = 0;
int average = 0;
int total = 0;
int offset = 30;
boolean initialized = false;


int out = 10;


const int inPin0 = A0;
const int clapLed1 = 12;
const int clapLed2 = 11;


const int  buttonPin = 2;    // the pin that the pushbutton is attached to
const int ledPin = 3;       // the pin that the LED is attached to


// Variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button


void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(out, OUTPUT);
  
  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  // initialize the LED as an output:
  pinMode(ledPin, OUTPUT);
  
  pinMode(clapLed1, OUTPUT);
  pinMode(clapLed2, OUTPUT);


  Serial.begin(9600);
}


void loop() {
  // read the pushbutton input pin:
  buttonState = digitalRead(buttonPin);
  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      buttonPushCounter++;
    }
  }
  // save the current state as the last state,
  //for next time through the loop
  lastButtonState = buttonState;


  if (buttonPushCounter % 2 == 0) {
    digitalWrite(ledPin, HIGH);
    
    enabled = true;
  }
  else {
    digitalWrite(ledPin, LOW);
    digitalWrite(clapLed1, LOW);
    digitalWrite(clapLed2, LOW);
    enabled = false;
  }


  if(enabled){
    sensorValue = analogRead(inPin0);


    //insert the sensor value into the array
    if(initialized){          
      total = total - buffer[now] + sensorValue;    
    }          
    else{
      total = total + sensorValue;


      if(now + 1 >= SIZE)
        initialized = true;
    }


    //Find the average room noise level
    if(initialized)
      average = (total/SIZE) + offset;
    else
      average = (total/(now+1)) + offset;
    
    if (sensorValue > average)
    {
      Serial.print(" AVE: ");
      Serial.print(average);
      Serial.print("    Sensor: ");
      Serial.println(sensorValue);
    }


    if (sensorValue > average+30)
    {
      
      digitalWrite(clapLed1, HIGH);
      
      Serial.print(" AVE: ");
      Serial.print(average);
      Serial.print("    Sensor: ");
      Serial.println(sensorValue);
      //clap *= -1;
      Serial.println("---Single req");
      delay(100);


      int inc;
      for(inc = 0; inc<2000; inc++)
      {
        sensorValue = analogRead(inPin0);
        //insert the sensor value into the array
        if(initialized){          
          total = total - buffer[now] + sensorValue;    
        }          
        else{
          total = total + sensorValue;


          if(now + 1 >= SIZE)
            initialized = true;
        }


        //Find the average room noise level
        if(initialized)
          average = (total/SIZE) + offset;
        else
          average = (total/(now+1)) + offset;


        if (sensorValue > average)
        {
          digitalWrite(clapLed2, HIGH);
          Serial.print("--- AVE: ");
          Serial.print(average);
          Serial.print("    Sensor: ");
          Serial.println(sensorValue);
          clap *= -1;
          Serial.println("--------Double Clap");


          if(clap == 1){
            digitalWrite(out, HIGH);   // set the LED on
          }
          else{
            digitalWrite(out, LOW);   // set the LED off
          }
          delay(1000);
          break;
        }
        buffer[now] = sensorValue;
        now = (now+1)%SIZE;
      }
      Serial.println("---Single ack");
      delay(500);
      Serial.println("done");
    }
    buffer[now] = sensorValue;
    now = (now+1)%SIZE;


    if(average < 0 || average > 800)
    {
      initialized = false;
      
      for(now = 0;now < SIZE; now++)
      {
       buffer[now] = 0;
      }
      
      digitalWrite(out, LOW);
      total = 0;
      now = 0;
      average =0;
      Serial.print(average);
      Serial.println("RESET");


    }
  }
  else
  {
    digitalWrite(3, LOW);
    Serial.println("disabled ");
  }
  digitalWrite(clapLed1, LOW);
  digitalWrite(clapLed2, LOW);
}


« Last Edit: September 01, 2012, 10:00:17 am by electro2 » Logged

Offline Offline
Full Member
***
Karma: 4
Posts: 219
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

voglio dire, ok non mettiamo il filtro, ma leggendo il sorgente mi pongo una domanda.....

sto sognando o sono in fase rem? cioè vorrei sapere ... qualcuno ha testato il programma?

vi chiedo questo perchè non riesco a decifrare la funzione di questo firmware...
il codice dovrebbe riconoscere il battito delle mani.... ma almeno qualcosa che ci assomigli... giusto?

Detto ciò,
dov'è la funzione derivata prima per il calcolo del gradiente da applicare ai campioni acquisiti dall'adc attraverso la quale si potrebbe in qualche modo estrapolare l'informazione di una variazione improvvisa del livello audio e quindi la pendenza con cui varia il volume ?(il battito è un rumore secco improvviso con certe caratteristiche simili ad uno sparo)
Magari a quel punto misurandone anche la durata si potrebbero utilizzare queste informazioni per dire: questo è un battito di mani, questo no.
Per fare un riconoscitore di battito-mani è necessario almeno un analizzatore di inviluppo ampiezza audio.... se nò stiamo parlando di un semplicissimo Vox Controlled Relay Switch, che è tutta un'altra cosa.

ciao
« Last Edit: September 01, 2012, 02:53:33 pm by cyclone » Logged

Napoli
Offline Offline
Full Member
***
Karma: 0
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

credo che tu abbia perfettamente ragione ciclone , cosa mi suggerisci di fare? grazie
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12521
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Cyclone, io te l'ho detto sin dal tuo primo intervento in questo Topic che qui non si sta volando basso, si sta scavando sotto terra. Se vuoi il mio parere il circuito iniziale che il nostro paisà ha realizzato con qualche modifica è un semplice "riconoscitore" di rumore, noi ci abbiamo scherzato su ma le cose stanno realmente così. Il principio è:
il mike percepisce qualunque cosa e la amplifica fornendo segnali sinus all'ingresso di A0, quando l'intensità del segnale supera per tre volte la soglia stabilita nel firmware, si accende il carico.
Quindi è davvero possibilissimo che uno scorr, una gridata, un piatto che si rompe, una finestra che sbatte, rientrino nei rumori che contribuiscono al "funzionamento", appunto un "Vox Controlled Relay Switch", come lo chiami tu.
Quindi tutto ciò che tu ti aspetti non c'è, hai voglia di ammazzarti, speravo te ne fossi reso conto da solo.
L'unica cosa che si può fare lì è alzare il più possibile la soglia di intensità minima e diminuire l'amplificazione del mike, io ho dato la dritta, brunello gli ha dato lo schema (ma il potenziometro non dovrebbe superare i 10kohm), lui non è stato nemmeno in grado di montarlo, eppure quello schemino è perfetto, ora mi viene sinceramente da ridere pensando che, pur non avendo compreso, come buona parte di tutti noi, una beneamata mazza del tuo ultimo discorso, ti dà ragione e ti chiede come deve procedere.

@ electro2: tu non hai davvero idea di cosa sia la barca sulla quale stai tentando di salire, il mio spassionato consiglio è: prova a montare un potenziometro da 10k come ti ha schematizzato brunello e a tentativi regolalo fino ad ottenere la migliore combinazione, quello sarà il massimo del tuo circuito, altrimenti cancella tutto e aspetta che Cyclone ti faccia uno sketch adeguato e ti aiuti a completare l'hardware, se lui ha la pazienza di farlo saremo tutti contenti.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Napoli
Offline Offline
Full Member
***
Karma: 0
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

menniti io non voglio che ciclone mi faccia lo schema come ai detto tu, e poi anche se ti sempra strano, una mezza cosa l'ho capita...io volevo un suggerimento riguardo il lavoro fatto, se lo butto nel cesso oppure continuo , capì paisa'  smiley-grin  il potenziometro lo montato bene, nel serial monitor mi da i valori della resistenza , ma il circuito non funziona, cioè  il rele' non attacca......se vedi i post precedenti io ho fatto notare quale microfono io abbia comprato....dagli un'occhiata

Comunque vada, Volevo scusarmi con tutti voi per la mia cocciuta testa, non credevo che avevate perso la pazienza......Grazie lo stesso
« Last Edit: September 01, 2012, 03:11:20 pm by electro2 » Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12521
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

non penso che nessuno abbia perso la pazienza, però tu devi seguire una strada per volta, se fai il grillo alla fine non concludi nulla.
Allora, il potenziometro, se lo hai collegato CORRETTAMENTE, girato su un estremo fa funzionare il circuito normalmente, com'è ora; girato sull'estremo opposto probabilmente non lo fa funzionare; procedendo dalla prima posizione all'ultima, ruotandolo leggermente, devi notare per forza una diminuzione della sensibilità; cioè lo giri tanticchia e provi di nuovo col rumore, un poco alla volta, per forza di cose devi arrivare ad un punto decente. Se dici che non funziona stai sbagliando qualcosa, certamente il potenziometro non deve andare oltre 10k, amio avviso, che valore hai usato?
Il microfono che hai preso è esattamente quello di cui abbiamo sempre parlato, amplifica 100 volte il segnale di ingresso, ovvio che scatta per qualsiasi rumorino; col metodo che ti ho detto in qualche modo riduciamo tale fattore, ma devi fare la prova con impegno altrimenti certo che poi ci si scoccia. ah, durante le prove e ccriature tienle luntane, chelle fanno cchiu casino delle bertucce e non ti aiutano certo a tarare lo strumento come si deve smiley-sweat
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Offline Offline
Full Member
***
Karma: 4
Posts: 219
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non voglio perdere le speranze neppure io....
facciamoloooo funzionareeeee

se i consigli di menniti non andranno a buon fine, ma non per colpa sua...
ti dò l'ultima chance ma ti devi sforzare tanto ma tantoooo e poi boh!

per non farti complicare la vita con le matematiche .. e con le TDS o teorie dei sistemi
ti allego uno schema di un filtro realizzato apposta per la tua applicazione con un cutoff a 15.92 Hz per quanto riguarda il fpa e
un altro cutoff a 4822.9 Hz relativo al fpb.

non saprei più come aiutarti smiley stasera ho battuto le mani come uno scemo per farti sto filtro.


* cyclone-clap.jpg (51.07 KB, 1132x496 - viewed 80 times.)

* F_Plot cyclone.jpg (61.95 KB, 584x508 - viewed 58 times.)
« Last Edit: September 01, 2012, 04:08:42 pm by cyclone » Logged

Torino
Offline Offline
God Member
*****
Karma: 3
Posts: 766
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
menniti io non voglio che ciclone mi faccia lo schema come ai detto tu, e poi anche se ti sempra strano, una mezza cosa l'ho capita...io volevo un suggerimento riguardo il lavoro fatto, se lo butto nel cesso oppure continuo , capì paisa'    il potenziometro lo montato bene, nel serial monitor mi da i valori della resistenza , ma il circuito non funziona, cioè  il rele' non attacca......se vedi i post precedenti io ho fatto notare quale microfono io abbia comprato....dagli un'occhiata

Comunque vada, Volevo scusarmi con tutti voi per la mia cocciuta testa, non credevo che avevate perso la pazienza......Grazie lo stesso

Io non ho perso la pazienza e,come diceva Michele,non credo che nessuno altro l'abbia persa....
Il microfono deve essere collegato come segue:
-vcc va a +5volt di arduino;
-gnd va a gnd di arduino;
-aud va al  primo pin del potenziometro;
-il terzo pin del potenziometro va a gnd;
-il pin centrale del potenziometro(cursore) va all'ingresso analogico di arduino A0.
Ora ,se i collegamenti sono tutti giusti ,tenendo il pot tutto girato verso il primo pin non avrai nessuna attenuazione del segnale di uscita del microfono quindi il circuito dovrebbe per forza funzionare e avere la stessa sensibilità a qualsiasi tipo di rumore così come avevi prima. Girando invece il pot nella direzione opposta inizierai ad avere man mano una attenuazione del segnale del microfono fino a farlo scomparire nel caso che arrivi a fine corsa del pot.
Per quanto riguarda invece il sw è parecchio incasinato e sinceramente io non sono riuscito a capire bene quello che è stato fatto.....
Se dopo che ricontrolli tutti i collegamenti e ti assicuri che tutti i fili facciano bene contatto(capita che non sia così)il relè non si accende lo stesso bisogna capire cosa non va ma non è il potenziometro che può aver compromesso il funzionamento del circuito.

ops.....mentre scrivevo è arrivato uno schema....ora invio e guardo...
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12521
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

secondo me la pazienza l'ha persa lui smiley-twist

@Cyclone: bello e semplice questo passa-banda, speriamo solo che le sue mani non producano frequenze da ali di pipistrello smiley-grin
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Torino
Offline Offline
God Member
*****
Karma: 3
Posts: 766
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
secondo me la pazienza l'ha persa lui

mmmm.... tu dici ?  Sarebbe un peccato.....era ormai vicino alla soluzione più o meno definitiva...
Logged

Pages: 1 ... 3 4 [5] 6 7   Go Up
Jump to: