Menu

Servo indicador

PDF e códigos: (  servoIndicador ).

 

 

Indicador com servo motor e potenciômetro

Vamos fazer um indicador capaz de mostrar em um painel um ‘ponteiro’. Você pode colocar como fundo para o painel uma escala, por exemplo de 0 a 100, setores divididos por cores ou textos (regular, bom, ótimo…) de forma a representar situações que você quer exibir ou valores que você está medindo.

A ligação física será assim:

Nota – se quando for exibir os valores começar no maior e diminuir, inverta as ligações de 5V e GND para que os valores sejam apresentados do menor ao maior quando o potenciômetro for movimentado.

O código será o seguinte:

#include <Servo.h>

Servo mao;

#define pinoServo 9

#define potenciometro A0

void setup() {

mao.attach(pinoServo);

Serial.begin(9600);

pinMode(potenciometro, INPUT);

}

void loop() {

  int posicao = analogRead(potenciometro);

  posicao = map(posicao, 0, 1023, 0, 100);

  Serial.print(“Posicao: “);

  Serial.println(posicao);

  mao.write(posicao);

delay(1500);

}

Comentários:

  • Foi incluída a biblioteca ‘Servo.h’, a qual contém os códigos de controle do servo motor (#include <Servo.h>)
  • Foi declarado um objeto que usa a biblioteca Servo, com o nome ‘mao’ (Servo mao;)
  • Foi definido que o pino por meio do qual o servo motor será controlado é o ‘9’ e que será identificado pelo nome ‘pinoServo’; se você usou outro pino, atualize o código para que o controle funcione (#define pinoServo 9)
  • Foi definido que o ‘meio’ do potenciômetro (que irá variar quando ele for movido), está ligado no pino ‘A0’ (#define potenciometro A0)
  • Na função ‘void setup()’, foi informada a conexão do servo para o pino escolhido, por meio da declaração ‘mao.attach(pinoServo);’
  • Na função ‘void setup()’, foi inicializada a biblioteca de comunicação serial com velocidade de 9600 bps (Serial.begin(9600);). Isto será utilizado se quisermos ligar o monitor serial para ver a informação de posição do servo
  • Na função ‘void setup()’, foi definido que a porta na qual o potenciômetro está conectado será usada para leitura (pinMode(potenciometro, INPUT);)
  • Na função ‘void loop()’, foi lido o valor do potenciômetro (  int posicao = analogRead(potenciometro);)
  • O valor do potenciômetro, que poderá estar entre 0 e 1023, dependendo de sua posição, será convertido para um valor entre 0 e 100. Você pode mudar os valores de mínimo e máximo para ajustar às suas necessidades de visualização (  posicao = map(posicao, 0, 1023, 0, 100);)
  • Após o ajuste do valor, que está armazenado na variável ‘posicao’, ele será exibido na interface serial, para referência (Serial.print(“Posicao: “); – que mostra o texto ‘Posicao: ‘ – e  Serial.println(posicao); – que mostra o valor da variável)
  • O servo motor é movido para o ângulo correspondente ao valor da variável posição (  mao.write(posicao);)
  • Após, há uma espera de 1,5 segundos (delay(1500);) 

Veja exemplos de ‘ponteiros’:

Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420
Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420

UFPR nas Redes Sociais


UFPR nas Redes Sociais