소리증폭센서 질문입니다.
페이지 정보
작성자 Norway 작성일19-05-30 08:02 조회7,789회 댓글1건본문
소리증폭센서의 센서값을 이용해 서보모터를 제어하는 코딩을 하려고 생각중입니다.
센서값을 측정하기 위해서 오픈소스를 통해 측정해보려고 했는데
센서값이 혼자 오르거나 내려가거나 소리와는 상관없이 변합니다.
두 가지의 오픈소스를 사용했는데 두 가지 모두 마찬가지입니다. 센서의 문제인건가요???
-----------------------------------------------------------------
vhrint SOUND_SENSOR = A0;
int threshold = 25; //감도조절
int Sensor_value;
void setup() {
Serial.begin(9600); // 시리얼모니터 출력
pinMode(SOUND_SENSOR, INPUT);
}
void loop() {
Sensor_value = analogRead(A0); // Analog PIN A0에서 입력값을 읽어와서 Sensor_value에 저장
Serial.println(Sensor_value); // 시리얼모니터에 감도표시
delay(1000);
}
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 * 3.3) / 1024; // convert to volts
Serial.println(volts);
}
------------------------------------------------------------------
이렇게 두 개의 코딩을 써봤습니다. 센서값이 왜 소리를 인식못하고 혼자 변하는지 모르겠습니다.
댓글 : 1
조회수 : 7,789
master님의 댓글
master 작성일
소리는 주파서 성분입니다.
640Hz라고 하면 초당 640번을 오르락 내리락 하는 것인데
다양한 주파수 성분과 세기가 얽혀있기 때문에 읽을 때마다 다른 ADC값을 읽는 것은 당연한겁니다.
DC 전압 측정처럼 같은 값을 읽지 못합니다.