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’:
