Galera qual código eu posso usa, eu preciso controlar 4 servos motores com o monitor serial. Tipo se eu escrever servo1 ele ativa o servo 1 e eu posso jogar o numero dos graus do servo até eu escrever outro servo!!!!!!!

Exibições: 277

Responder esta

Respostas a este tópico

Oi MR, boa noite.

post anexando aqui,  o código que escreveu e poderemos auxilia-lo a resolver a sua dificuldade.

Rui

#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
int val;
void setup()
{
servo1.attach(9);
servo2.attach(3);
servo3.attach(5);

Serial.begin(9600);

}

void loop(){

if(Serial.available()> 0 )
{

char servo = Serial.read();
if(servo == 'a'){
val = 1;
}
else if(servo == 'b'){
val = 2;
}
else if(servo == 'c'){
val = 3;
}

}
if(val == 1){
if(Serial.available()> 0 ){
int grau = Serial.read();
servo1.write(grau);
}
}

if(val == 2){
if(Serial.available()> 0 ){
int grau = Serial.read();
servo2.write(grau);
}
}

if(val == 3){
if(Serial.available()> 0 ){
int grau = Serial.read();
servo3.write(grau);
}
}


}

Eu quero digitar a dar enter e ae eu coloco um valor de 0 a 180, esse valor que entrar de 0 a 180 é a angulação que eu quero que o servo 1 fique, se eu digitar b dar enter e depois colocar um valor de 0 a 180 é do servo 2 e assim por diante. 

Oi MR, boa tarde,

estive analisando o seu code, e notei o seguinte:

você usa a serial pra saber qual  motor foi selecionado, mas na sequencia usa também 

qual foi o comando.

O valor digitado é lido no inicio do code e não tem mais nada na serial qdo chega na hora de ler o valor para 

comandar o deslocamento, ou o inverso.

Outra coisa que acontece é o seguinte:

Ao enviar dados pela serial, o programa só lê 1 carácter por vez e não o valor que digitou.

Ex: se digitar 185, ele vai ler 1 e jogar na sua variável val ou grau, em seguida joga o 8, e depois o

5.

O programador que tem que ter a tarefa de programar para juntar estes números e formar o 185.

Montei este code para resolver a primeira parte do seu programa: Ler e selecionar o motor, e em

seguida enviar o valor para Grau do motor selecionado. Ele 'so recebe um digito de 0 a 9.

Fica agora o desafio para você resolver a outra parte.

Receber o valor integral de até 3 dígitos que quer enviar para o deslocamento.

Rui

Anexos

Rui eu joguei ela pra arduino mas não deus muito certo :(
Então não tem como eu mandar um comando tipo "a150" onde a é o servo 1 e 150 o grau dele?????

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço