Skip to content
logo9minuti120x48
Menu
  • Home
  • Tutorial
    • Zaini
    • Stampa 3d
    • ebook
    • Informatica
  • Scritti
    • Racconti
    • Articoli
    • Temi
    • Storia
  • Video
  • Progetti
    • Progetto Carcere
    • Progetto Istruzione
    • Progetto Acque pulite
    • Progetto Tecnologia
  • Chi siamo
    • LinkTree
  • Privacy Policy
    • Cookie Policy (EU)
  • Blog
  • Donazioni
Menu
Microfono Adafruit MAX9814 con Arduino

Microfono Adafruit MAX9814 con Arduino

Posted on 17 Dicembre 201815 Settembre 2019 by Alessandro Oppo

Ben ritrovati su 9minuti.it, oggi parleremo di un modulo microfono che, a differenza degli altri venduti nei vari kit, funziona.

Questo sensore sonoro stato progettato dai mitici ragazzi di Adafruit ed è stato reso open source, quindi si trovano anche i cloni a poco prezzo.

Ogni tanto però sarebbe anche giusto supportarli, non credete?

Microfono Adafruit MAX9814 con Arduino
Microfono Adafruit MAX9814 con Arduino

Il collegamento del Microfono Adafruit MAX9814 con Arduino

Bisogna solo collegare Vdd, Gnd e la porta Out a un’entrata analogica.

Se volessimo abbassare i db massimi captati dal modulo bisogna connettere Gain a Gnd o a Vdd, c’è tutto scritto sul modulo stesso ed è piuttosto intuitivo.

microfonoAdafruit

Lo sketch

Questo sketch non l’ho scritto io ma l’ho preso da sito della Adafruit ed è stato scritto appositamente per il microfono Adafruit MAX9814 con Arduino.

Vediamo il codice riga per riga per utilizzare il microfono come sensore di rumore.

/****************************************
  Example Sound Level Sketch for the
  Adafruit Microphone Amplifier
****************************************/

const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;

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


void loop()
{
  unsigned long startMillis = millis(); // Start of sample window
  unsigned int peakToPeak = 0;   // peak-to-peak level

  unsigned int signalMax = 0;
  unsigned int signalMin = 1024;

  // collect data for 50 mS
  while (millis() - startMillis < sampleWindow)
  {
    sample = analogRead(0);
    if (sample < 1024)  // toss out spurious readings
    {
      if (sample > signalMax)
      {
        signalMax = sample;  // save just the max levels
      }
      else if (sample < signalMin)
      {
        signalMin = sample;  // save just the min levels
      }
    }
  }
  peakToPeak = signalMax - signalMin;  // max - min = peak-peak amplitude
  double volts = (peakToPeak * 5.0) / 1024;  // convert to volts

  Serial.println(volts);
}

Il commento

6 – Dichiarazione della costante intera sampleWindow che sarà il tempo espresso in millisecondi fra una lettura e l’altra
7 – Dichiarazione di un intero unsigned di nome sample
9 – Apertura del Setup
11 – Inizializziamo la porta seriale
15 – Apertura del ciclo Loop
17 – Salviamo i millis attuali nella variabile startMillis di tipo long unsigned
18 – Creazione della variabile peakToPeak usata per salvare dentro la differenza fra il segnale minimo e il massimo
20 – signalMax è il valore massimo
21 – signalMin è il valore minimo
24 – Finché il contatore di millisecondi da quando è stato acceso Arduino, a cui sottraggo i millisecondi contenuti in startMillis, sono superiori alla nostra sampleWindow, allora eseguiamo il codice all’interno del ciclio while
26 – Salviamo all’interno della variabile sample il valore letto sull’entrata analogica 0
27 – Se il valore di sample è inferiore a 1024, ovvero il valore massimo leggibile sulla porta analogica
29 – Se il valore di sample è maggiore del valore massimo riscontrato salvato dentro signalMax
31 – Aggiorna il valore massimo con quello contenuto in sample
33 – Altrimenti, se il valore di sample è inferiore a signalMin
35 – Aggiornamento del valore di signalMin con il valore contenuto in sample
39 – peakToPeak è la variabile che conterrà la differenza tra il valore massimo e il valore minimo riscontrato
40 – Il valore peakToPeak viene moltiplicato per 5 che è il voltaggio con cui funziona Arduino e poi diviso per 1024 perché la porta analogica può andare da 0 a 1024.
42 – Stampa della variabile volts che conterrà il nostro valore!

Spero via sia piaciuto e che vogliate condividere questo articolo per supportare il blog.

Per questo tutorial è tutto e spero che vi sia stato utile e se avete bisogno di aiuto rimango a disposizione.

Come sempre vi chiedo se potete gentilmente commentare o condividere questo articolo per aiutarmi nella manutenzione del sito web.

Grazie mille,
Alessandro

Dammi un 5 virtuale, clicca like e condividi.

  • Fai clic qui per condividere su LinkedIn (Si apre in una nuova finestra)
  • Fai clic per condividere su Facebook (Si apre in una nuova finestra)
  • Fai clic qui per condividere su Twitter (Si apre in una nuova finestra)
  • Fai clic qui per condividere su Reddit (Si apre in una nuova finestra)
  • Fai clic per condividere su WhatsApp (Si apre in una nuova finestra)
  • Fai clic per condividere su Telegram (Si apre in una nuova finestra)
  • Fai clic per inviare un link a un amico via e-mail (Si apre in una nuova finestra)

Related

Cosa ne pensi? Fammelo sapere con un messaggio Annulla risposta

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Scoprici sui social

  • YouTube
  • Telegram
  • Facebook
  • RSS Feed

    Ultimi post

    • Buzzurretto e la scuola – Racconto breve
    • Il mio punto di vista sul progetto scuola
    • Di nuovo nuvole – Racconto breve
    • L’intelligenza artificiale, la forza della logica e la morale – ChatGPT
    • Videogrep, how to extract a certain word from a video (or more)
    • Brucerò tutto non appena è stato scritto – Racconto breve
    • C’è del lavoro da fare – Racconto breve

    Newsletter

    ©2023 9minuti | Design: Newspaperly WordPress Theme
    Manage Cookie Consent
    Usiamo cookie per ottimizzare il nostro sito web ed i nostri servizi.
    Cookie funzionali Sempre attivo
    The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
    Preferences
    The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
    Statistics
    The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
    Marketing
    The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
    Gestisci opzioni Gestisci servizi Gestisci fornitori Per saperne di più su questi scopi
    Visualizza preference
    {title} {title} {title}
     

    Caricamento commenti...