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====
{| class="wikitable"
#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.
|#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/)
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.
void loop()
{
{
motor.write(pos +=10); // anda para direção direita.
if (Serial.available()>0) //verifica se alguma tecla foi pressionada e se o valor é maior que 0.
}
{
if ( TECLA == 44) //atrás: letra ,.
TECLA = Serial.read(); // variável TECLA recebe a tecla digitada e esse valor vem em byte.
{
   
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á