Este sketch, apresentado aos alunos do projeto ROBÓTICA NA ESCOLA, utiliza um sensor de som para comandar o acender e apagar de led’s e o efeito
sonoro de um buzzer. O controle da sensibilidade do sensor é feito a partir do
ajuste do potenciômetro inserido na placa (trimpot). Sem o bater de duas
palmas, ou dois estalos de dedos, o led aceso será o verde, caso contrário, se
acenderá o vermelho e o buzzer soará um alerta.
HARDWARE: SENSOR DE SOM/BUZZER/LED’S/RESISTORES
22OΩ
/*
***********************************************************************
*
PROJETO ROBÓTICA NA ESCOLA 2016 *
*
SENSOR DE SOM ACIONANDO LED E
BUZZER *
*
EE DR PEDRO VELHO –
RN/BR *
***********************************************************************
*/
int microfone = A2;
int buzzer = 3;
int ledVed = 10;
int ledVem = 11;
//Contador de estalos
int contEstalo = 0;
// número de estalos para ligar o led
vermelho
int estaloLiga = 2;
// número de estalos para desligar o led
vermelho
int
estaloDesliga = 2;
//tempo máximo entre dois estalos
unsigned long tempoMaximo = 1000;
//tempo mínimo entre estalos
unsigned long tempoMinimo = 300;
//tempo de duração do estalo
unsigned long duracaoEstalo = 100;
unsigned long tempo;
unsigned long inicioTempo = 0;
void setup()
{
pinMode(microfone, INPUT);
pinMode(ledVed, OUTPUT);
pinMode(ledVem, OUTPUT);
pinMode(buzzer, OUTPUT);
digitalWrite(ledVem, LOW);
digitalWrite(ledVed, HIGH);
}
{
//inicia a contagem de tempo
tempo = millis();
//verifica o tempo entre dois estalos
unsigned long tempoApos1 = tempo - inicioTempo;
{
//verifica se o tempo decorrido respeita o intervalo entre dois estalos
if (tempoApos1 < tempoMinimo || tempoApos1 > tempoMaximo)
{
//fora do intervalo zera contagem e tempo
contEstalo = 0;
inicioTempo = millis();
}
else
{
//dentro do intervalo faz a contagem do tempo e estalos
contEstalo ++;
inicioTempo = millis();
}
//verifica se a contagem de estalos é igual ou superior ao número
//esperado e se o led vermelho está ligado
if ((contEstalo >= estaloLiga - 1) &&(digitalRead(ledVem) ==
HIGH) ) {
//liga led verde, apaga vermelho
e zera contagem
noTone(buzzer);
digitalWrite(ledVem, LOW);
digitalWrite(ledVed, HIGH);
contEstalo = 0;
}
//verifica se a contagem de estalos é igual ou superior ao número
//esperado e se o led vermelho está desligado
if ((contEstalo >= estaloDesliga - 1) &&(digitalRead(ledVem)
== LOW))
{
digitalWrite(ledVem, HIGH);
digitalWrite(ledVed, LOW);
tone (buzzer,110,250);
contEstalo = 0;
}
}
}
Nenhum comentário:
Postar um comentário