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
}
Tags:
As respostas para este tópico estão encerradas.
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por