Arduino Sound Sensor

From wikiluntti
Revision as of 17:39, 18 November 2024 by Mol (talk | contribs) (→‎Code 2)

Introduction

Simple sound sensor; output True or False.

Code 1. The simple

Tutorial page: https://arduinogetstarted.com/tutorials/arduino-sound-sensor

#define SENSOR_PIN 7

int lastState = HIGH;  // the previous state from the input pin
int currentState;      // the current reading from the input pin

void setup() {
  Serial.begin(9600);
  pinMode(SENSOR_PIN, INPUT);
}

void loop() {
  currentState = digitalRead(SENSOR_PIN);
  if (currentState){
     Serial.println( currentState );
  }else{
     Serial.print("Schii");
  }

}


Exercises

Code 1

Turn on the one more LED if the sound is strong enough.

#include <FastLED.h>

#define SENSOR_PIN 7
#define NUM_LEDS 10
#define LED_PIN 5

int soundState = HIGH;  // the previous state from the input pin
int numLeds = 0;
CRGB leds[NUM_LEDS];


void setup() {
  Serial.begin(9600);
  pinMode(SENSOR_PIN, INPUT);
  FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
  FastLED.setBrightness(20);
}

void loop() {
  soundState = digitalRead(SENSOR_PIN);
  if (soundState){
    numLeds++;
  }

  for (int i=0; i<min( numLeds, NUM_LEDS); i++){
    leds[i] = CRGB::Green;
    FastLED.show();
  }

  if (soundState){
    Serial.println("");
     Serial.println( soundState );
  }else{
     Serial.print("Schii");
  }

}


Code 2

  1. Turn all the LEDS to black in the SetUp()
  2. Add delay when sound is noticed (not two LEDs turning on at the same time).
  3. turn of the last led after a while.


Code 3: test

#include <FastLED.h>

// Arduino's pin connected to OUT pin of the sound sensor
#define SENSOR_PIN 7
#define NUM_LEDS 10
#define LED_PIN 5

int soundState = HIGH;  // the previous state from the input pin
int numLeds = 0;
CRGB leds[NUM_LEDS];
int turnOffStart;

void setup() {
  Serial.begin(9600);
  pinMode(SENSOR_PIN, INPUT);
  FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
  FastLED.setBrightness(20);
  for (int i=0; i<NUM_LEDS; i++){
    leds[i] = CRGB::Black;
    FastLED.show();
  }
  turnOffStart = millis();

}



void loop() {
  soundState = digitalRead(SENSOR_PIN);
  if (soundState){
    numLeds++;
    turnOffStart = millis();
    delay(50);

  }
  if (millis() - turnOffStart > 200){
    turnOffStart = millis();
    numLeds = max( 0, numLeds--);
  }

  for (int i = min( numLeds, NUM_LEDS); i<NUM_LEDS; i++){
    leds[i] = CRGB::Black;
    FastLED.show();
  } 

  for (int i=0; i<min( numLeds, NUM_LEDS); i++){
    leds[i] = CRGB::Green;
    FastLED.show();
  }

}