Boas Pessoal...
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-20.jpg&hash=4bdaa5a98cbcc53acd7af5aef3c0f2553d11d172)
Mais uma vez cá estou eu para mais um pequeno tutorial...
Bom depois de toda a tarde a ver se conseguia fazer um "hack" qualquer no meu motor shield para controlar servos, o certo é que nao consegui... E Desisti, porque a partir de certa altura achei que tava a desperdiçar tempo...
Entao decidi estudar um pouco a biblioteca que nos permite controlar tao facilmente os servos (Servo.h), e decidi entao fazer dois tutoriais pelo preço de um... :D :D :D
Espero que gostem....
Material Necessario (Hardware):
- Servo
- Arduino
- Potenciometro
- 6x Fios De ligação
- Rectangulo de Pele (ou outro material nao condutor) para proteger o arduino
- Cabo USB
- Computador
- BreadBoard
Material Necessario (Software):
- Arduino 0017 (Disponivel em arduino.cc)
1º Passo
Primeiro que tudo temos de recolher todo o material necessario e ter uma secretaria minimamente limpa para puder trabalhar á vontade..
2º Passo
- Ligar o fio branco da ficha do servo no pino 8 do nosso arduino.
- Ligar o fio vermelho da ficha do servo no pino 5v do nosso arduino.
- Ligar o fio preto da ficha do servo no pino GND do nosso arduino.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-6-3.jpg&hash=17aa216c8398bb60236e8fd0ae9ce7768a991be9)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-8-1.jpg&hash=0bb8aab19fa6df7332c5dcde3e0b403178991595)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-102.jpg&hash=52bfe0395655ba0886554c0a5973fa18ad1a068b)
3º Passo
Abrir o programa Arduino 0017.
Visitar este (http://arduino.cc/en/Reference/Servo) link para se ficar a conhecer melhor a biblioteca Servo.h.
Depois de esturdar-mos um pouco a biblioteca referida em cima, vamos entao proceder á programação.
4º Passo
Depois de vermos do que a bliblioteca é capaz passemos á programação. Em baixo fica o codigo que alterei para melhor compreensão.
Está tudo comentado para que todos os que se iniciem em programação nao tenham grande dificuldade em perceber qualquer parte do codigo aqui estudado.
#include <Servo.h> // Biblioteca que permite controlar mais facilmete os Servos
Servo servo1; // Criação de um objecto que permitira controlar o servo
int posicao = 0; // inicialização da variavel posiçao a 0
int contagem = 0; // inicialização da variavel posiçao a 0
void setup()
{
servo1.attach(8); // Porta onde ira ser ligado o servo
}
void loop()
{
if (contagem < 20){ // Condiçao, se a variavel contagem for menor que 20 faz o codigo que esta ente {}
for(posicao = 0; posicao < 180; posicao +=1) // Servo gira da posiçao 0 para a posiçao 180 de 1 em 1 grau
{
servo1.write(posicao); // "Escreve" no pino 8 a posiçao para onde o servo se vai deslocar
delay(3); // Espera de 3 milisegundos para que o servo possa chegar á sua posiçao
}
for(posicao = 180; posicao>=1; posicao-=1) // Servo gira da posiçao 180 para a posiçao 0 de 1 em 1 grau
{
servo1.write(posicao); // "Escreve" no pino 8 a posiçao para onde o servo se vai deslocar
delay(3); // Espera de 3 milisegundos para que o servo possa chegar á sua posiçao
}
contagem ++; // Adiciona mais 1 á variavel contagem
}
}
Coloquei um pequeno contador para o servo nao estar infinitamente a girar para um lado e outro, assim depois de 20, que é mais que suficiente para vermos que está tudo ok, o servo para.
5º Passo
Vamos agora proceder ao Upload do codigo para o arduino.
- Primeiro ligamos o USB ao Arduino
FOTO INDISPONIVEL
- Depois ao PC
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-18.jpg&hash=9666344c9e0e0ff9e15cb9a992543da8a83a50cb)
- Depois é so carregar no botao de Upload
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2Fupload.jpg&hash=7757b0bf7cd3f251e5dbf95e77ced36d3c63a23f)
- E por fim esperar que no canto inferior esquerdo apareça a mensagem "Done Uploading"
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2Fdu.jpg&hash=0feb41d54806fab86bd3b10b2ffa204c0f19a141)
NOTA: Se neste passo acontecer algo e nao aparecer essa mensagem, recomendo a verificarem o codigo e/ou se o cabo está correctamente ligado ao PC e ao Arduino.
6º Passo
Testar o servo com o potenciometro e sem o potenciometro.
(Video Brevemente Disponivel) -> Tou sem Camera...
Montagem com potenciometro
Para controlarmos um servo com um potenciometro teremos que seguir estes passos...
A - Ligar o terminal do meio do potenciometro a um dos pinos analogicos do arduino (eu utilizei o 0).
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-14-1.jpg&hash=fe11691a50f272f7419ecdfa77993d66e25ffcd7)
B - Ligar o terminal de um dos lados do potenciometro aos 5v do nosso arduino
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-15-1.jpg&hash=f2e4c91e2d1adb388532857fdfa277f7dbfd4607)
C - Ligar o ultimo terminal ao GND do arduino
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-17-1.jpg&hash=29ee81851511256290b1552a084925a2cb83e591)
D - Ligar o fio preto ao GND do arduino.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-182.jpg&hash=98d3463aec77df95a98a143a2caed14e0c811faf)
E - Ligar o fio vermelho ao terminal do potenciometro onde se encontram os 5v (provenientes do arduino)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-19-1.jpg&hash=b49ee65e99302edd88a04f7e6ca97dca3fab0633)
F - Ligar o fio branco do servo a um pino do arduino (Eu utilizi o 8 )
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi263.photobucket.com%2Falbums%2Fii160%2FMonky_2008%2FUntitled-20.jpg&hash=4bdaa5a98cbcc53acd7af5aef3c0f2553d11d172)
G - Utilizando a mesma biblioteca (Servo.h) vamos entao programar o nosso Atmega para que se possa controlar o servo pelo potenciometro...
Comentei todo o codigo para que todos facilmente o entendam...
#include <Servo.h> // Biblioteca que permite controlar mais facilmete os Servos
Servo servo1; // Criação de um objecto que permitira controlar o servo
int pinopot = 0; // Declaração da variavel para o pino que vai ler o valor do potenciometro, neste caso é o pino analogico 0
int valor; // Declaração da variavel onde vai ser colocado o valor lido do pino analogico 0
void setup()
{
servo1.attach(8); // Porta onde ira ser ligado o servo
}
void loop()
{
valor = analogRead(pinopot); // leitura do valor do potenciometro e "escrita" desse valor na variavel valor
valor = map(valor, 0, 1023, 0, 179); // Escala para que o valor do potenciometro possa corresponder a um valor de posiçao no servo
servo1.write(valor); // Gira o servo de acordo com a escala da linha acima
delay(1); // Espera de 1 milisegunda para que o servo possa atingir a sua posiçao
}
Depois do passo "G" é so continuar com o 5º e 6º passo mencionados em cima...
Espero que tenham Gostado e peço desculpa por algum erro...
Cumps
AndréD.