segunda-feira, 24 de fevereiro de 2020

Robótica - Sensores 3 de 37

No artigo anterior falamos sobre o módulo Relay, nesse vamos para o nosso terceiro módulo denominado KY-038 Microphone sound sensor module, prepare a garganta e vamos ver como usar este módulo.

 03. Módulo Sensor de Som por Microfone

Nesta categoria temos 2 módulos quase idênticos, pelo menos na programação, a diferença entre eles está na sensibilidade de detecção do som.

Estes sensores podem detectar som e emitem um sinal analógico ou digital que pode ser usado, por exemplo, para criar um interruptor de luz ao bater palmas. No lado analógico mede a intensidade sonora do ambiente e do lado digital varia o estado caso seja detectado um sinal sonoro.

As ligações com o Arduino são:
  • A0 - Para o pino analógico
  • G  - Negativo do Arduino (ou GND)
  • +  - Positivo do Arduino (ou 5V)
  • D0 - Para o pino digital
Porém o mais importante desse módulo é o parafuso amarelo no topo da caixinha azul, o limite de detecção deve ser ajustado através desse potenciômetro presente no sensor, para regular a saída. Um simples programa para analisar a saída analógica, como:

#define SOM_AN A5;
 
void setup () {
  pinMode(ruido_an, INPUT);
  Serial.begin (9600);
}
void loop () {
  Serial.println(analogRead(SOM_AN), DEC);
  delay (100);
}

É o suficiente para procedermos os ajustes que deve estar com o valor em torno dos 500. Agora podemos realizar um projeto mais interessante, observe a figura com as ligações:


Temos 4 LEDs ligados nas digitais 3 a 6, todos estão em linha com o polo negativo juntamente com um resistor de 220Ω. A ligação com o sensor está ligado na porta analógica A5 e digital 7, além do GND e 5V.

Para a programação temos:

#define SOM_AN A5
#define SOM_DG 7
#define VERM 6
#define AZUL 5
#define AMAR 4
#define VERD 3

int ruido_an = 0;
int ruido_dg = 0;
int liguei = false;

void setup() {
  pinMode(SOM_AN, INPUT);
  pinMode(SOM_DG, INPUT);
  pinMode(VERM, OUTPUT);
  pinMode(AZUL, OUTPUT);
  pinMode(AMAR, OUTPUT);
  pinMode(VERD, OUTPUT);
}
 
void loop() {
  digitalWrite(VERM, LOW);
  digitalWrite(AZUL, LOW);
  digitalWrite(AMAR, LOW);
  digitalWrite(VERD, LOW);
  
  ruido_an = analogRead(SOM_AN);
  ruido_dg = digitalRead(SOM_DG);
  if (ruido_dg == 0) {
    liguei = true;
    digitalWrite(VERM, HIGH);
  }
  if (ruido_an > 510) {
    liguei = true;
    digitalWrite(AZUL, HIGH);
  }
  if (ruido_an > 520) {
    liguei = true;
    digitalWrite(AMAR, HIGH);
  }
  if (ruido_an > 530) {
    liguei = true;
    digitalWrite(VERD, HIGH);
  }    
  if (liguei) {
    delay(100);
    liguei = false;
  }
  delay(10);
}

Primeiro definimos e habilitamos todas as portas usadas, no método setup() indicamos quem são as entradas e as saídas. No método loop(), apagamos todos os LEDs; obtemos os valores da porta analógica e digital; se houver variação na digital acendemos o LED Vermelho, se a porta analógica ultrapassar os 510 acendemos o azul, se ultrapassar 520 o amarelo e se ultrapassar 530 o verde; caso qualquer LED tenha sido ligado aumentamos o tempo de espera.

Pronto, acabamos de criar um sequenciador de som, agora basta falar um pouco mais alto para ver os LEDs acendendo e apagando.

Obrigado e até o próximo sensor
Fernando Anselmo

0 comentários:

Postar um comentário