Protótipo CamRobo1: mudanças entre as edições
De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
Sem resumo de edição |
Sem resumo de edição |
||
Linha 2: | Linha 2: | ||
====Código Arduino==== | ====Código Arduino==== | ||
#include <Servo.h> // chama a biblioteca Servo.h, sem esta ele não reconhece a função servo. | |||
Servo motor; //transforma a variável 'motor' em um objeto para acionar o motor da direita. | |||
Servo motor; //transforma a variável 'motor' em um objeto para acionar o motor da direita. | int TECLA = 0; | ||
int pos = 0;// variável que recebe a tecla pressionada, serão valores entre 0 a 200 +-.(http://www.asciitable.com/) | |||
int TECLA = 0; | |||
int pos = 0;// variável que recebe a tecla pressionada, serão valores entre 0 a 200 +-.(http://www.asciitable.com/) | void setup() | ||
{ | |||
void setup() | Serial.begin(9600); // usado para ativar a função de transferência de dados entre PC e Arduino 9600, é a velocidade do trafego. | ||
{ | motor.attach(4); //motor será no pino 4 (no artigo usei cabo amarelo para informar os dados). | ||
Serial.begin(9600); // usado para ativar a função de transferência de dados entre PC e Arduino 9600, é a velocidade do trafego. | motor.write(118); // AQUI EU ACHO QUE O VALOR 118 VARIA DE MOTOR PRA MOTOR. | ||
motor.attach(4); //motor será no pino 4 (no artigo usei cabo amarelo para informar os dados). | |||
motor.write(118); // AQUI EU ACHO QUE O VALOR 118 VARIA DE MOTOR PRA MOTOR. | } | ||
void loop() | |||
{ | |||
if (Serial.available()>0) //verifica se alguma tecla foi pressionada e se o valor é maior que 0. | |||
{ | |||
TECLA = Serial.read(); // variável TECLA recebe a tecla digitada e esse valor vem em byte. | |||
if ( TECLA == 46) // aqui já coloquei os valores em byte para as teclas pressionadas, 'w' para ir pra frente. | |||
{ | |||
motor.write(pos +=10); // anda para direção direita. | |||
} | |||
if ( TECLA == 44) //atrás: letra ,. | |||
{ | |||
motor.write(pos -=10); // anda para direção esquerda. | |||
if ( TECLA == 46) // aqui já coloquei os valores em byte para as teclas pressionadas, 'w' para ir pra frente. | } | ||
{ | if ( TECLA == 48) //esquerda: letra a. | ||
motor.write(pos +=10); // anda para direção direita. | { | ||
} | motor.write(0); // anda para direção acionada. | ||
if ( TECLA == 44) //atrás: letra ,. | } | ||
{ | if ( TECLA == 49) //direita: letra d. | ||
motor.write(pos -=10); // anda para direção esquerda. | { | ||
} | motor.write(20); // anda para direção acionada. | ||
if ( TECLA == 48) //esquerda: letra a. | } | ||
{ | if ( TECLA == 50) // pause: letra p. | ||
motor.write(0); // anda para direção acionada. | { | ||
} | motor.write(40); // mesmo valor usado no 'void setup'. | ||
if ( TECLA == 49) //direita: letra d. | } | ||
{ | if ( TECLA == 51) // pause: letra p. | ||
motor.write(20); // anda para direção acionada. | { | ||
} | motor.write(60); // mesmo valor usado no 'void setup'. | ||
if ( TECLA == 50) // pause: letra p. | } | ||
{ | if ( TECLA == 52) // pause: letra p. | ||
motor.write(40); // mesmo valor usado no 'void setup'. | { | ||
} | motor.write(80); // mesmo valor usado no 'void setup'. | ||
if ( TECLA == 51) // pause: letra p. | } | ||
{ | if ( TECLA == 53) // pause: letra p. | ||
motor.write(60); // mesmo valor usado no 'void setup'. | { | ||
} | motor.write(100); // mesmo valor usado no 'void setup'. | ||
if ( TECLA == 52) // pause: letra p. | } | ||
{ | if ( TECLA == 54) // pause: letra p. | ||
motor.write(80); // mesmo valor usado no 'void setup'. | { | ||
} | motor.write(120); // mesmo valor usado no 'void setup'. | ||
if ( TECLA == 53) // pause: letra p. | } | ||
{ | if ( TECLA == 55) // pause: letra p. | ||
motor.write(100); // mesmo valor usado no 'void setup'. | { | ||
} | motor.write(140); // mesmo valor usado no 'void setup'. | ||
if ( TECLA == 54) // pause: letra p. | } | ||
{ | if ( TECLA == 56) // pause: letra p. | ||
motor.write(120); // mesmo valor usado no 'void setup'. | { | ||
} | motor.write(160); // mesmo valor usado no 'void setup'. | ||
if ( TECLA == 55) // pause: letra p. | } | ||
{ | if ( TECLA == 57) // pause: letra p. | ||
motor.write(140); // mesmo valor usado no 'void setup'. | { | ||
} | motor.write(180); // mesmo valor usado no 'void setup'. | ||
if ( TECLA == 56) // pause: letra p. | } | ||
{ | } | ||
motor.write(160); // mesmo valor usado no 'void setup'. | } | ||
} | } | ||
if ( TECLA == 57) // pause: letra p. | |||
{ | |||
motor.write(180); // mesmo valor usado no 'void setup'. | |||
} | |||
} | |||
} | |||
Descubra qual o endereço serial: | Descubra qual o endereço serial: |
Edição das 17h25min de 29 de setembro de 2013
Neste protótipo implementamos uma solução de controle de posição via porta serial e arduino conectado a servo motor (motor de antena parabólica).
Código Arduino
#include <Servo.h> // chama a biblioteca Servo.h, sem esta ele não reconhece a função servo. Servo motor; //transforma a variável 'motor' em um objeto para acionar o motor da direita. int TECLA = 0; int pos = 0;// variável que recebe a tecla pressionada, serão valores entre 0 a 200 +-.(http://www.asciitable.com/) void setup() { Serial.begin(9600); // usado para ativar a função de transferência de dados entre PC e Arduino 9600, é a velocidade do trafego. motor.attach(4); //motor será no pino 4 (no artigo usei cabo amarelo para informar os dados). motor.write(118); // AQUI EU ACHO QUE O VALOR 118 VARIA DE MOTOR PRA MOTOR. } void loop() { if (Serial.available()>0) //verifica se alguma tecla foi pressionada e se o valor é maior que 0. { TECLA = Serial.read(); // variável TECLA recebe a tecla digitada e esse valor vem em byte. if ( TECLA == 46) // aqui já coloquei os valores em byte para as teclas pressionadas, 'w' para ir pra frente. { motor.write(pos +=10); // anda para direção direita. } if ( TECLA == 44) //atrás: letra ,. { motor.write(pos -=10); // anda para direção esquerda. } if ( TECLA == 48) //esquerda: letra a. { motor.write(0); // anda para direção acionada. } if ( TECLA == 49) //direita: letra d. { motor.write(20); // anda para direção acionada. } if ( TECLA == 50) // pause: letra p. { motor.write(40); // mesmo valor usado no 'void setup'. } if ( TECLA == 51) // pause: letra p. { motor.write(60); // mesmo valor usado no 'void setup'. } if ( TECLA == 52) // pause: letra p. { motor.write(80); // mesmo valor usado no 'void setup'. } if ( TECLA == 53) // pause: letra p. { motor.write(100); // mesmo valor usado no 'void setup'. } if ( TECLA == 54) // pause: letra p. { motor.write(120); // mesmo valor usado no 'void setup'. } if ( TECLA == 55) // pause: letra p. { motor.write(140); // mesmo valor usado no 'void setup'. } if ( TECLA == 56) // pause: letra p. { motor.write(160); // mesmo valor usado no 'void setup'. } if ( TECLA == 57) // pause: letra p. { motor.write(180); // mesmo valor usado no 'void setup'. } } } }
Descubra qual o endereço serial:
cd /dev ls tty*
Conecte o Arduino pelo cabo usb.
ls tty*
O valor que aparecer será a porta serial que o Arduino está usando.
Para abrir a comunicaçõ serial com ele digite:
stty -F /dev/tty**** cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
(substitua o "****" pela porta encontrada anteriormente.)
Depois execute este comando para ficar escutando o teclado:
screen /dev/tty**** 9600
(substitua o "****" pela porta encontrada anteriormente.)
depois é só digitar um valor de 0 a 9 que a câmera se moverá