• Welcome to LusoRobótica - Robótica em Português.
 

(Programação)Duvida no arduino

Started by AJoao, 16 de May de 2011, 22:46

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

AJoao

#105
// Bibliotecas para controlar os motores e para estabelecer uma comunicacao do tipo serie
#include <Stepper.h>
#include <SoftwareSerial.h>

#define rxPin    0                // Pino de recepcao
#define txPin    1                // Pino de transmissao
#define steps    100              // Numero de passos por rotacao do motor
// Definicao dos pinos de alimentacao e ground do motor
#define m1_red    2
#define m1_black  3
#define m2_red    4
#define m2_black  5

// Definicao de um porto de entrada serie
SoftwareSerial P1 = SoftwareSerial(rxPin, txPin);
// Definicao de um motor
Stepper motor = Stepper(steps, m1_red, m2_red, m1_black, m2_black);

//Programa principal
void setup()
{
  pinMode(rxPin, INPUT);           // Defino o pino 0 como de entrada
  pinMode(txPin, OUTPUT);          // Defino o pino 1 como de saida(embora nao o deve necessitar)
 
  // Vou definir a taxa de transmissao de dados do meu porto para o valor por defeito do Bluetooth (115200 bits/s)
  P1.begin(115200);
 
  // Definicao da velocidade do motor
  motor.setSpeed(10);
 
}

// Vou criar um ciclo em que o modulo fica a espera de dados pelo pino Rx. Quando recebe um valor entre 1 e 100, mete
// mete o motor a funcionar durante esse numero de passos. Quando o motor para, fica novamente a espera de outro numero
void loop()
{
  int passos = 0;              // Valor de controlo para os passos do motor
 
  passos = P1.read();
 
  if((passos >= 1) && (passos <= 100))    // Se o valor for valido
  {
    // Faz o motor andar esse numero de passos
    motor.step(passos);
  }
}




O código diz ai tudo... Só que o meu problema é, como é que mando do telemovel informação para o pino Rx?
Tenho mesmo de fazer um programa para o telemovel? Não cosigo de maneira alguma fazer com que o arduino reconheça um numero que envie pelo bloco de notas do telemovel?

metRo_

Se é possível que o Arduino reconheça o ficheiro enviado pelo telemóvel? É! http://tinyurl.com/66bkbdb
Eu eu fosse professor e tu conseguisses fazer isso dava-te 20!

Viste bem o projecto que te mandei?! Não me parece pois o python trás exemplos para enviar dados por Bluetooth em serie!

AJoao

O problema é que eu queria mesmo que fosse assim, do bloco de notas do telemovel enviar o numero e o arduino reconhecesse...

AJoao

E já agora, eu não quero 20 xD A unica coisa que quero é concluir isto para ter o 12º. Nem que seja com 9,5... Só quero passar...

senso

Mas qual é a parte que não compreendes que o bloco de notas não tem nada, mas mesmo nada a ver com bluetooth?
É que o bloco de notas nem sequer guarda o que escreves a cada segundo para estar sempre actualizado, logo tens de fazer um programa que le as teclas do telemovel e que envia por bluetooth informação após uma tecla ter sido premida.
Avr fanboy

AJoao

Sendo assim, vou tentar uma coisa mais facil... (Para começar acho que será mais fácil)
Controlar o "tanque" pelo pc. Mas eu queria que não tivesse sempre que andar a meter e tirar o codigo, percebes? Pelo pc, dizer para onde quero que ele vá é mais fácil, certo?
Cumprimentos

CBX

sim é mais fácil, não precisas de programar nada, pegas num terminal, o do ide do arduino serve, e envias os comandos, por exemplo: envias um "f" para andar para a frente, "t" para trás, etc, o arduino lê o comando e executa, se estiveres à vontade com VB ou C# podes fazer uma interface gráfica simples com uns botões...

senso

Andar a meter e tirar código de onde?
Se for para fazer depressa, tipo numa hora ou nem isso podes usar processing, o que não falta é precisamente robots feitos com Arduinos controlados em pc por processing.
Avr fanboy

AJoao

O que eu queria era que ele desde que estivesse conectado via bluetooth, com as setas apenas andasse por onde mandava.
É preciso criar alguma aplicação para isso? É que nao queria ter que andar sempre a fazer o upload para a placa sempre que queria que ele fosse em frente, parasse ou andasse para tras....

Cumprimentos

senso

No lado do pc podes usar processing, o bluetooth pode ser tratado simplesmente como uma porta serial, do lado do arduino podes fazer:
swithc(serial.read={
case 'w':
andar em frente
break;
case 's':
andar para trás
break;
etc etc etc
}

Penso que entendes a ideia.
Avr fanboy

AJoao

Sim, entendo. (: Vou experimentar...
Obrigado

Cumprimentos

AJoao

Olá outra vez.

Gostava de saber, se alguem me pode ajudar com o processing que estou a ter muitas dificultades.
O que escrevo no processing, para enviar via bluetooth a letra 'w' ou 's' ou outra, para o arduino?

Cumprimentos

AJoao

É que na parte do arduino já está feito... Agora falta é mandar as letras para lá...
Está complicado...

senso

Fazes serial.prints, porque o bluetooth pode ser visto como uma porta serial, só tens é de fazer um print do serial.list no processing para saber em que sitio está a tua pen bluetooth.
Avr fanboy

AJoao

Mas como é que eu começo? Começo logo assim?

void setup () 

Serial.begin (9600)


void loop () 

Serial.print ("W" )



Serial.print ("\ t")


for (x = 0; x <64; x + +)

Serial.print (x) 

delay / 200 milissegundos}

Serial.println ("w");

}