Arduino com 2 potenciómetros

Ainda nem coloquei aqui o vídeo bem feito do Arduino com 1 potenciómetro e já consegui acabar o seguinte. Era este projecto aquele que mais queria concluir, pois o meu objectivo prático é fazer a “webcam” com o famoso “pan and tilt”.

Que utilizei? Exactamente o mesmo material que usei no anterior projecto, mas coloquei mais um potenciómetro de 2K2 e mais um servo Futaba S3001.

O meu problema era fazer as conexões de maneira correcta e conseguir encontrar a maneira de os controlar. Vou ser honesto; fartei-me de procurar e não encontrei nada. Procurei em Português, Inglês e Espanhol e nada. Encontrava vídeos, explicações altamente técnicas mas que não entendia, linhas de programação que não funcionavam no sketchbook…

Não pensei em desistir, mas já andava furioso, para não dizer outra palavra. Até que num acto de inspiração divino (para dizer a verdade, estava no meu sítio favorito para pensar; sentado na sanita), lembrei-me de modificar o código original de um potenciómetro e um servo e  duplicar o número de servos e potenciómetros, nomeando novos outputs do Arduino para os servos e novos inputs dos potenciómetros para o Arduino.

Vamos por partes.

Em primeiro lugar é preciso uma breadboard.

Não vou entrar em detalhes sobre o uso de breadboards, pois dá bastante trabalho, e existem explicações muito boas por toda a net, em Português e Inglês. Para saber mais, é tão simples como ir ao Google e fazer uma busca, ou ainda melhor, ir ao YouTube e fazer o mesmo. Garanto que vão sair satisfeitos.

Seguidamente, vamos ter que fazer um simples circuito fechado, entre o Arduino, os potenciómetros e os servos. Para já não vamos ligar nada à alimentação externa, seja através do Arduino ou de uma outra fonte de alimentação. E como?

Vamos passar um cabo (vermelho) desde o pino de 5V do Arduino até o carril vermelho da breadboard. Seguidamente passamos outro cabo (preto) desdo um dos pinos GND (GROUND) do Arduino até o carril azul da breadboard.

Só uma pequena nota; pouco importa a cor dos cabos que quiserem usar. Podem usar estas cores, como todos da mesma cor ou até mesmo todos de cor diferente. O limite é a vossa imaginação. Eu gosto de usar os clássicos vermelho para positivo e preto para negativo. No caso dos servos, vai depender. Os meus Futaba tem o cabo de sinal de cor branca, pelo que usei cabo amarelo. Apeteceu-me. Para mim, torna todo o processo e visualização posterior muito mais fácil.

No caso da minha breadboard, os carris de energia encontram-se divididos a meio da placa, pelo que fiz a junção das duas metades e assim ficar com imenso espaço livre para os meus dedos gordos e desastrados.

Colocamos agora os potenciómetros. Onde? Onde quiserem. Eu pus os meus aqui no estaminé, mas se tivesse tido pachorra tinha ido colocá-los à praia, assim aproveitava e via umas miúdas giras em bikini.

A sério, podem colocá-los onde acharem melhor. Eu pus bastante espaço porque sinceramente sou bastante desajeitado. Agora, se repararem, TODAS as breadboards tem os carris de energia espaçados cada 5 buracos. Vão ter que colocar a energia do Arduino da seguinte maneira: 1º pino – Positivo; 2º pino – LIVRE; 3ª pino – Negativo.

Atenção que a electricidade nas breadboards corre, como dizer, de diferentes maneiras. Simplificando bastante e se tomarem a perspectiva das imagens que eu estou a colocar, nos carris é na horizontal (se repararem as duas linhas horizontais, positivo e negativo estão a verde), mas nos buracos onde devem colocar os componentes é na vertical. Dai ter colocado o potenciómetro de maneira aos pinos corresponderem ao início e fim de um segmento de carril.

Coloquem o cabo vermelho desde o carril positivo  até ao primeiro pino (positivo) e cabo preto desde o carril negativo até ao terceiro pino (negativo). Podem inverter à vontade, ou seja, trocar o 1º e 3º pino de polaridade.

Pode acontecer o seguinte, a vossa breadboard ter uma linha a vermelho por cima do carril de energia de cima e outra azul por baixo do carril de baixo. O vermelho é simples, indica que naquele carril devemos ligar os positivos. O azul é o negativo.

O outro é colocado de igual maneira.

Começamos agora com o servo. Vamos denominá-lo “SERVO 1”. A colocação é muito simples. Colocamos um cabo vermelho desde a fila onde está o 1º pino do potenciómetro até à ficha do servo. Encaixem na ficha de maneira que o vosso cabo vermelho fique alinhado com o vermelho do servo. A seguir colocam um cabo preto desde o 3º pino do potenciómetro até à ficha do servo, fazendo-o coincidir com o cabo preto.

Para não existirem confusões, marquei também os potenciómetros. POT 01 e POT 02. Podemos ligar agora o segundo servo, “SERVO 2”, exactamente da mesma forma.

Agora a operação mais delicada. Calcem as luvas esterilizadas, ponham os óculos de protecção e não cocem os genitais (peçam à enfermeira para fazer isso por vocês… ).

Já que são os potenciómetros que irão controlar os movimentos dos servos, é necessário que eles recebam essa informação. A informação vai do potenciómetro para o Arduino, este analisa-a e codifica-a de maneira a que o servo a perceba, e envia-lha. Para isso devem ligar o 2º pino do potenciómetro ao pino 0 (zero) do Arduino. Atenção, pino 0 (zero) analógico! Aqui usei o cabo amarelo para efectuar essa ligação.

»»» 2º pino potenciómetro 01 a pino 0 (zero) analógico do Arduino«««

Agora vamos colocar o cabo de ligação do Arduino ao Servo1, de maneira a este receber a informação proveniente do potenciómetro. Esta informação sai do Arduino através do pino 9 digital. Liguem o cabo desde o pino 9 da vossa placa arduino até à ficha do Servo 1. Tal como aconteceu nos cabos de positivo e negativo, encaixem este cabo de maneira a coincidir com o cabo da ficha (no caso da imagem, amarelo / amarelo).

»»» Pino 9 do Arduino a ficha do Servo 1«««


Temos o primeiro servo montado. Vamos ao segundo.

Para o segundo, deveremos ligar o segundo pino do potenciómetro 02 ao pino 10 analógico do arduino.

»»»2º pino do potenciómetro 02 a pino 1 analógico do Arduino«««


Tal como aconteceu no 1º servo, o segundo deve receber as ordens do potenciómetro 02 através do arduino, pelo que vamos colocar um cabo desde o pino 10 digital do Arduino até à ficha do Servo 2.

»»»Pino 10 do Arduino a ficha de Servo 2«««

E pronto, se seguiram bem as instruções, devem ter o seguinte:

Sorry, imagem errada.

Seguidamente temos de carregar o programa. Mas se ainda se lembrarem do que disse, foi um pouco difícil encontrar o famoso.

Desculpem, mas antes de continuar tenho que deixar aqui a minha singela homenagem à minha sanita…

Objecto que todos nós possuímos em casa, talvez até mais de um, mas ao qual não damos valor. Eu por mim tenho uma veneração muito especial por este objecto. É nele que, posso afirmar sem vergonha alguma, tive das melhores ideias na minha vida. É nele que eu me sento para, não só fazer as necessidades fisiológicas, mas muitas vezes também para tentar acalmar-me e tentar resolver problemas. Penso que será porque podemos estar sozinhos, isolados do resto do mundo, estando muitas vezes a escassos metros de centenas ou milhares de pessoas.

E em casa? Nada como fumar um cigarrinho, sentado, ao mesmo tempo que lemos a nossa “El Jueves”. Nada como isso.

Por alguma coisa os “nuestros hermanos” chamam-lhe “El Trono de la Casa”, ou mais afectuosamente, “El Sr. Roca”.

O programa afinal é extremamente simples. Mesmo para mim, sem saber nada de programação em C, foi muito fácil adaptar o programa original onde um potenciómetro controlava um servo. Este programa pode ser encontrado no ambiente Arduino que temos instalado no PC.

Basta abrir o programa

Files »»Examples »»Servo »» Knob

E estamos lá.

Eis como ficou:

»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»

// Controlar dois servos usando 2 potenciómetros (Resistência variável)
// Programa original para 1 servo e 1 potenciómetro por Michal Rinott
// Modificado e adaptado por Ricardo Luis Martin Sant’Anna – Julho de 2010

#include <Servo.h>

Servo myservo1;  // criar objecto servo para controlar o servo 1
Servo myservo2;  // criar objecto servo para controlar o servo 1

int potpin1 = 0;  // pino analógico usado para conectar o potenciómetro 01
int val;    // variavel para ler o valor do pin analógico

int potpin2 = 1;  // pino analógico usado para conectar o potenciómetro 02
int val2;    // variavel para ler o valor do pin analógico

void setup()
{
myservo1.attach(9);  // conecta o servo 1 no pino 9 ao objecto servo
myservo2.attach(10);  // conecta o servo 2 no pino 10 ao objecto servo
}

void loop()
{
val = analogRead(potpin1);            // lee o valor do potenciómetro 01(valor entre 0 e 1023)
val = map(val, 0, 1023, 0, 179);     // escala-o para usá-lo com o servo 1(valor entre 0 e 180)
myservo1.write(val);                  // coloca o servo em posição de acordo com o valor escalado
delay(15);                           // espera que o servo chegue à posição
val = analogRead(potpin2);            //  lee o valor do potenciómetro 02(valor entre 0 e 1023)
val = map(val, 0, 1023, 0, 179);     //  escala-o para usá-lo com o servo 2(valor entre 0 e 180)
myservo2.write(val);                  //  coloca o servo em posição de acordo com o valor escalado
delay(15);                           // espera que o servo chegue à posição
}

»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»

Façam copy/paste e pronto a servir.

Liguem o cabo USB ao computador e ao Arduino, façam o upload e divirtam-se.

Porei o vídeo assim que possível.

Esta entrada foi publicada em Arduino, Câmara pan and tilt, Electrónica, Electricidade. ligação permanente.

3 respostas a Arduino com 2 potenciómetros

  1. Nicholas de Laceda diz:

    Muito bom as explicações, eu já havia pensado em fazer o mesmo mas fiquei com medo de o arduino não aguentar a carga de 2 servos =) se eu quiser usar 4 servos como faço? pergunto quanto ao esquema de ligação de uma fonte externa. Abraço!!

    • Olá.
      Pergunta fácil à uns meses mas complicada agora😉
      Em princípio não haverá muitos problemas com 4 servos, desde que a fonte seja adequada. Tinha documentação com os cálculos mas sinceramente não sei onde estarão agora. Mas nada como experimentares os 4 com a corrente que usei nos 2. Visita o site do arduino ou um fórum de robótica e de certeza que lá encontraras a informação que precisas.

      Desculpa não poder ajudar mais.

      Um abraço.

  2. isabella diz:

    Oi! Eu abri um interfone e fiquei curiosa, tem como montar algo legal com as peças? Se não, como elas se chamam e para que servem? Grata!

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s