Hi all,
I'm new to the Forum. I've been having some trouble setting up a direct communication link between two Arduino Duemilanoves. I downloaded the Virtual Wire library because it gives examples of such communication. In my project, I already have one RF transmitter and receiver implemented between the main Arduino and a third Arduino. I have a deadline, so I cannot order any new parts, such as the Mega. I tried directly connecting the power, ground, and corresponding pins into the Arduinos, but the LED 13 will not respond on the receiving Arduino. The light does flash on the transmitting Arduino however. The only reason I need a third Arduino is the pin space.
Here is the "client" example code
// client.pde
//
// Simple example of how to use VirtualWire to send and receive messages
// with a DR3100 module.
// Send a message to another arduino running the 'server' example, which
// should send a reply, which we will check
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@open.com.au)
// Copyright (C) 2008 Mike McCauley
// $Id: client.pde,v 1.1 2008/04/20 09:24:17 mikem Exp $
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600); // Debugging only
Serial.println("setup");
// Initialise the IO and ISR
// vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver PLL running
vw_set_tx_pin(1); //sets pin to 1
}
void loop()
{
const char *msg = "hello";
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
digitalWrite(13, true); // Flash a light to show transmitting
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Wait until the whole message is gone
Serial.println("Sent");
digitalWrite(13, false);
// Wait at most 200ms for a reply
if (vw_wait_rx_max(200))
{
if (vw_get_message(buf, &buflen)) // Non-blocking
{
int i;
// Message with a good checksum received, dump it.
Serial.print("Got: ");
for (i = 0; i < buflen; i++)
{
Serial.print(buf*, HEX);*
- Serial.print(" ");*
- }*
- Serial.println("");*
- }*
- }*
- else*
- Serial.println("Timout");*
}
and the "Server" example Code:
// server.pde
//
// Simple example of how to use VirtualWire to send and receive messages
// with a DR3100 module.
// Wait for a message from another arduino running the 'client' example,
// and send a reply.
// You can use this as the basis of a remote control/remote sensing system
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@open.com.au)
// Copyright (C) 2008 Mike McCauley
// $Id: server.pde,v 1.1 2008/04/20 09:24:17 mikem Exp $
#include <VirtualWire.h>
void setup()
{
-
Serial.begin(9600); // Debugging only*
-
Serial.println("setup");*
-
// Initialise the IO and ISR*
-
// vw_set_ptt_inverted(true); // Required for DR3100*
-
vw_setup(2000); // Bits per sec*
-
vw_rx_start(); // Start the receiver PLL running*
-
vw_set_rx_pin(2); //sets pin to 0*
}
void loop()
{
_ const char *msg = "hello";_ -
uint8_t buf[VW_MAX_MESSAGE_LEN];*
-
uint8_t buflen = VW_MAX_MESSAGE_LEN;*
-
// Wait for a message*
-
vw_wait_rx();*
-
if (vw_get_message(buf, &buflen)) // Non-blocking*
-
{*
-
int i;*
_ const char *msg = "goodbye";_ -
digitalWrite(13, true); // Flash a light to show received good message*
-
// Message with a good checksum received, dump it.*
-
Serial.print("Got: ");*
-
for (i = 0; i < buflen; i++)*
-
{*
_ Serial.print(buf*, HEX);_
_ Serial.print(" ");_
_ }_
_ Serial.println("");_
_ // Send a reply*_
vw_send((uint8_t )msg, strlen(msg));
_ digitalWrite(13, false);_
_ }_
_}*_
I'm pretty new at this, so it may be simple circuit errors. If yall could help me with the above programs, or if you know a better way to connect two Arduinos in a hurry please let me know!
Thanks