Hello every body.
I'm communicating two Arduino (Arduino UNO as sender & Arduino Mega as receiver) via RF 433 MHz. Communication is pretty fine sender is sending and receiver is receiving and performing actions accordingly. But there is a problem,I've to send message (say a character or integer) several times using serial monitor to get my desired action performed.
What do I need to do so that communication must take place by sending message only once.
Here are transmitter and receiver codes:
[
//Transmitter Code (Arduino UNO)
#include <VirtualWire.h>
int wrongSignal = 8;
void setup()
{
** Serial.begin(9600);**
** vw_setup(2400);**
** vw_set_tx_pin(7);**
** pinMode(wrongSignal,OUTPUT);**
}
void loop()
{
if(Serial.available())
{
** char c= Serial.read();**
** if(c == '8') //To move foreward**
** {**
vw_send((uint8_t )c, 1); //send one bit i.e. 8
** }*
** else if(c=='4') //To move left**
** {**
vw_send((uint8_t )c, 1); //send one bit i.e. 4
** }*
** else if (c=='6') //To move right**
** {**
vw_send((uint8_t )c, 1); //send only one bit i.e. 6
** }*
** else if(c=='2') // To move reverse**
** {**
vw_send((uint8_t )c, 1); // send only one bit i.e. 2
** }*
else if(c=='5') // To stop
** {**
vw_send((uint8_t )c, 1); // send only one bit i.e. 5
** }*
** else if(c=='0') // To stop**
** {**
vw_send((uint8_t )c, 1); // send only one bit i.e. 5
** }*
** Serial.println(c);**
}
** else**
** digitalWrite(wrongSignal, HIGH);**
}
]
----------------------------------------------------------------------------------------------
[
Receiver Code (Arduino Mega ADK 2560)
#include <VirtualWire.h>
// extra pins -------------------------------- **
const int wrongSignal = 8; // for indication that user sending invalid command
const int enablePin = 12; // enable of the ICs used in circuit
//---------------------------------------------
// base controling pins -------------------
** // Front Left motor M1
** const int frontLeft1 = 30;**
** const int frontLeft2 = 31;**
** // Front Right motor M2**
** const int frontRight1 = 32;**
** const int frontRight2 = 33;**
** //Back Left motor M3**
** const int backLeft1 = 34;**
** const int backLeft2 = 35;**
** //Back Right motor M4 **
** const int backRight1 = 36;**
** const int backRight2 = 37;**
//------------------------------------------
void setup() {
** //Extra pins**
** pinMode(enablePin, OUTPUT); // initialize the enable pin as an output**
** pinMode(wrongSignal, OUTPUT); //initialize wrongSignal pin as output pin**
** // for Motor drive IC pins**
** pinMode(frontLeft1, OUTPUT);**
** pinMode(frontLeft2, OUTPUT);**
** pinMode(frontRight1, OUTPUT);**
** pinMode(frontRight2, OUTPUT);**
** pinMode(backLeft1, OUTPUT);**
** pinMode(backLeft2, OUTPUT);**
** pinMode(backRight1, OUTPUT);**
** pinMode(backRight2, OUTPUT);**
** digitalWrite(enablePin, HIGH);**
** Serial.begin(9600); // initialize serial communications:**
** vw_setup(2400); // baud rate is 2400**
** vw_set_rx_pin(7); // Receiver pin is pin 7**
** vw_rx_start(); // start receiving**
}
void loop()
{
** uint8_t buflen = VW_MAX_MESSAGE_LEN;**
** uint8_t buf[buflen];**
** if(vw_get_message(buf, &buflen))**
** {**
** for (int i = 0; i < buflen; i++)**
** {**
__ if (buf == '8') // move forward, all motors uni-direction__
* {*
* digitalWrite(frontLeft1, HIGH);*
* digitalWrite(frontLeft2, LOW);*
* digitalWrite(frontRight1, HIGH);*
* digitalWrite(frontRight2, LOW);*
* digitalWrite(backLeft1, HIGH);*
* digitalWrite(backLeft2, LOW);*
* digitalWrite(backRight1, HIGH);*
* digitalWrite(backRight2, LOW);*
* } *
_ else if (buf == '4') // move left, M1 >, M4 <
* {
digitalWrite(frontLeft1, HIGH); //M1*
* digitalWrite(frontLeft2, LOW);
digitalWrite(frontRight1, LOW); //M2*
* digitalWrite(frontRight2, LOW);
digitalWrite(backLeft1, LOW); //M3*
* digitalWrite(backLeft2, LOW);
digitalWrite(backRight1, LOW); //M4*
* digitalWrite(backRight2, HIGH);
}*_
* // If the input is '0', turn off the ledPin i.e. send a low signal*
_ else if (buf == '6') // move right, M2>, M3<
* {
digitalWrite(frontLeft1, LOW); //M1*
* digitalWrite(frontLeft2, LOW);
digitalWrite(frontRight1, HIGH); //M2*
* digitalWrite(frontRight2, LOW);
digitalWrite(backLeft1, LOW); //M3*
* digitalWrite(backLeft2, HIGH);
digitalWrite(backRight1, LOW); //M4*
* digitalWrite(backRight2, LOW);
}*_
_ else if (buf == '2') // reverse
* {
digitalWrite(frontLeft1, LOW);
digitalWrite(frontLeft2, HIGH);
digitalWrite(frontRight1, LOW);
digitalWrite(frontRight2, HIGH);
digitalWrite(backLeft1, LOW);
digitalWrite(backLeft2, HIGH);
digitalWrite(backRight1, LOW);
digitalWrite(backRight2, HIGH);
} *_
_ else if (buf == '5') // all motors stop
* {
digitalWrite(frontLeft1, LOW);
digitalWrite(frontLeft2, LOW);
digitalWrite(frontRight1, LOW);
digitalWrite(frontRight2, LOW);
digitalWrite(backLeft1, LOW);
digitalWrite(backLeft2, LOW);
digitalWrite(backRight1, LOW);
digitalWrite(backRight2, LOW);
} *_
_ else if (buf == '0') // all motors stop
* {
digitalWrite(frontLeft1, LOW);
digitalWrite(frontLeft2, LOW);
digitalWrite(frontRight1, LOW);
digitalWrite(frontRight2, LOW);
digitalWrite(backLeft1, LOW);
digitalWrite(backLeft2, LOW);
digitalWrite(backRight1, LOW);
digitalWrite(backRight2, LOW);
}
else*
* digitalWrite(wrongSignal, HIGH);*_
* }*
}
}
]