Galera gostaria de saber como posso fazer para ver a posição do servo atravez do serial monitor tipo como se ele fose m "sensor" alguem sabe ??

Exibições: 704

Responder esta

Respostas a este tópico

Procurei sobre usa o comando read() porem não encontrei nem um codígo especifico pro servo por acaso você tem um ou possa me dar uma explicação detalhada?

coloque o sketch seu ai que eu adapto pra vc ok?

blz

È bem simples mas futuramente vou usar para outra coisa :

#include <Servo.h>

Servo myservo;

void setup() {

myservo.attach(9);
}

void loop() {

myservo.write(0);
delay(2000);
myservo.write(360);
delay(2000);
}

Seria isso q vc quer?

#include <Servo.h>

Servo myservo;

void setup() {

myservo.attach(9);
Serial.begin(9600);
}

void loop() {

myservo.write(0);
delay(2000);
Serial.println(0);
myservo.write(360);
delay(2000);
Serial.println(360);
}

Não quero que printe toda a variação de 0 ate 360 exemplo 1, 2, 3, 4, 5, ..... 360

escreva isso na sua ide 

#include <Servo.h>
int valor = 0;
float valorServo = 0;
Servo servo1;
Servo servo;
String valorRecebido = "";
String meio = "0001";
String desce = "0002";
String sobe = "0003";
int limpastring = 0;
void setup ()
{
Serial.begin(9600);
servo1.attach(9);
}
void loop ()
{
valor = analogRead(A0);
valorServo = map (valor,0,1023,0,360);
if (Serial.available())
{
char entrada = Serial.read();
valorRecebido += entrada;

if (meio == valorRecebido.substring(0,4))
{
Serial.println("meio");
servo1.attach(9);
servo1.write(90);
Serial.println(valorServo);
limpastring = 1;
if (limpastring == 1)
{
valorRecebido = "";
limpastring = 0;
}
}

if (desce == valorRecebido.substring(0,4))
{
Serial.println("Desce");
servo1.attach(9);
servo1.write(180);
Serial.println(valorServo);
limpastring = 1;
if (limpastring == 1)
{
valorRecebido = "";
limpastring = 0;
}
}

if (sobe == valorRecebido.substring(0,4))
{
Serial.println("Sobe");
servo1.attach(9);
servo1.write(0);
Serial.println(valorServo);
limpastring = 1;
if (limpastring == 1)
{
valorRecebido = "";
limpastring = 0;
}
}
}
}

agora vc vai ter que abrir o seu servo e ligar no pino A0 do arduino o pino do meio do potenciometro do seu servo 

agora abra o serial monitor e digite 0001 e de enter (cuidado pra nao errar a string senao vai ter que resetar o arduino ) duas vezes pra armazenar o valor da posiçao 

agora faça a mesma coisa com 0002

e tb com 0003

dependendo da rotaçao de seu servo vc tera que mudar a linha 

valorServo = map (valor,0,1023,0,360);   trocando o 360 por outro valor e fazendo um teste ate os valores ficarem de seu gosto 

talves nao fique 100% fiz uma coisa inedita  pra vc nunca tinha tentado nada assim antes mas assim vc ja consegue captar algum valor 

se quiser que fique 100% coloque um potenciometro externo ligado ao 5v e gnd que assim vc consegue captar os valores reais assim no lugar de 360 escreva 5 (valor do vcc) que ele comparara com o valor conhecido

espero que tenha ajudado 

duvidas posta ai que procuraremos ajudar no possivel

vlw 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço