pessoal estou tentando programar o arduíno com 1 push botton ligar 2 servos e acender leds, mas não tô conseguindo programar poderiam me ajudar ?

estou tentando criar um comando para que ao apertar o botão push botton o servo faça um giro de 180 e os leds acendam, depois ao apertar novamente o botão o servo volta pra 0 ° e os leds apaguem.

o que pode estar errado ? alguém poderia me ajudar ?

#include <Servo.h>

Servo myservo; // Cria um objeto de controle para o servo 1
Servo myservo1; // Cria um objeto de controle pro servo 2
const int pinobotao = 2; // Designa o pino 2 ao botão
const int pinoled = 5; // Designa o pino 5 ao led
int estadobotao = 0; // Estado atual do botão
int ultimoEstadobotao = 0; // estado anterior do botão
int estadoled = 0; // Lembra o atado atual do led
int pos = 0; // Variável para armazenar a posiçao do braço do servo
int pos1 = 180; //Variável para armazenar a posiçao do braço do servo

void setup()
{
myservo.attach(9); // Designa o pino 9 para controle do servo
myservo1.attach(10); // Designa o pino 10 para controle do servo
pinMode(pinobotao, INPUT); // Inicializa o botão como entrada
pinMode(pinoled, OUTPUT); // Inicializa o led como saida
}

void loop()
{
estadobotao = digitalRead(pinobotao); // Faz a leitura do pino do botão
if (estadobotao != ultimoEstadobotao) // Compara o atual estado do botão com o estado anterior
{
if (estadobotao == 1) // se o estado do botão for alto
{
if(estadoled == 1) // e se o estado do led for alto
{
delay(30); estadoled = 0; //atrasa 30ms e inicia a sequencia

for(pos = 0; pos <= 180; pos += 10) // faz o servo1 ir de 0º a 180º em passos de 10º
{
myservo.write(pos); // armazena o valor de pos na variavel do servo1
}
for(pos1 = 180; pos1 >= 0; pos1 -= 10) // faz o servo2 ir de 180º a 0º em passos de -10º
{
myservo1.write(pos1); // armazena o valor de pos1 na variavel do servo2
}
delay(15); // Atrasa em 15ms depois que o servo atingir a posição final
}
else
{
delay(30); //atraso de 30ms
estadoled = 1; // manda um valor alto para a variavel estadoled
for(pos = 180; pos >= 0; pos -= 10) // faz o servo1 ir de 180º a 0º em passos de 10º
{
myservo.write(pos); // armazena o valor de pos na variavel do servo1
}
for(pos1 = 0; pos1 <= 180; pos1 += 10) // faz o servo2 ir de 0º a 180º em passos de 10º
{
myservo1.write(pos1); // armazena o valor de pos1 na variavel do servo2
}
delay(1000); //Atraso de 1000ms
}
}

ultimoEstadobotao = estadobotao; // Lembra o atual estado do botão e Liga o led se estadoled =1 ou desliga se estadoled = 0
}
digitalWrite(pinoled, estadoled); //atribui o valor de pinoled ao estadoled
myservo.write(pos); // vai de 0º a 180º
myservo1.write(pos1); // vai de 180º a 0º

delay(20); // Atraso de 20ms
}

Exibições: 318

As respostas para este tópico estão encerradas.

Respostas a este tópico

Boa noite.

Faz cada um deles funcionar individualmente primeiro.

Boa sorte,

  'Eiju

Boa noite Celso

Obrigado por responder, eu conseguir fazer um só funcionar e funcionou tranquilo.
o problema foi quando coloquei os leds e adicionei +1 servo
ja tentei vários comandos e não consigo

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço