Ir para conteúdo
  • Cadastre-se

Problema com botão em projeto com RFID + Servo.

Avalie este tópico:


dindobel

Posts em destaque

Olá ! Abraço a todos. Agradeço aos Amigos pela atenção e ajuda.

 

  Consegui resolver o problema do botão para acionar o servo, utilizando esse sketch com pequena modificação.

 

// this constant won't change:

const int  buttonPin = 2;    // the pin that the pushbutton is attached to

const int ledPin = 8;      // the pin that the LED is attached to

 

// Variables will change:

int buttonPushCounter = 0;  // counter for the number of button presses

int buttonState = 0;        // current state of the button

int lastButtonState = 0;    // previous state of the button

 

unsigned long intervalo = 0;

 

void setup() {

  // initialize the button pin as a input:

  pinMode(buttonPin, INPUT);

  // initialize the LED as an output:

  pinMode(ledPin, OUTPUT);

  // initialize serial communication:

  Serial.begin(9600);

}

 

 

void loop() {

  // read the pushbutton input pin:

  buttonState = digitalRead(buttonPin);

 

  // compare the buttonState to its previous state

  if (buttonState != lastButtonState) {

    // if the state has changed, increment the counter

    if (buttonState == HIGH){

      // if the current state is HIGH then the button

      // wend from off to on:

      buttonPushCounter++;

      intervalo = millis();

      Serial.println("on");

      Serial.print("number of button pushes:  ");

      Serial.println(buttonPushCounter);

    } else {

      // if the current state is LOW then the button

      // wend from on to off:

      Serial.println("off");

    }

    // Delay a little bit to avoid bouncing

    delay(50);

  }

  // save the current state as the last state,

  //for next time through the loop

  lastButtonState = buttonState;

 

  // se passar mais que 2 segundos entre os pressionar de botões, ele volta a zero e precisa pressionar duas vezes de novo   

  if(millis() > intervalo+2000){

  buttonPushCounter = 0;

}   

 

 

  // turns on the LED every four button pushes by

  // checking the modulo of the button push counter.

  // the modulo function gives you the remainder of

  // the division of two numbers:

  if (buttonPushCounter  == 5) {

    digitalWrite(ledPin, HIGH);

    delay(2000);

    digitalWrite(ledPin, LOW);

    buttonPushCounter = 0;

  }

  //else {

    //digitalWrite(ledPin, HIGH);

  //}

 

}

 

     

Link para o comentário
Compartilhar em outros sites

Olá

 

Tente removendo esta parte do código: linhas(190 até 195)

 

  {

      myservo.write(0);    //Move o servo para o angulo de 0 graus

      delay(4500);        //Delay para o servo atingir a posição

      myservo.write(90);  //Move o servo para o angulo de 90 graus

      delay(500);          //Delay para o servo atingir a posição

  }

 

Acho que assim vai funcionar.

Link para o comentário
Compartilhar em outros sites

Olá ! Muito agradecido pela ajuda, mas se eu retirar essa parte, quando usar uma tag cadastrada e chamar a função void efeitoPermitido() , o servo não vai funcionar. O botão é para acionar o servo diretamente. Mas não encontrei uma maneira de inibir o servo se ficar com o botão pressionado por mais que três segundos por exemplo. Quero que ligue só dando os cinco pulsos curtos com menos de dois segundos.

 

      Grande abraço.

Link para o comentário
Compartilhar em outros sites

Participe agora da conversa!

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, faça login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Restaurar formatação

  Apenas 75 emoticons máximos são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir apenas como um link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Você não pode colar imagens diretamente. Envie ou insira imagens do URL.

SOBRE O ELETRÔNICABR

EletrônicaBR é o melhor fórum técnico online, temos o maior e mais atualizado acervo de Esquemas, Bios e Firmwares da internet. Através de nosso sistema de créditos, usuários participativos têm acesso totalmente gratuito. Os melhores técnicos do mundo estão aqui!
Técnico sem o EletrônicaBR não é um técnico completo! Leia Mais...
×
×
  • Criar Novo...