Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:tmiu:decibelmeter [2023/05/07 21:02]
mircea.hristea [Hardware Design]
pm:prj2023:tmiu:decibelmeter [2023/05/29 17:50] (current)
mircea.hristea [Concluzii]
Line 10: Line 10:
 Utilizam un modul microfon pentru captarea sunetului si o placuta Arduino Uno R3 pentru procesarea lui, in functie de intensitatea sunetului se va aprinde secvential un ansamblu de leduri si se va transmite valoarea in dB unui ecran LCD. Utilizam un modul microfon pentru captarea sunetului si o placuta Arduino Uno R3 pentru procesarea lui, in functie de intensitatea sunetului se va aprinde secvential un ansamblu de leduri si se va transmite valoarea in dB unui ecran LCD.
  
-{{:​pm:​prj2023:​tmiu:​diagrama.png?​200|}}+{{:​pm:​prj2023:​tmiu:​diagrama.png?​300x200}}
  
 </​note>​ </​note>​
Line 17: Line 17:
  
 <note tip> <note tip>
-Piese utilizate(subject to changes):+**Componente ​utilizate:**
   *Arduino Uno R3   *Arduino Uno R3
   *Breadboard   *Breadboard
   *LEDs   *LEDs
-  *Rezistente+  ​*Cabluri 
 +  ​*Rezistente ​
   *Modul microfon   *Modul microfon
   *Display LCD   *Display LCD
  
 +**Schema hardware:​**\\ ​
 +{{:​pm:​prj2023:​tmiu:​decibelmeter_hw_scheme.png?​500x300}}
 </​note>​ </​note>​
  
Line 31: Line 34:
  
 <note tip> <note tip>
-**work in progress**+<file c++> 
 +#include <​Wire.h>​ 
 +#include <​LiquidCrystal_I2C.h>​  
 +LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27,​ 16, 2); 
 +  
 +const int sampleWindow = 50;                               
 +unsigned int sample; 
 +  
 +#define SENSOR_PIN A0 
 +#define PIN_QUIET1 3 
 +#define PIN_QUIET2 4 
 +#define PIN_MODERATE1 5 
 +#define PIN_MODERATE2 6 
 +#define PIN_LOUD1 7 
 +#define PIN_LOUD2 8 
 +  
 +void setup ()   
 +{    
 +  pinMode (SENSOR_PIN,​ INPUT); ​  
 +  pinMode(PIN_QUIET1,​ OUTPUT); 
 +  pinMode(PIN_QUIET2,​ OUTPUT); 
 +  pinMode(PIN_MODERATE1,​ OUTPUT); 
 +  pinMode(PIN_MODERATE2,​ OUTPUT); 
 +  pinMode(PIN_LOUD1,​ OUTPUT);  
 +  pinMode(PIN_LOUD2,​ OUTPUT);  
 +  
 +  digitalWrite(PIN_QUIET1,​ LOW); 
 +  digitalWrite(PIN_QUIET2,​ LOW); 
 +  digitalWrite(PIN_MODERATE1,​ LOW); 
 +  digitalWrite(PIN_MODERATE2,​ LOW); 
 +  digitalWrite(PIN_LOUD1,​ LOW); 
 +  digitalWrite(PIN_LOUD2,​ LOW); 
 +   
 +  
 +   
 +  lcd.backlight();​ 
 +  delay(20);​ 
 +  lcd.init();​ 
 +}   
 +  
 +    
 +void loop ()   
 +{  
 +   ​unsigned long startMillis= millis(); ​                   
 +   float peakToPeak = 0;                                  
 +  
 +   ​unsigned int signalMax = 0;                             
 +   ​unsigned int signalMin = 1024;                          
 +  
 +                                                           
 +   while (millis() - startMillis < sampleWindow) 
 +   { 
 +      sample = analogRead(SENSOR_PIN); ​                   
 +      if (sample < 1024)                                   
 +      { 
 +         if (sample > signalMax) 
 +         { 
 +            signalMax = sample; ​                           
 +         } 
 +         else if (sample < signalMin) 
 +         { 
 +            signalMin = sample; ​                           
 +         } 
 +      } 
 +   } 
 +  
 +   ​peakToPeak = signalMax - signalMin; ​                    
 +   int db = map(peakToPeak,​0,​500,​28,​85); ​             
 +  lcd.setCursor(0,​ 0); 
 +  lcd.print("​Loudness:​ "); 
 +  lcd.print(db);​ 
 +  lcd.print("​dB"​);​ 
 +  if(db <= 30){ 
 +    digitalWrite(PIN_QUIET1,​ LOW); 
 +    digitalWrite(PIN_QUIET2,​ LOW); 
 +    digitalWrite(PIN_MODERATE1,​ LOW); 
 +    digitalWrite(PIN_MODERATE2,​ LOW); 
 +    digitalWrite(PIN_LOUD1,​ LOW); 
 +    digitalWrite(PIN_LOUD2,​ LOW); 
 +  } 
 + 
 +  else if (db > 30 && db < 35) 
 +  { 
 +    digitalWrite(PIN_QUIET1,​ HIGH); 
 +    digitalWrite(PIN_QUIET2,​ LOW); 
 +    digitalWrite(PIN_MODERATE1,​ LOW); 
 +    digitalWrite(PIN_MODERATE2,​ LOW); 
 +    digitalWrite(PIN_LOUD1,​ LOW); 
 +    digitalWrite(PIN_LOUD2,​ LOW); 
 +  } 
 +   
 +  else if (db >= 35 && db < 40) 
 +  { 
 +    digitalWrite(PIN_QUIET1,​ HIGH); 
 +    digitalWrite(PIN_QUIET2,​ HIGH); 
 +    digitalWrite(PIN_MODERATE1,​ LOW); 
 +    digitalWrite(PIN_MODERATE2,​ LOW); 
 +    digitalWrite(PIN_LOUD1,​ LOW); 
 +    digitalWrite(PIN_LOUD2,​ LOW); 
 +  } 
 + 
 +  else if (db >= 40 && db < 45) 
 +  { 
 +    digitalWrite(PIN_QUIET1,​ HIGH); 
 +    digitalWrite(PIN_QUIET2,​ HIGH); 
 +    digitalWrite(PIN_MODERATE1,​ HIGH); 
 +    digitalWrite(PIN_MODERATE2,​ LOW); 
 +    digitalWrite(PIN_LOUD1,​ LOW); 
 +    digitalWrite(PIN_LOUD2,​ LOW); 
 +  } 
 + 
 +  else if (db >= 45 && db < 50) 
 +  { 
 +    digitalWrite(PIN_QUIET1,​ HIGH); 
 +    digitalWrite(PIN_QUIET2,​ HIGH); 
 +    digitalWrite(PIN_MODERATE1,​ HIGH); 
 +    digitalWrite(PIN_MODERATE2,​ HIGH); 
 +    digitalWrite(PIN_LOUD1,​ LOW); 
 +    digitalWrite(PIN_LOUD2,​ LOW); 
 +  } 
 +  else if (db >= 50 && db < 60) 
 +  { 
 +    digitalWrite(PIN_QUIET1,​ HIGH); 
 +    digitalWrite(PIN_QUIET2,​ HIGH); 
 +    digitalWrite(PIN_MODERATE1,​ HIGH); 
 +    digitalWrite(PIN_MODERATE2,​ HIGH); 
 +    digitalWrite(PIN_LOUD1,​ HIGH); 
 +    digitalWrite(PIN_LOUD2,​ LOW); 
 +  
 +  } 
 + 
 +  else if (db >= 65) 
 +  { 
 +    digitalWrite(PIN_QUIET1,​ HIGH); 
 +    digitalWrite(PIN_QUIET2,​ HIGH); 
 +    digitalWrite(PIN_MODERATE1,​ HIGH); 
 +    digitalWrite(PIN_MODERATE2,​ HIGH); 
 +    digitalWrite(PIN_LOUD1,​ HIGH); 
 +    digitalWrite(PIN_LOUD2,​ HIGH); 
 +  
 +  } 
 +    
 +   ​delay(200);​  
 +   ​lcd.clear();​ 
 +
 +</​file>​ 
 + 
 +Dezvoltat folosind Arduino IDE, am utilizat "​Wire.h"​ si "​LiquidCrystal_I2C"​ pentru interactiunea cu ecranul LCD.
 </​note>​ </​note>​
  
Line 37: Line 187:
  
 <note tip> <note tip>
-**work ​in progress**+Realizarea unui decibelmetru functional, usor de folosit, capabil sa lucreze ​in intervale de sunet uzuale (30dB-65dB).
 </​note>​ </​note>​
  
Line 49: Line 199:
  
 <note tip> <note tip>
-Finished initial doc. (5/6/2023)+Finished initial doc. (5/6/2023) \\  
 +Added hardware schematic and source code of the project. (5/26/2023)
 </​note>​ </​note>​
  
pm/prj2023/tmiu/decibelmeter.1683482555.txt.gz · Last modified: 2023/05/07 21:02 by mircea.hristea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0