Neste vídeo mostra como controlar servomotor com as mãos utilizando sensor flex e Arduino. O servomotor gira ao dobrar o sensor flex proporcionalmente. Você pode saber mais sobre o sensor flex acessando aqui.
Para este projeto vamos precisar de: dois servomotores, dois sensores flex, dois resistores de 10K ohm, dois capacitores de 1uF e um Arduino. A figura abaixo mostra a ligação a ser feita:
Os capacitores de 1uF são utilizados para diminuir a variação de tensão do sensor flex.
Abaixo está a programação para Arduino:
#include <Servo.h>
int flexpin=A0;
int flexpin1=A1;
int pos=90;
int pos1=90;
Servo myservo, myservo1;
int flex[20];
int flex1[20];
int sumflex=0;
int sumflex1=0;
void setup()
{
myservo.attach(7);
myservo1.attach(8);
Serial.begin(9600);
}
void loop()
{
for(int x=0; x<20; x++)
{
flex[x]=analogRead(flexpin);
flex1[x]=analogRead(flexpin1);
sumflex=sumflex+analogRead(flexpin);
sumflex1=sumflex1+analogRead(flexpin1);
delayMicroseconds(14);
}
sumflex=sumflex/20;
sumflex1=sumflex1/20;
if(Serial.available())
{
Serial.println(sumflex);
Serial.println(sumflex1);
delay(100);
}
pos=map(sumflex,870,800,0,180);
pos1=map(sumflex1,870,800,0,180);
myservo.write(pos);
myservo1.write(pos1);
delay(200);
}
De acordo com a programação, o Arduino faz a leitura dos pinos analógicos, depois faz uma amostragem e dessa amostragem, faz uma média. Depois de calculada a média das amostras, o Arduino converte para posição em graus com a função map. Por fim, o Arduino envia essa posição em graus para os servomotores.
E é isso! Esperamos que tenha gostado! Se tiver dúvidas, poste aqui neste blog! Para sugestões de tutoriais, poste aqui! Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outros garagistas, clique aqui e aqui, respectivamente! Até a próxima!
Referências:
http://www.labdegaragem.org/loja/index.php/34-sensores/sensor-flexivel-de-2-2.html
http://www.labdegaragem.org/loja/index.php/36-motores-afins/servo-motor-pequeno.html
http://labdegaragem.com/profiles/blogs/tutorial-arduino-com-servomotor
http://labdegaragem.com/profiles/blogs/tutorial-de-como-utilizar-o-sensor-flex-com-arduino
Daniel Alves
o q e esse 20 no codigo fonte? (int flex[20];......sumflex=sumflex/20;)??
e o que faz essa soma (sumflex=sumflex+analogRead(flexpin);) ??
5 Ago, 2013
Francisco Lucena Gomes Jr
sumflex=sumflex+analogRead(flexpin) // essa linha soma as últimas 20 leituras do sensor armazenando na variável sumflex
sumflex=sumflex/20; // ao dividir por 20, esse comando pega a média aritimética dessas 20 leituras
6 Ago, 2013
João Victor da Fonseca Dionisio
Boa noite, queria saber se é possível utilizar, ao invés de servo motores normais, motores encontrados em gavetas de leitores CD-Rom, pois já possuo vários desses motores com suas respectivas engrenagens redutoras, mas esses motores só possuem 2 fios elétricos ( + e -), já o servo motor possui 3 ( +, - e PWM), alguém tem alguma solução ? se tiver desde já agradeço , e se possível o diagrama elétrico da solução.
2 Abr, 2014