Arduino Mega + 2 push buttons + buzzer.
olá pessoal.
estou tentando desenvolver com os seguintes materiais :um arduino mega, 2 push button e um buzzer. seguinte aplicação ao pressionar e soltar o primeiro push button o buzzer irá tocar nota dó até que o segundo push button seja pressionado e solto para desligar o buzzer. ai o sistema fica aguardando apertar novamente o primeiro push button para começar novamente o ciclo.
observação: ao pressionar e soltar o primeiro push nota dó deve ficar pulsando, apita o dó da um intervalo apita novamente até que o segundo push seja pressionado e solto.
tentei varias formas nenhuma tive sucesso. meu colega me falou para utilizar interrupção que ficaria melhor, porém este teste que estou fazendo para 2 push buttons e um buzzer, será replicado varias vezes na mesma aplicação, no total serão 20 push buttons realizando o mesmo trabalho dos dois que descrevi acima por isso estou utilizando o arduino mega e o mesmo só tem 6 entradas de interrupção o que não é o suficiente também devido ao grande numero de push buttons que vou utilizar.
outro problema que estou tendo é que nem todas vezes o micro está identificando que o primeiro push foi pressionado e solto.
o código que cheguei mais próximo foi o seguinte eu pressiono e solto o primeiro push button ele começa apitar da forma que eu quero porém ele não está saindo desse loop. o código feito foi o seguinte:
alguém pode me ajudar? por favor.
estou tentando desenvolver com os seguintes materiais :um arduino mega, 2 push button e um buzzer. seguinte aplicação ao pressionar e soltar o primeiro push button o buzzer irá tocar nota dó até que o segundo push button seja pressionado e solto para desligar o buzzer. ai o sistema fica aguardando apertar novamente o primeiro push button para começar novamente o ciclo.
observação: ao pressionar e soltar o primeiro push nota dó deve ficar pulsando, apita o dó da um intervalo apita novamente até que o segundo push seja pressionado e solto.
tentei varias formas nenhuma tive sucesso. meu colega me falou para utilizar interrupção que ficaria melhor, porém este teste que estou fazendo para 2 push buttons e um buzzer, será replicado varias vezes na mesma aplicação, no total serão 20 push buttons realizando o mesmo trabalho dos dois que descrevi acima por isso estou utilizando o arduino mega e o mesmo só tem 6 entradas de interrupção o que não é o suficiente também devido ao grande numero de push buttons que vou utilizar.
outro problema que estou tendo é que nem todas vezes o micro está identificando que o primeiro push foi pressionado e solto.
o código que cheguei mais próximo foi o seguinte eu pressiono e solto o primeiro push button ele começa apitar da forma que eu quero porém ele não está saindo desse loop. o código feito foi o seguinte:
code: [select]
// codigo dos botoes com buzzer 2 push. usando while
const int buzzer=10;
const int botao1=22;
const int botao2=23;
int statusbotao=0;
int ver1=0;
int ver2=0;
void setup(){
serial.begin(9600);
pinmode(buzzer,output);
pinmode(botao1,input);
digitalwrite(botao1,1); //ativa resistor pull (resistor de elevação)
//fisicamente o botão é ligado no terra e o resistor um terminal vai
//entre o botão e entrada e o outro terminal é ligado no 5v.
pinmode(botao2,input);
digitalwrite(botao2,1);
}
void loop(){
if(((digitalread(botao1)==low)&&(ver2==0))){
delay(0.00001);
if(digitalread (botao1)==high){
statusbotao=1;
ver1=1;
}}
while(ver1==1){
tone(buzzer,262,200); //do
delay(1000);
if((statusbotao==1)&&(digitalread(botao2)==low)){
delay(0.00001);
if(digitalread (botao2)==high){
statusbotao=0;
ver1=0;
}
}
}
}
alguém pode me ajudar? por favor.
primeiro problema:
o delay não aceita valores com virgula flutuante... para que é que precisas dum intervalo de 0.00001 milisegundos ??
sabes o que isso é??!?!??!!?!?
depois para fazer o que queres, não podes usar o delay... um dos problemas é que enquanto o teu programa está processar o delay, não está ver se o botão foi pressionado, dando sensação que não está funcionar.
tira os delays e voltamos falar assunto.
o delay não aceita valores com virgula flutuante... para que é que precisas dum intervalo de 0.00001 milisegundos ??
sabes o que isso é??!?!??!!?!?
depois para fazer o que queres, não podes usar o delay... um dos problemas é que enquanto o teu programa está processar o delay, não está ver se o botão foi pressionado, dando sensação que não está funcionar.
tira os delays e voltamos falar assunto.
Arduino Forum > International > Portugues > Arduino Mega + 2 push buttons + buzzer.
arduino
Comments
Post a Comment