Pages: [1]   Go Down
Author Topic: Ajuda com exculção de case por quantidade de pulsos  (Read 710 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Amigos montei esse Script so que estou com dificuldades para definir uma outra forma de se excultar os cases.
Vamos ou Script.

  int pulsos = 0;
  boolean pulso=0;
  boolean pulsoI=0;
  int led = 13;
  void setup()
{
  pulso=HIGH;
  pinMode(3,INPUT_PULLUP);
  pinMode(5,INPUT_PULLUP);
  pinMode(13,OUTPUT);
  Serial.begin(9600);
}

  void loop()

{
  Serial.println(pulsos);
 
  if(digitalRead(3)==HIGH){if(pulso==HIGH){pulsos = pulsos + 1;} pulso=LOW;}
  else{pulso=HIGH;}

 
  if(digitalRead(5)==LOW)
{
  switch(pulsos){
   
     case 2:
             for(int i=0;i<1;i++){digitalWrite(led, HIGH);delay(50);digitalWrite(led, LOW);delay(100);pulsos = 1;}
             break;
     case 3:
             for(int i=0;i<1;i++){digitalWrite(led, HIGH);delay(50);digitalWrite(led, LOW);delay(100);pulsos = 1;}
             break;

     case 6:
             for(int i=0;i<3;i++){digitalWrite(led, HIGH);delay(50);digitalWrite(led, LOW);delay(100);pulsos = 1;}
             break;
             
     case 11:
             for(int i=0;i<6;i++){digitalWrite(led, HIGH);delay(50);digitalWrite(led, LOW);delay(100);pulsos = 1;}
             break;

     case 21:
             for(int i=0;i<10;i++){digitalWrite(led, HIGH);delay(50);digitalWrite(led, LOW);delay(100);pulsos = 1;}
             break;
}}}


Galera nesse  script  eu tenho um equipamento que gera pulsos que são contados pelo pino 3. Até ai tudo bem... Mais  para execultar o case referente aos  pulsos eu tenho que clicar o pino 5 (  if(digitalRead(5)==LOW) ). O que eu gostaria mesmo era que esse processo aconteça automaticamente e não estou sabendo como fazer isso. Tentei tirar o if(digitalRead(5)==LOW) ai não consigo passar do premeiro clik. Ajuda ai amigos!!!



 
 


Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3216
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Infelizmente nao tens outra solucao...

Podes temporizar e tens de dar X pulsos dentro dum determinado tempo. Ao fim desse determinado tempo, o programa faz a seccao dos pulsos. Isto pode funcionar... mas das duas uma, ou ficas a espera da temporizacao... ou nao das os pulsos todos dentro da temporizacao.

A solucao que tens do segundo botao e a mais eficiente que tens.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Obrigado Bubulindo pela resposta!!!! Mais eu estava pensando em fazer algo assim;  se digitalRead(5) ficar em HIGH por mais que X tempo execultar switch(pulsos){ case.....), e que essa contage de tempo começaria com o primeiro pulso LOW... Mais não sei como escrever isso. Poderia me ajudar? desde já muito obrigado!!!!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 49
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Obrigado Bubulindo pela resposta!!!! Mais eu estava pensando em fazer algo assim;  se digitalRead(5) ficar em HIGH por mais que X tempo execultar switch(pulsos){ case.....), e que essa contage de tempo começaria com o primeiro pulso LOW... Mais não sei como escrever isso. Poderia me ajudar? desde já muito obrigado!!!!
Em relação a contagem de tempo enquanto um botão for pressionado, já implementei o código abaixo e deu certo. veja se consegue implementar algo semelhante.

Code:
if(digitalRead(5)==HIGH){
      unsigned long time = millis();    //Armazena tempo atual
      while(digitalRead(5)==HIGH){}     //Não faz nada enquanto o 5 == HIGH
      unsigned long diferenca = millis() - time;    //Armazena o tempo em que o botão for pressionado
      //como tempo do botão pressionado a implementação posterior fica por sua conta
}

Espero que tenha entendido e que seja útil.

Abraços
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sim Amigo entendi!!!! vou implementar assim que chegar em casa e posto os resultados.... Obridado!!!
Logged

0
Offline Offline
Full Member
***
Karma: 3
Posts: 130
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Fala Vágner.  Qual é o equipamento. Qual a duração, freqüência do trem de pulsos? Creio que dá pra fazer algo automático sim
Logged

Pages: [1]   Go Up
Jump to: