http://meetarduino.wordpress.com
Bom pessoal cada dia os projetos vão ficando mais interessantes, este próximo projeto pode dar inicio a robotica, ou seja, braços mecânicos, mini-robos entre outras coisas que podemos criar.
Agora que sabemos controlar o servomotor pelo potenciômetro sem muito esforço, vamos remover o potenciômetro e fazer com que o nosso computador envie comandos para o arduino controlar o que o servomotor deve fazer.
Concluindo esta etapa podemos criar um servidor Web utilizando Ruby e o Sinatra que vimos nos post anteriores para controlar via internet nosso servomotor.
O que vamos utilizar neste projeto:
- Arduino Uno
- Protoboard
- Servomotor
Vamos utilizar a biblioteca do servomotor (servo.h) vamos utilizar a serialport, além do ruby e do sinatra.
Código:
01 |
#include <Servo.h> |
02 |
03 |
Servo myservo; // create servo object to control a servo |
04 |
// a maximum of eight servo objects can be created |
05 |
06 |
int posE = 175; |
07 |
int posD = 0; // variable to store the servo position |
08 |
int pos = 90; |
09 |
10 |
void setup() |
11 |
{ |
12 |
Serial.begin(9600); |
13 |
myservo.attach(9); // attaches the servo on pin 9 to the servo object |
14 |
myservo.write(pos); |
15 |
} |
16 |
17 |
void loop() { |
18 |
19 |
if (Serial.available() > 0) |
20 |
{ |
21 |
int entrada = Serial.read(); |
22 |
23 |
switch (entrada){ |
24 |
case 'D' : |
25 |
direita(); |
26 |
break ; |
27 |
28 |
case 'E' : |
29 |
esquerda(); |
30 |
break ; |
31 |
32 |
case 'R' : |
33 |
centro(); |
34 |
break ; |
35 |
36 |
} |
37 |
} |
38 |
} |
39 |
void centro(){ |
40 |
myservo.write(pos); |
41 |
} |
42 |
void direita(){ |
43 |
myservo.write(posD); |
44 |
} |
45 |
void esquerda(){ |
46 |
myservo.write(posE); |
47 |
} |
application.rb
Neste código ruby vamos adicionar todas as gems que nosso projeto ira precisar, carregando a index em Haml para receber os dados de quando cada botão for pressionado o javascript se encarrega da função de identificar cada tecla.
01 |
# vamos adigionar as gens que vamos utilizar |
02 |
%w[rubygems sinatra haml serialport]. each { |gem| require gem } |
03 |
04 |
# parametros da serialport |
05 |
port_str = "/dev/cu.usbmodem621" #varia de acordo com seus dispositivos |
06 |
baud_rate = 9600 |
07 |
data_bits = 8 |
08 |
stop_bits = 1 |
09 |
parity = SerialPort:: NONE |
10 |
11 |
sp = SerialPort. new (port_str, baud_rate, data_bits, stop_bits, parity) |
12 |
13 |
get '/' do |
14 |
haml :index |
15 |
end |
16 |
17 |
post '/envia' do |
18 |
command = params[ :cmd ] |
19 |
sp.write(command + "\r\n" ) |
20 |
end |
01 |
$(document).ready( function (){ |
02 |
$(document).keypress( function (e){ |
03 |
switch (e.charCode){ |
04 |
case 119: |
05 |
Envia( 'R' ); |
06 |
break ; |
07 |
case 100: |
08 |
Envia( 'D' ); |
09 |
break ; |
10 |
case 97: |
11 |
Envia( 'E' ); |
12 |
break ; |
13 |
} |
14 |
}) |
15 |
$( '.btn' ).click( function () { |
16 |
Envia($( this ).text()) |
17 |
}) |
18 |
}); |
19 |
20 |
function Envia(command) { |
21 |
$.ajax({ |
22 |
url: '/envia' , |
23 |
type: 'POST' , |
24 |
data: { cmd: command }, |
25 |
error: function (){}, |
26 |
success: function () {} |
27 |
}) |
28 |
} |
Criei uma interface, um layout básico utilizando o twitterbootstrap
Com o ambiente corretamente instalado, podemos inicializar o application.rb com o comando:
ruby application.rb
O servidor vai iniciar, e temos uma aplicação sinatra e ruby controlando o arduino.
Você pode baixar todo código do projeto clicando aqui.
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por