Difficulté transmission RF

Les cartes Arduino, les platines

Difficulté transmission RF

Message non lude Serpent » Dim 30 Juin 2013 13:53

Bonjour j'ai un projet d'un petit tank tamiya controler par un joystick en transmission RF


je sais que j'ai un soucis avec la transmission RF mais je suis incapable de le résoudre :s


le chemin:


Joystick -> Arduino (Uno) -> emetteur RF -> Recepteur RF -> Arduino (Duemilanove) -> pont H -> 2 moteur


Les code:


TX



#include "VirtualWire.h"
#define JoyStickPin1 1 //analog 1
#define JoyStickPin2 2 //analog 2


int Mspeed= 0;
int Mspeed1 = 0;
int Mspeed2 = 0;


#define numAnalogPin 2


int data[numAnalogPin];
const int dataBytes = numAnalogPin * sizeof(int);


void setup() {
vw_set_tx_pin(2);
vw_setup(2000);
}

void loop() {
Mspeed1 = (analogRead(JoyStickPin1)-511)/2;
Mspeed1 = Mspeed1 - (analogRead(JoyStickPin2)-511)/2;
if (Mspeed1 > 255) {
Mspeed1 = 255;
}
if (Mspeed1 < -255) {
Mspeed1 = -255;
}

Mspeed2 = (analogRead(JoyStickPin1)-511)/2;
Mspeed2 = Mspeed2 + (analogRead(JoyStickPin2)-511)/2;
if (Mspeed2 > 255) {
Mspeed2 = 255;
}
if (Mspeed2 < -255) {
Mspeed2 = -255;
}

for(int i=0; i<=numAnalogPin; i++) {
data[i]=analogRead(i);
}
send((byte*)data, dataBytes);
delay(100);
}

void send(byte *data, int nbrBytes) {
vw_send(data, nbrBytes);
vw_wait_tx();
}






RX



#include "VirtualWire.h"
#define motorPin1a 3 // Marche avant du premier moteur
#define motorPin1b 4 // Marche arrière du premier moteur
#define speedPin1 9 // L293D enable pin pour le premier moteur
#define motorPin2a 5 // Marche avant du deuxième moteur
#define motorPin2b 6 // Marche arrière du deuxième moteur
#define speedPin2 10 // L293D enable pin pour le deuxième moteur


int Mspeed= 0;
int Mspeed1 = 0;
int Mspeed2 = 0;


unsigned long time;
#define numAnalogPin 2


int data[numAnalogPin];
const int dataBytes = numAnalogPin * sizeof(int);
byte msgLength = dataBytes;


void setup() {

pinMode(motorPin1a, OUTPUT);
pinMode(motorPin1b, OUTPUT);
pinMode(speedPin1, OUTPUT);
pinMode(motorPin2a, OUTPUT);
pinMode(motorPin2b, OUTPUT);
pinMode(speedPin2, OUTPUT);

vw_set_rx_pin(2);
vw_setup(2000);
vw_rx_start();
Serial.begin(9600);
Serial.println("Ready!");
}

void loop() {

if (Mspeed1 > 0) // donc marche arrière
{
analogWrite(speedPin1, abs(Mspeed1));
digitalWrite(motorPin1a, LOW);
digitalWrite(motorPin1b, HIGH);
}
else { // donc marche avant (ou repos)
analogWrite(speedPin1, abs(Mspeed1));
digitalWrite(motorPin1a, HIGH);
digitalWrite(motorPin1b, LOW);
}

if (Mspeed2 > 0) // donc marche arrière
{
analogWrite(speedPin2, abs(Mspeed2));
digitalWrite(motorPin2a, LOW);
digitalWrite(motorPin2b, HIGH);
}
else // donc marche avant (ou repos)
{
analogWrite(speedPin2, abs(Mspeed2));
digitalWrite(motorPin2a, HIGH);
digitalWrite(motorPin2b, LOW);


if (vw_get_message((byte*)data, &msgLength)) {
for (int i=0; i<numAnalogPin; i++) {
Serial.print("Pin "), Serial.print(i);
Serial.print(" : "), Serial.println(data[i]);
}


}
}
}









Si queqlqu'un pouvais m'aider car sa fait un moment que je galère xD


Merci :)
Serpent
 
Messages: 1
Inscription: Dim 30 Juin 2013 13:51

Retourner vers Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 1 invité

cron