Postado 17 de Junho de 2017 8 anos 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); //} }
Postado 19 de Junho de 2017 8 anos 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.
Postado 19 de Junho de 2017 8 anos Autor 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.
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.