Allan Almeida de Araújo
Programador e Analista de Redes e Telecomunicações
Como acender a luz com palmas e Arduino
Hoje temos que fazer algo "legal" com o Arduino, um detector de
som para acender a luz com palmas . Este circuito é sem dúvida
o mais típico em automação residencial. Quem nunca viu em um
filme como eles acendem as luzes com um tapa? Isso parecia
ficção científica há alguns anos atrás ... hoje é algo tão normal
quanto assistir minhas séries favoritas no celular.
Este circuito é muito simples, mas você verá que,
como sou um pouco exigente, vamos complicar um
pouco mais, mas com a intenção de torná-lo um
circuito melhor.
Material necessário
1 Arduino. ( Compre Arduino UNO )
1 sensor PIR. ( Compre módulo detector de som ).
Fios
Módulo detector de som
A parte principal deste circuito é um módulo detector de
som. Isso faz praticamente todo o trabalho duro para nós.
O módulo possui um pequeno alto-falante que capta os sons, um
potenciômetro e quatro pinos. Dois desses pinos são saídas, uma
digital e uma analógica.
A particularidade do módulo é que, quando o som que o alto-falante
capta excede um nível (que se ajusta ao potenciômetro), a saída
digital D0 entra no estado lógico 1. Agora é quando muitos de vocês
pensam “por que usar o Arduino, se Este módulo já faz tudo. Eu
conecto um relé com uma lâmpada e aponto ... "
Se fizéssemos isso ... teríamos um circuito que pisca com o som. Nós
não estamos procurando por isso. Queremos um circuito que, quando
toco as palmas das mãos, acendo a luz da sala e, quando as toco
novamente, apago a luz.
Para conseguir isso, temos que usar nosso amigo Arduino. Voce esta
pronto
Ah, esqueci, a saída analógica A0 mostra o valor analógico que o
microfone capta, mas precisa ser amplificado para usá-lo em nosso
Arduino. Já existem módulos que fazem tudo isso, por isso não vale a
pena usá-lo se precisarmos medir os níveis de som.
Agora sim, você está pronto?
Esquema elétrico
Esquema de montagem gráfica
Código acende a luz com palmas
const int pinLED = 13;
const int pinMicrophone = 9;
bool state1 = false;
bool state2 = false;
bool state3 = false;
bool stateLED = false;
bool soundDetected = false;
unsigned long tem;
void setup(){
pinMode(pinLED, OUTPUT);
pinMode(pinMicrophone, INPUT);
Serial.begin(9600);
}
void loop(){
soundDetected = digitalRead(pinMicrophone);
if ((soundDetected==true) && (state1==false) && (state2==false)
&& (state3==false)) {
state1 = true;
Serial.println("Estado1 true");
tem = millis();
delay (200);
} else if ((soundDetected == true) && (state1==true) &&
(state2==false) && (state3==false) ) {
state2 = true;
Serial.println("Estado2 true");
delay (200);
} else if ((soundDetected == true) && (state1==true) &&
(state2==true) && (state3==false) ) {
state3 = true;
Serial.println("Estado3 true");
delay (200);
}
if ((state1==true) && (state2==true) && (state3==true)){
stateLED = !stateLED;
digitalWrite(pinLED , stateLED);
Serial.println("Reset");
state1 = false;
state2 = false;
state3 = false;
}
if (((millis()-tem) >= 500) && (state1==true) && (state2==false ||
state3==false)){ // Reseteamos estados al pasar 500 ms
Serial.println("Reset Time");
Serial.println((millis()-tem));
state1 = false;
state2 = false;
state3 = false;
}
}
Código Descrição
O código possui uma primeira definição de variáveis ​​e constantes que
serão usadas no programa. Depois disso, há a declaração de
entradas e porta serial que podemos usar para verificar a operação.
Ele poderia ter feito um programa simples de que, quando tocasse as
palmas das mãos, acendesse a luz; quando as tocasse novamente,
desligaria. Mas parecia muito simples, e qualquer ruído poderia
acender a luz na minha sala de estar.
Em vez disso, o código anterior precisa de três claps consecutivos e
espaçados entre eles. Ou seja, não vale um tapa a cada 10 segundos,
eles devem ser um após o outro. Este é o primeiro bloco de se e mais
se .
O segundo se ((state1 == true) && (state2 == true) && (state3 ==
true)) verifica se houve três sons anteriores (aplausos). Se
verdadeiro, alteramos o status da saída e redefinimos as
variáveis ​​para recomeçar.
O último if (((millis () - tem)> = 500) && (state1 == true) && (state2 ==
false || state3 == false)) garante que não passa mais de 500ms entre
o som e o som.
O atraso (200) que uso para evitar sons de saltos para ativar o
circuito. Se um objeto rígido cai no chão, ele geralmente salta várias vezes
em um espaço muito curto de tempo.
Cada vez que a função loop () é inserida, a leitura da saída do módulo de
som é executada primeiro. Essa leitura é feita pela função digitalRead
(pinMicrophone).
Configurações do circuito
Não se desespere se não funcionar a princípio. Você precisará ajustar o
módulo de som antes de poder usá-lo.
Com a ajuda de uma chave de fenda, você deve girar o potenciômetro do
módulo para o lado até que a luz de status do módulo permaneça
acesa. Nesse ponto, você volta a vez até que o LED apague. Esse é o ponto
crítico é a sensibilidade do módulo. Se você deseja menos sensibilidade,
pode continuar a reverter o potenciômetro.
Você terá o circuito pronto para experimentá-lo. O LED que
incorpora a placa Arduino deve estar ligado e desligado.
Para ver o que o programa passa, você pode abrir a porta
serial e vê-la.
Você gostou deste circuito? Muito legal né? Eu sempre quis ter
um disso, mas não foi até descobrir o Arduino que tudo ficou
mais fácil.

Como acender a luz com palmas e arduino

  • 1.
    Allan Almeida deAraújo Programador e Analista de Redes e Telecomunicações
  • 2.
    Como acender aluz com palmas e Arduino
  • 3.
    Hoje temos quefazer algo "legal" com o Arduino, um detector de som para acender a luz com palmas . Este circuito é sem dúvida o mais típico em automação residencial. Quem nunca viu em um filme como eles acendem as luzes com um tapa? Isso parecia ficção científica há alguns anos atrás ... hoje é algo tão normal quanto assistir minhas séries favoritas no celular. Este circuito é muito simples, mas você verá que, como sou um pouco exigente, vamos complicar um pouco mais, mas com a intenção de torná-lo um circuito melhor.
  • 4.
    Material necessário 1 Arduino.( Compre Arduino UNO ) 1 sensor PIR. ( Compre módulo detector de som ). Fios Módulo detector de som A parte principal deste circuito é um módulo detector de som. Isso faz praticamente todo o trabalho duro para nós.
  • 5.
    O módulo possuium pequeno alto-falante que capta os sons, um potenciômetro e quatro pinos. Dois desses pinos são saídas, uma digital e uma analógica. A particularidade do módulo é que, quando o som que o alto-falante capta excede um nível (que se ajusta ao potenciômetro), a saída digital D0 entra no estado lógico 1. Agora é quando muitos de vocês pensam “por que usar o Arduino, se Este módulo já faz tudo. Eu conecto um relé com uma lâmpada e aponto ... " Se fizéssemos isso ... teríamos um circuito que pisca com o som. Nós não estamos procurando por isso. Queremos um circuito que, quando toco as palmas das mãos, acendo a luz da sala e, quando as toco novamente, apago a luz. Para conseguir isso, temos que usar nosso amigo Arduino. Voce esta pronto
  • 6.
    Ah, esqueci, asaída analógica A0 mostra o valor analógico que o microfone capta, mas precisa ser amplificado para usá-lo em nosso Arduino. Já existem módulos que fazem tudo isso, por isso não vale a pena usá-lo se precisarmos medir os níveis de som. Agora sim, você está pronto? Esquema elétrico
  • 7.
  • 8.
    Código acende aluz com palmas const int pinLED = 13; const int pinMicrophone = 9; bool state1 = false; bool state2 = false; bool state3 = false; bool stateLED = false; bool soundDetected = false; unsigned long tem; void setup(){ pinMode(pinLED, OUTPUT); pinMode(pinMicrophone, INPUT); Serial.begin(9600); } void loop(){ soundDetected = digitalRead(pinMicrophone);
  • 9.
    if ((soundDetected==true) &&(state1==false) && (state2==false) && (state3==false)) { state1 = true; Serial.println("Estado1 true"); tem = millis(); delay (200); } else if ((soundDetected == true) && (state1==true) && (state2==false) && (state3==false) ) { state2 = true; Serial.println("Estado2 true"); delay (200); } else if ((soundDetected == true) && (state1==true) && (state2==true) && (state3==false) ) { state3 = true; Serial.println("Estado3 true"); delay (200); }
  • 10.
    if ((state1==true) &&(state2==true) && (state3==true)){ stateLED = !stateLED; digitalWrite(pinLED , stateLED); Serial.println("Reset"); state1 = false; state2 = false; state3 = false; } if (((millis()-tem) >= 500) && (state1==true) && (state2==false || state3==false)){ // Reseteamos estados al pasar 500 ms Serial.println("Reset Time"); Serial.println((millis()-tem)); state1 = false; state2 = false; state3 = false; } }
  • 11.
    Código Descrição O códigopossui uma primeira definição de variáveis ​​e constantes que serão usadas no programa. Depois disso, há a declaração de entradas e porta serial que podemos usar para verificar a operação. Ele poderia ter feito um programa simples de que, quando tocasse as palmas das mãos, acendesse a luz; quando as tocasse novamente, desligaria. Mas parecia muito simples, e qualquer ruído poderia acender a luz na minha sala de estar. Em vez disso, o código anterior precisa de três claps consecutivos e espaçados entre eles. Ou seja, não vale um tapa a cada 10 segundos, eles devem ser um após o outro. Este é o primeiro bloco de se e mais se . O segundo se ((state1 == true) && (state2 == true) && (state3 == true)) verifica se houve três sons anteriores (aplausos). Se verdadeiro, alteramos o status da saída e redefinimos as variáveis ​​para recomeçar. O último if (((millis () - tem)> = 500) && (state1 == true) && (state2 == false || state3 == false)) garante que não passa mais de 500ms entre o som e o som.
  • 12.
    O atraso (200)que uso para evitar sons de saltos para ativar o circuito. Se um objeto rígido cai no chão, ele geralmente salta várias vezes em um espaço muito curto de tempo. Cada vez que a função loop () é inserida, a leitura da saída do módulo de som é executada primeiro. Essa leitura é feita pela função digitalRead (pinMicrophone).
  • 13.
    Configurações do circuito Nãose desespere se não funcionar a princípio. Você precisará ajustar o módulo de som antes de poder usá-lo. Com a ajuda de uma chave de fenda, você deve girar o potenciômetro do módulo para o lado até que a luz de status do módulo permaneça acesa. Nesse ponto, você volta a vez até que o LED apague. Esse é o ponto crítico é a sensibilidade do módulo. Se você deseja menos sensibilidade, pode continuar a reverter o potenciômetro.
  • 14.
    Você terá ocircuito pronto para experimentá-lo. O LED que incorpora a placa Arduino deve estar ligado e desligado. Para ver o que o programa passa, você pode abrir a porta serial e vê-la. Você gostou deste circuito? Muito legal né? Eu sempre quis ter um disso, mas não foi até descobrir o Arduino que tudo ficou mais fácil.