Differences

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

Link to this comparison view

pm:prj2023:tmiu:decibelmeter [2023/05/06 16:38]
mircea.hristea created
pm:prj2023:tmiu:decibelmeter [2023/05/29 17:50] (current)
mircea.hristea [Concluzii]
Line 8: Line 8:
  
 <note tip> <note tip>
-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.+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?​300x200}} 
 </​note>​ </​note>​
  
Line 14: 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
  
 +**Schema hardware:​**\\ ​
 +{{:​pm:​prj2023:​tmiu:​decibelmeter_hw_scheme.png?​500x300}}
 </​note>​ </​note>​
  
Line 27: 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 33: 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 45: 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.1683380298.txt.gz · Last modified: 2023/05/06 16:38 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