collapse

* Posts Recentes

TV Risco Horizontal por SerraCabo
[Ontem às 22:53]


Recuperação de um AGC por SerraCabo
[Ontem às 21:58]


Placa BMS Desliga por almamater
[Ontem às 14:16]


Potênciometro 4.7 ou 5 KOhm com switch por Hugu
[Ontem às 00:02]


é preciso ter cuidado com ESD? por Hugu
[17 de Dezembro de 2018, 18:50]


Valores de alcance de ponta de prova por vasco
[17 de Dezembro de 2018, 14:28]


Como reproteger as pontas de cobre do ferros de soldar? por vasco
[16 de Dezembro de 2018, 18:53]


Bibliotecas para arduino e drivers de stepper - o problema da 'distracção' por SerraCabo
[14 de Dezembro de 2018, 12:12]


Zener BZW04-105? por brunus
[11 de Dezembro de 2018, 17:34]


Artigo 11, 13 e os restantes por jm_araujo
[10 de Dezembro de 2018, 11:05]

Autor Tópico: JOYSTICK+ARDUINO+RF ajuda  (Lida 1472 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Constantino

  • Mini Robot
  • *
  • Mensagens: 77
    • Brasil DIY
JOYSTICK+ARDUINO+RF ajuda
« em: 23 de Junho de 2011, 19:57 »
Oi pessoal, vou direto ao ponto. Tenho um joystick de 2 eixos, e quero enviar seus valores via RF para outro Arduino. Já consegui enviar seus valores da seguinte forma:
Código: [Seleccione]
#include <VirtualWire.h> 
#undef int
#undef abs
#undef double
#undef float
#undef round


int poten1=4;
int ptvalor1;
int poten2=5;
int ptvalor2;

int pt1,pt2=0;


char buff[6];
char buf[6];
void setup()
{
     // Initialise the IO and ISR
    vw_set_ptt_inverted(true);
    vw_setup(2000);               
    vw_set_tx_pin(13);               
 
  pinMode(poten1, INPUT);
  pinMode(poten2, INPUT);
}



void loop()
{
  ptvalor1=analogRead(poten1);
  ptvalor2=analogRead(poten2);
 
 
  int msgk = ptvalor1;       
 
  int msd=ptvalor2;



itoa(msgk, buff, 10);

 itoa(msd, buf, 10);
 
 const char *msg = buff ;       
 const char *ms=buf;
 
   vw_send((uint8_t *)msg, strlen(msg));
   vw_wait_tx();                       // Wait for message to finish
   vw_send((uint8_t *)ms, strlen(ms));
   vw_wait_tx();
   delay(50);
}

mas como puderam ver, eu apenas envio String.Eu queria enviar apenas um caractere, da seguinte forma:
Código: [Seleccione]
if(ptvalor1>1000){
 buff='f';
}

  if(ptvalor1<20){
     buff='t';
  }



if(ptvalor2>1000){
   buf='d';
}

  if(ptvalor2<20){
     buf='e';
  }

Dessa maneira  eu poderia ler do outro lado apenas um caracter e  fazer um carrinho andas por exemplo.

IDEIAS?

até mais;

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.586
  • Helpdesk do sitio
Re: JOYSTICK+ARDUINO+RF ajuda
« Responder #1 em: 23 de Junho de 2011, 20:06 »
Para enviar só um caracter ou seja um char/ variavel de 8 bits basta dividires o que lês com o analogRead por 4 para caber numa variavel de 8 bits e envias só isso.
Avr fanboy

Offline Constantino

  • Mini Robot
  • *
  • Mensagens: 77
    • Brasil DIY
Re: JOYSTICK+ARDUINO+RF ajuda
« Responder #2 em: 23 de Junho de 2011, 20:29 »
Muito obrigado pela resposta, mas acho que não perguntei direito. O que quero enviar é são as letras ( r,t,d,e) para : frente,tras,direita,esquerda.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.586
  • Helpdesk do sitio
Re: JOYSTICK+ARDUINO+RF ajuda
« Responder #3 em: 23 de Junho de 2011, 20:41 »
Então ai tens de ler o joystick e usar if's para se o valor for superior a x anda para a frente, se for inferior a y anda para trás, mas assim perdes por exemplo controlo de velocidade e outras coisas interessantes que podes fazer com um comando analógico.
Avr fanboy

Offline Constantino

  • Mini Robot
  • *
  • Mensagens: 77
    • Brasil DIY
Re: JOYSTICK+ARDUINO+RF ajuda
« Responder #4 em: 23 de Junho de 2011, 20:56 »
Hummm entendi. Mas tipo, eu só posso enviar valores em char pela biblioteca virtualwire. Eu usei o itoa para transformar int em char. EU posso fazer isso do outro lado para fazer o inverso ?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.586
  • Helpdesk do sitio
Re: JOYSTICK+ARDUINO+RF ajuda
« Responder #5 em: 23 de Junho de 2011, 21:26 »
Assim como só podes enviar chars pelo serial nativo. Para transformar uma string de numeros de volta num inteiro les caracter a caracter e metes num array(ou seja montas a string de novo e terminas com um \0) e depois usas a função atoi que faz o inverso da itoa.
Avr fanboy