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:

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.


Arduino Forum > International > Portugues > Arduino Mega + 2 push buttons + buzzer.


arduino

Comments

Popular posts from this blog

Error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode - Raspberry Pi Forums

class MPU6050 has no member named begin

missing filename after '-o'