Servo Motores novamente…

A pouco tempo escrevi sobre como controlar servos na unha, bom agora eu quero e montar uma library, para isso tive de melhorar o código, a intenção era usar millis() para controlar o lapso de tempo entre os pulsos, mas a verdade e que estou apanhando para as funções micros() e millis() do arduino.

Fora isso, eu vou postar um código bem melhorado em relação a última versão!


// define o pino em que o servo esta conectado

const unsigned int pinservo = 9;

// definem o maximo e o minimo em Microsegundos, da largura do pulso
unsigned int maximo = 2400;
unsigned int minimo = 70;

//Armazena o ultimo passo enviado para o servo, evitando que ele receba um comando para permanecer onde esta, evitando assim trepidação
unsigned int ultimopasso = 0;

// intervalo em Milisegundos entre um pulso e outro
unsigned int interval = 15;

//velocidade com que o servo movimenta
unsigned int velocidade = 10;

void setup(){
 pinMode (pinservo, OUTPUT);
}

void loop(){

//executa diversos passos e da um delay de 1 segundo entre um e outro.

passo (90);
delay (1000);
passo (45);
delay (1000);
passo (120);
delay (1000);

}

void passo (int _grau){
 unsigned int _passo= minimo + (maximo/180)*_grau;
 if (ultimopasso != _passo){ //impede a repetição do mesmo passo senao fosse assim causaria  trepidação
 if (ultimopasso < _passo){ //se o servo estiver antes da proxima posição ele avança
 for (int i=ultimopasso;i<_passo;i= i + velocidade){
 digitalWrite (pinservo, 1);
 delayMicroseconds(i);
 digitalWrite (pinservo, 0);
 delay(15);
 }
 }else{ //caso contrario ele recua
 for (int i=ultimopasso;i>_passo;i= i - velocidade){
 digitalWrite (pinservo, 1);
 delayMicroseconds(i);
 digitalWrite (pinservo, 0);
 delay(15);
 }
 }
 }

ultimopasso = _passo; //grava o ultimo passo
}

Bom e simples assim! Agora estou seguindo os passos deste tutorial, e desenvolvendo uma library própria.

Até a próxima nerdeza!!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Please type the characters of this captcha image in the input box

Por favor, digite os caracteres desta imagem na caixa de entrada